Subject: Re: bug#19993: 25.0.50; Unicode fonts defective on Windows

From: Eli Zaretskii <[email-masked]>
Date: Sat, 07 Mar 2015 10:14:16 +0200

> Date: Fri, 6 Mar 2015 14:08:01 -0800
> From: Ilya Zakharevich <[email-masked]>
> Cc: [email-masked]
> 
> > Emacs on Windows needs a font to support the entire range of a script,
> > or else it won't use the font.  It finds out which scripts are
> > supported by a font by looking at the fsUsb member of the
> > FONTSIGNATURE structure for each font.  See font_supported_scripts,
> > and also font_matches_spec which uses it, for the details.  So maybe
> > the fonts you have don't announce in their signature that they support
> > these Unicode ranges.  E.g., U+1D49C is in "Mathematical ALphanumeric
> > Symbols", whose subrange bit is 89 -- does Symbola set this bit in its
> > font signature?
> 
> This does not make any sense…  Before we go to the details of a font
> structure, let’s discuss it semantically.
> 
>   What can it mean that a font “supports a script”?
> 
> Theoretically, it may mean that
>   • it “knows” all the characters in the script, and
>   • has enough extra infrastructure to shape these characters
>     into a correct glyphic representation.
> 
> I may see that the second part may be described by one bit per
> script.  But what about the first one?  A repertoir of a script
> changes every year (sometimes several times per year).  How can this
> be encapsulated into a bit?

All I know about this is what the MSDN documentation says:

  FONTSIGNATURE structure

  Contains information identifying the code pages and Unicode subranges
  for which a given font provides glyphs.
  [...]
  Members

  fsUsb

      A 128-bit Unicode subset bitfield (USB) identifying up to 126
      Unicode subranges. Each bit, except the two most significant bits,
      represents a single subrange. The most significant bit is always 1
      and identifies the bitfield as a font signature; the second most
      significant bit is reserved and must be 0. Unicode subranges are
      numbered in accordance with the ISO 10646 standard. For more
      information, see Unicode Subset Bitfields.