[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