[HarfBuzz] Ligatures

Eli Zaretskii eliz at gnu.org
Sun May 24 16:34:52 UTC 2020


> From: Khaled Hosny <dr.khaled.hosny at gmail.com>
> Date: Sun, 24 May 2020 18:00:45 +0200
> Cc: harfbuzz at lists.freedesktop.org
> 
> In general the safest is to pass the whole paragraph of text and the start and length of each item (item being a run with same font, direction, script, and language).

I was talking about text that has a single font, direction, script,
and language.

> This, for example, ensures that HarfBuzz can do basic Arabic-like shaping across item boundaries e.g. if you break items in the middle of an Arabic word (due to font change, for example), you still get the initial/medial/final forms across the boundary as appropriate. Or to put a combining mark at the start of a paragraph on a dotted circle as it otherwise has no base.
> 
> If this is not possible, then you can try to pass enough context, like reach back and forward to first character that is not a combining mark. This may or may not be enough.
> 
> Shaping space-delimited words is orthogonal to that, context is better be always provided.

So this sounds like passing a physical line that ends in a newline
should be good enough?  Or are there issues that cross newlines as
well?

And what is a "paragraph" in this context?

> Some fonts do have OpenType lookups that interact with space (e.g. kerning pairs involving space, or even substitutions involving space), so shaping words independently will give suboptimal result. You can use HarfBuzz API to find out if the font has OpenType layout rules involving space, or decide to live with this limitation.

Which API provides this information?

Thanks.


More information about the HarfBuzz mailing list