[HarfBuzz] Better handling variation selectors
suzuki toshiya
mpsuzuki at hiroshima-u.ac.jp
Mon Apr 22 18:00:26 PDT 2013
Dear Khaled,
Khaled Hosny wrote:
> On Sat, Apr 20, 2013 at 10:49:26AM +0100, Jonathan Kew wrote:
>> On 19/4/13 22:13, Behdad Esfahbod wrote:
>>
>>> - What should HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES do to variation
>>> selectors? Right now they do not become visible no matter what. Is it
>>> relevant whether the variation selector was actually used during glyph lookup
>>> or not?
>> Yes, I think it's relevant. A variation selector that was used
>> during glyph lookup has (in a sense) become "visible", manifested as
>> a particular choice of glyph. I don't think it should -also- appear
>> as a separate glyph, even in a "show invisibles" mode. In effect,
>> the <base, VS> pair has been ligated - it's just a "ligation" that's
>> handled by the cmap instead of GSUB.
>
> But this can be said about many other control characters, ZWJ or ZWNJ
> for example, they have a visual effect.
>
> IMO PRESERVE_DEFAULT_IGNORABLES should simply show any default ignorable
> character that is being removed from the output not as a result of
> OpenType glyph substitution. One use of such feature (the only use?) is
> to make visible all characters that has mysterious effects on the output
> so they can be easily checked/edited, and I can see variation selectors
> benefiting from this just like any other default ignorable.
I think the requirement to make visible all characters is reasonable,
but I'm not sure PRESERVE_DEFAULT_IGNORABLES is the appropriate place
to serve the request. For example, if ZJW or ZWNJ should be displayed
visibly, various spaces (e.g. U+2000 - U+200B) are not expected to be
displayed with clearly different glyphs?
# I'm afraid that most fonts may lack the glyphs for such purpose.
# The easiest way would be showing them with hexadecimal codepoints,
# but, it's not easy to remind the expected operation from the hexadecimal values...
Regards,
mpsuzuki
More information about the HarfBuzz
mailing list