[Fontconfig] Supporting Unicode variation selectors
suzuki toshiya
mpsuzuki at hiroshima-u.ac.jp
Wed Jun 17 20:15:38 PDT 2015
Hi,
I guess current discussion is focused to the variation
selectors itself, and, you have no attempt to make
fontconfig to handle IVS-specific info. For example,
a question "this font supports the IVSs defined for
Adobe-Japan1 /or not" might be the future task and
separated from the current discussion.
Am I understanding correctly?
Regards,
mpsuzuki
Behdad Esfahbod wrote:
> Hi everyone,
>
> Currently fontconfig does not support Unicode variation selectors. Lets fix that.
>
> Unicode defines 256 generic variation selectors, in the following ranges:
>
> U+FE00 VARIATION SELECTOR-1..U+FE0F VARIATION SELECTOR-16
> U+E0100 VARIATION SELECTOR-17..U+E01EF VARIATION SELECTOR-256
>
> OpenType encodes those in cmap subtable format 14. Fonts as such can encode
> pairs of characters in the cmap instead of one. The second of the pair is
> supposed to be a variation selector, though nothing in the table format
> enforces that.
>
> To support these in fontconfig, two changes are needed:
>
> - Extend FcCharSet to be able to carry variation sequences as well,
>
> - Add a FcFreeTypeCharIndex variant that takes a variation selector. (ala
> FT_Face_GetCharVariantIndex),
>
> Adding the latter is rather trivial. For the former, it would be easiest if
> we encode the variation selector and the base Unicode character in one 32-bit
> integer, and make sure FcCharSet handles that efficiently (this probably is
> currently not the case).
>
> Ideally, we'd want to encode the sequence U followed by VSx (where VSx is the
> VARIATION SELECTOR-x) as (U + VSx << 24). This will use the high byte of the
> 32bit unsigned for the variation selector number. The only problem is: there
> are 256, not 255, variation selectors. I submitted a proposal to Unicode to
> commit to not use the last one, but that was not accepted. Currently up to
> ~240 are used.
>
> Failing that most beautiful scheme, we can use a different shift. 21 would be
> the next most natural, given that Unicode numbers fit 21 bits. It just would
> be much harder to read a hex of a 32bit number in the FcCharSet verbose output
> and know what it means.
>
> So, what do people think? Lets make this happen.
>
> Thanks,
More information about the Fontconfig
mailing list