[HarfBuzz] glyph_func expected behavior for variationSelector?

Jonathan Kew jfkthame at gmail.com
Fri May 29 07:35:18 PDT 2015


On 29/5/15 15:16, Koji Ishii wrote:
> Sorry if this was asked before, I'm new to this list (and to harfbuzz
> too), please accept my apologies if so.
>
> When a variation selector is in the source, such as:
>    U+0030 U+FE0E
> glyph_func receives U+FE0E as variationSelector argument.
>
> What is the expected behavior for the glyph_func if it cannot find the
> variant glyph?
>
>  From my observation, if glyph_func returns false, harfbuzz returns 2
> glyphs for the above string. So I'm guessing that when the specified
> variant does not exist, glyph_func should fallback to the base glyph
> and returns true if the base glyph exists.
>
> Could someone confirm whether my understanding above is correct or not?

As I understand it, if a variation selector is passed to the glyph_func, 
it should return true only if the <char, selector> pair is explicitly 
handled.

Otherwise, it should return false; harfbuzz will call the glyph_func 
again for the base character alone, and then separately for the 
variation selector. This means it is possible for a font to implement 
variation selector support via an OpenType lookup (ligating pairs of 
<base glyph, VS glyph>, for example) if desired, instead of via cmap 
format 14.

If -- as is likely, if it's not supported by the font -- the variation 
selector maps to .notdef at this stage, it will then be hidden by later 
harfbuzz code that makes default-ignorables invisible.

JK



More information about the HarfBuzz mailing list