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

From: Ilya Zakharevich <[email-masked]>
Date: Fri, 6 Mar 2015 14:08:01 -0800

On Fri, Mar 06, 2015 at 10:11:32PM +0200, Eli Zaretskii wrote:
> > Date: Fri, 6 Mar 2015 08:21:36 -0800
> > From: Ilya Zakharevich <[email-masked]>
> > Cc: [email-masked]
> > 
> > On Fri, Mar 06, 2015 at 04:00:27PM +0200, Eli Zaretskii wrote:
> > > > Practically nothing “non-banal” is shown.  Let me try…  No U+1D49C,
> > > > U+2099 ₙ, U+1D552, U+27e8 U+27e9 ⟨⟩ (just looking into my recent
> > > > “real-life” file of notices).
> > > 
> > > U+2099, U+27e8, and U+27e9 are displayed here (I have the STIX fonts
> > > installed, and they are used for that).  The rest indeed aren't.
> > 
> > > Do you have fonts installed that cover these codepoints?
> > 
> > As I said, «Unifont Smooth» has everything in BMP of v7.0.  Many fonts
> > (including «Symbola») have Math chars. 
> 
> 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?

-------

But anyway:
  • I open Symbola.ttf with fontforge;
  • Go to Element⫽Font␣Info;
  • Go to OS/2;
  • Go to Charsets;
  • And there, deep in the list, “Mathematical Alphanumeric Symbols”
    are highlighted. 

AND: Symbola IS listed in `font-show-log'…

> Or maybe we could add some more heuristics to the code in w32font.c,
> to be smarter about font selection for Symbol script.  I really don't
> know enough about all this stuff.

I’m not sure one can fix this mess incrementally….

Ilya