[HarfBuzz] Multiple substitution and mark positioning

Behdad Esfahbod behdad at behdad.org
Sat May 12 06:27:18 PDT 2012

Hi Khaled,

Humm, that's really unfortunate.  Fixing this is definitely possible, but
extremely arbitrary and hackish.  I'm fairly sure this is not what Adobe is
doing, but matching uniscribe in this case sounds more useful.  I'll see what
I can cook.


On 05/12/2012 02:54 PM, 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