Apache OpenOffice (AOO) Bugzilla – Issue 58663
order of glyph substituion different for iculayout vs sallayout
Last modified: 2007-08-27 10:43:55 UTC
(https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=174147) If the font selected to render some text passes "FT_IS_SFNT" then iculayout is used for layout, otherwise sallayout is used. Now if the font is missing the glyphs to show it, then sallayout inserts the missing glyphs inside the re-render buffer in their physical order, while iculayout seems to use visual layout. e.g. the attached example, where Luxi Mono uses sallayout, and Sazanami Gothic uses iculayout, and neither has the bengali glyphs required. So for sallayout the order is "9a7 9bf" for fallbacks, and the other way around for iculayout. These are combining characters, so the order for combining is lost on glyph substitution for the iculayout case. Simple patch attached to address this issue.
Created attachment 31936 [details] patch to implement ordering
The patch kills glyph fallback for BiDi... The layout runs are already in visual order (from a BiDi perspective) and the fallback runs should also be generated in visual order too. As the problem you linked to shows this concept doesn't work reliably for Indic scripts, because there reordering within a run is done. The solution that should work for all scripts is to adjust to fallback runs to their corresponding original runs.
.
ImplLayoutArgs::PrepareFallback() should already do something like what I suggested above...
Fixed in CWS icuupgrade.
Retargeting to 2.1
ready for QA.
'mh' decided to postpone integration of CWS 'icuupgrade' to OOo2.2, aligning target.
SBA: Verified in CWS icuupgrade.
closed