[HarfBuzz] Setting initial cluster value

kelvinsthirteen at gmail.com kelvinsthirteen at gmail.com
Sat Jun 25 19:32:43 UTC 2016



> On Jun 25, 2016, at 1:39 PM, Khaled Hosny <khaledhosny at eglug.org> wrote:
> 
> On Sat, Jun 25, 2016 at 01:06:27PM -0400, Kelvin Ma wrote:
>>>>>> Don’t you
>>>>> need
>>>>>> context to be ignored if the boundaries of the text you want to shape
>>>>> fall
>>>>>> inside a cluster? Like in the string 'af[fluency s]tate' where only
>>> the
>>>>>> 'fluency s' is supposed to be shaped?
>>>>> 
>>>>> Depends on why you are shaping “fluency s” alone, if it is because of,
>>>>> say, font change, then you need HarfBuzz to know the context otherwise
>>>>> you get broken Arabic shaping.
>>>> 
>>>> Well font change would produce a separate run that wouldn’t know about
>>> the
>>>> other runs so context can only be within a same-direction, same-font run.
>>> 
>>> This is wrong, font change shouldn’t break Arabic shaping, so you have
>>> to pass the context even in this case.
>>> 
>> 
>> If the text consists of text strings separated by formating objects, each
>> text string doesn’t know about what’s around it. Because that’s at a much
>> higher level in the code and harfbuzz can only handle a single font in a
>> single run at a time. To artificially jam in the neighboring runs for each
>> shaping attempt would involve an inordinate amount of string concatenation
>> and searching on the fly.
> 
> One can always fix his code to not do wrong assumptions. When doing text
> layout you always need the full paragraph, and you should have it around
> after itemisation. Itemisation does not have to be done by splitting
> text, you can just store run start indices and lengths.

No, meaning font styling is created by inline styling objects. They’re like inline images except they have zero width. So a font change is really stored as a special character in between the two sections. This character is not understood by harfbuzz, which is why it does not make sense to pass anything containing it into the shaper.

> 
> Regards,
> Khaled


More information about the HarfBuzz mailing list