[HarfBuzz] Multiple substitution and mark positioning

Behdad Esfahbod behdad at behdad.org
Wed Jul 25 10:58:08 PDT 2012


This also happens with Arabic Typesetting I assume?

b

On 06/12/2012 06:31 AM, Khaled Hosny wrote:
> I’m not sure if this is related, but I now get no mkmk positioning when
> the marks are “inserted” using multiple substitution. For example, “للّٰه”
> is positioned correctly, while “لله” is not though it is the same mark
> glyphs except they are being added by multiple substation.
> 
> [uni0647.fina_Lellah=4+721|uni0670=1 at -267,-162|uni0651=1 at -277,-440|uni0644.medi_Lellah=1+473|uni0644.init_Lellah=0+319]
> 
> vs.:
> 
> [uni0647.fina_Lellah=2+721|uni0670=1 at -245,-440|uni0651=1 at -277,-440|uni0644.medi_Lellah=1+473|uni0644.init_Lellah=0+319]
> 
> Regards,
>  Khaled
> 
> On Fri, Jun 08, 2012 at 10:14:19PM -0400, Behdad Esfahbod wrote:
>> Hi Khaled and others,
>>
>> I fixed this, among other things, including a major mlig and mkmk regression.
>>  Please test.
>>
>> 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