[HarfBuzz] Multiple substitution and mark positioning

Behdad Esfahbod behdad at behdad.org
Tue May 22 16:53:25 PDT 2012


Khaled,

So, I have a theory: may it be that Uniscribe is doing what it's doing because
of IgnoreMarks settings?  If that is the case, then I see why HarfBuzz is
getting it wrong, since we copy glyph class for the Multi substitute lookups
from the original glyph instead of looking them in GDEF.

behdad

On 05/12/2012 08:54 AM, Khaled Hosny wrote:
> Hi all,
> 
> There seems to be a difference between HarfBuzz and Uniscribe on how to
> handle mark positioning when there is multiple glyph substitution,
> namely HB seems to apply the mark to the last component while USP
> applies it to the first component.
> 
> In other words, if there is <base> → <base₁><base₂> substitution, the
> sequence <base><mark> will be rendered as if it was <base₁><base₂><mark>
> with HB, but as <base₁><mark><base₂> with USP.
> 
> Using hb-shape with “uniscribe” shaper, and the word “سَتا” and Arabic
> Typesetting font, I get
> 
>   [uniFE8E=3+343|uniFE98=2+376|uni064E=0 at 501,-260|uni0640.curvehalf=0@,34+152|uniFEB3=0@,34+840]
>                                          ^^^^^^^^
> but with “ot” shaper, I get:
> 
>   [uniFE8E=3+343|uniFE98=2+376|uni064E=0 at -11,-310|uni0640.curvehalf=0@,34+152|uniFEB3=0@,34+840]
>                                          ^^^^^^^^
> though the glyph string is the same, the position of the mark is clearly
> different.
> 
> (background: I need this to contextually insert tatweel to avoid mark
> collision in “crowded” places, but with the difference between both
> engines this can’t be reliably done without breaking mark positioning in
> one of them).
> 
> Regards,
>  Khaled
> _______________________________________________
> HarfBuzz mailing list
> HarfBuzz at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/harfbuzz



More information about the HarfBuzz mailing list