[HarfBuzz] Multiple substitution and mark positioning
behdad at behdad.org
Tue May 22 16:55:52 PDT 2012
On 05/22/2012 07:53 PM, Behdad Esfahbod wrote:
> 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.
Humm. Maybe not. Still, using mark ignoring may be a way for the font to
achieve the desired output on both HarfBuzz and Uniscribe currently.
> 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
>> (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).
>> HarfBuzz mailing list
>> HarfBuzz at lists.freedesktop.org
More information about the HarfBuzz