unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#19993: 25.0.50; Unicode fonts defective on Windows
@ 2015-03-03 22:02 Ilya Zakharevich
  2015-03-04 17:59 ` Eli Zaretskii
  0 siblings, 1 reply; 35+ messages in thread
From: Ilya Zakharevich @ 2015-03-03 22:02 UTC (permalink / raw)
  To: 19993

(A) On Windows, most Unicode characters won’t be shown, even if the system 
    has (many) fonts covering the characters (and these fonts are listed in 
    `font-log'!).

(B) Documentation of fontsets is completely unusable (I will file a separate
    bug report covering this), so there is no way a user would be able to
    work around this by using “just Emacs docs”.
    
      (However, there some googlable advice — but I did not check the 
       validity of it yet)

(C) Even if a character is (eventually) shown, it may take several seconds
    after the character is typed.  E.g., typing
      ℱ
    gives a 2sec delay on my system (a pretty quick PC).  It is shown using
      uniscribe:-outline-MS Gothic-normal-normal-normal-mono-13-*-*-*-c-*-jisx0208*-* (#x3D3)

(D) After typing as in (C), many operations become unusable.  (E.g., showing 
    documentation for font-log takes several minutes to display the end of 
    the buffer.  Save the buffer to a file — and it takes 4.5MB.)

(E) Doing `describe-fontset' show a complete mess.  It looks like the system
    is designed for some very old installations — it has an enormous overhead
    (while not being able to show anything nontrivial!).  I get 4500 rows
    of output, containing junk like this:
          …
       ¢ .. £ (#xA2 .. #xA3)
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-1
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-2
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-3
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-4
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-9
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-10
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-13
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-14
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-15
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-16
           -*-*-*-*-*-*-*-*-*-*-*-*-viscii1.1-1
           -*-*-*-*-*-*-*-*-*-*-*-*-iso10646-1
           -*-*-*-*-*-*-*-*-*-*-*-*-jisx0208.1983-0
       ¤ (#xA4)
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-1
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-2
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-3
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-4
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-9
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-10
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-13
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-14
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-15
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-16
           -*-*-*-*-*-*-*-*-*-*-*-*-viscii1.1-1
           -*-*-*-*-*-*-*-*-*-*-*-*-iso10646-1
           -*-*-*-*-*-*-*-*-*-*-*-*-gb2312.1980-0
           -*-*-*-*-*-*-*-*-*-*-*-*-ksc5601.1987-0
       ¥ .. ¦ (#xA5 .. #xA6)
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-1
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-2
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-3
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-4
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-9
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-10
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-13
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-14
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-15
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-16
           -*-*-*-*-*-*-*-*-*-*-*-*-viscii1.1-1
           -*-*-*-*-*-*-*-*-*-*-*-*-iso10646-1
       § (#xA7)
          …
    having no relationship to how contemporary systems are set up.

(F) `font-show-log' is a little bit more convenient to work with
     — but it shows no indication what goes wrong when Unicode
    characters are not shown.  It has 1600 lines — and, AFAICS,
    is not documented.

-----

What to do with this mess?  There should be 3 goals:

  1) fonts should work out of the box;
  
  2) one should make the list of encodings to load (I mean those in 
     `describe-fontset') system-dependent, and — on contemporary 
     systems — default to iso10646 *ONLY*.

  3) Improve the docs (but I would try to address this in a separate
     bug report).

(I keep all the debugging info I could find.  It is huge, I will make
it available upon request.)

Thanks for the parts of Emacs which ARE working great,
Ilya

=======================================================



In GNU Emacs 25.0.50.20 (i686-pc-mingw32)
 of 2015-02-08 on BUCEFAL
Repository revision: d5e3922e08587e7eb9e5aec2e9f84cbda405f857
Windowing system distributor `Microsoft Corp.', version 6.1.7601
Configured using:
 `configure --prefix=/k/test'

Configured features:
SOUND NOTIFY ACL

Important settings:
  value of $LANG: ENU
  locale-coding-system: cp1252

Major mode: Fundamental

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  buffer-read-only: t
  line-number-mode: t

Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.

Load-path shadows:
None found.

Features:
(shadow sort gnus-util mail-extr emacsbug message dired format-spec
rfc822 mml easymenu mml-sec mm-decode mm-bodies mm-encode mail-parse
rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045
ietf-drums mm-util help-fns mail-prsvr mail-utils time-date tooltip
eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel
dos-w32 ls-lisp disp-table w32-win w32-vars tool-bar dnd fontset image
regexp-opt fringe tabulated-list newcomment elisp-mode lisp-mode
prog-mode register page menu-bar rfn-eshadow timer select scroll-bar
mouse jit-lock font-lock syntax facemenu font-core frame cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev
minibuffer cl-preloaded nadvice loaddefs button faces cus-face macroexp
files text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote make-network-process
w32notify w32 multi-tty emacs)

Memory information:
((conses 8 80324 9864)
 (symbols 32 17968 0)
 (miscs 32 85 128)
 (strings 16 12688 4007)
 (string-bytes 1 324435)
 (vectors 8 9470)
 (vector-slots 4 390690 6074)
 (floats 8 65 62)
 (intervals 28 243 45)
 (buffers 516 13))





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-03 22:02 bug#19993: 25.0.50; Unicode fonts defective on Windows Ilya Zakharevich
@ 2015-03-04 17:59 ` Eli Zaretskii
  2015-03-05 21:49   ` Ilya Zakharevich
  2015-03-05 22:05   ` Ilya Zakharevich
  0 siblings, 2 replies; 35+ messages in thread
From: Eli Zaretskii @ 2015-03-04 17:59 UTC (permalink / raw)
  To: Ilya Zakharevich; +Cc: 19993

> Date: Tue, 3 Mar 2015 14:02:28 -0800
> From: Ilya Zakharevich <nospam-abuse@ilyaz.org>
> 
> (A) On Windows, most Unicode characters won’t be shown, even if the system 
>     has (many) fonts covering the characters (and these fonts are listed in 
>     `font-log'!).

Examples, please: they are required to debug the issue.  Please
include with the examples the information about the font(s) which
support the problematic characters, but are not used although
installed.  Or, if you already debugged this and can tell which code
misbehaves, please post that information.

> (C) Even if a character is (eventually) shown, it may take several seconds
>     after the character is typed.  E.g., typing
>       ℱ
>     gives a 2sec delay on my system (a pretty quick PC).  It is shown using
>       uniscribe:-outline-MS Gothic-normal-normal-normal-mono-13-*-*-*-c-*-jisx0208*-* (#x3D3)

That delay should happen only once, when any character from the font
is first displayed.  The next character from the same font should not
cause any perceptible delays.  If this is what you see, then the delay
is due to the font driver (a.k.a. "shaping engine", Uniscribe on
Windows) searching the system for a suitable font, under control of
the Emacs code (in font.c and fontset.c).

A good example of this is "C-h H": the first time you type that in
"emacs -Q", it takes a long time before the HELLO buffer displays.
But if you kill that buffer and immediately invoke "C-h H" again, the
display is instantaneous.

This is not specific to Windows in any way, AFAIK, the Emacs code
which looks for a suitable font is system-independent.

If there are ways to speed up font search, we should do that, of
course.  Patches to make the search speedier are welcome.

> (D) After typing as in (C), many operations become unusable.  (E.g., showing 
>     documentation for font-log takes several minutes to display the end of 
>     the buffer.  Save the buffer to a file — and it takes 4.5MB.)

Yes, similar to "C-h H".  Any buffer that uses a lot of different
fonts will hit this.

>   2) one should make the list of encodings to load (I mean those in 
>      `describe-fontset') system-dependent, and — on contemporary 
>      systems — default to iso10646 *ONLY*.

Sorry, I don't understand what that means.  First, why should the list
of encodings be system-dependent?  Those encodings are universal,
i.e. there are no encodings that are unusable on any particular
system.  And your suggestion to use iso10646 actually means it will be
system-independent, no?

Second, what do you mean by "default to iso10646"?  Do you mean that
by default there should be no support for other encodings?  If so,
why?

Or maybe you mean that the default font used by "emacs -Q" should
support as wide a range of Unicode as possible?  If so, I think we
already do that.

>   3) Improve the docs (but I would try to address this in a separate
>      bug report).

Indeed, font-related issues in Emacs are notoriously under-documented,
both on the user level, and on the ELisp level.





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-04 17:59 ` Eli Zaretskii
@ 2015-03-05 21:49   ` Ilya Zakharevich
  2015-03-05 22:05   ` Ilya Zakharevich
  1 sibling, 0 replies; 35+ messages in thread
From: Ilya Zakharevich @ 2015-03-05 21:49 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 19993

On Wed, Mar 04, 2015 at 07:59:56PM +0200, Eli Zaretskii wrote:
> > (C) Even if a character is (eventually) shown, it may take several seconds
> >     after the character is typed.  E.g., typing
> >       ℱ
> >     gives a 2sec delay on my system (a pretty quick PC).  It is shown using
> >       uniscribe:-outline-MS Gothic-normal-normal-normal-mono-13-*-*-*-c-*-jisx0208*-* (#x3D3)
> 
> That delay should happen only once, when any character from the font
> is first displayed.  The next character from the same font should not
> cause any perceptible delays.  If this is what you see, then the delay
> is due to the font driver (a.k.a. "shaping engine", Uniscribe on
> Windows) searching the system for a suitable font, under control of
> the Emacs code (in font.c and fontset.c).

I have some doubts in this.  I think you are theoretizing, while *I*
KNOW that what you expect from Emacs is NOT HAPPENING.  (See below.)

> > (D) After typing as in (C), many operations become unusable.  (E.g., showing 
> >     documentation for font-log takes several minutes to display the end of 
> >     the buffer.  Save the buffer to a file — and it takes 4.5MB.)
> 
> Yes, similar to "C-h H".  Any buffer that uses a lot of different
> fonts will hit this.

I think the logical way is to choose one:
  • either the font delay happens once, and this is not avoidable (as
    you said above);

  • or there is something fishy (since other applications do not need
    minutes to show one screenful of information). 

-------

Let us see the most important part of my report (the part you trimmed
away!):

          …
       ¢ .. £ (#xA2 .. #xA3)
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-1
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-2
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-3
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-4
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-9
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-10
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-13
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-14
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-15
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-16
           -*-*-*-*-*-*-*-*-*-*-*-*-viscii1.1-1
           -*-*-*-*-*-*-*-*-*-*-*-*-iso10646-1
           -*-*-*-*-*-*-*-*-*-*-*-*-jisx0208.1983-0
       ¤ (#xA4)
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-1
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-2
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-3
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-4
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-9
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-10
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-13
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-14
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-15
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-16
           -*-*-*-*-*-*-*-*-*-*-*-*-viscii1.1-1
           -*-*-*-*-*-*-*-*-*-*-*-*-iso10646-1
           -*-*-*-*-*-*-*-*-*-*-*-*-gb2312.1980-0
           -*-*-*-*-*-*-*-*-*-*-*-*-ksc5601.1987-0
       ¥ .. ¦ (#xA5 .. #xA6)
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-1
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-2
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-3
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-4
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-9
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-10
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-13
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-14
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-15
           -*-*-*-*-*-*-*-*-*-*-*-*-iso8859-16
           -*-*-*-*-*-*-*-*-*-*-*-*-viscii1.1-1
           -*-*-*-*-*-*-*-*-*-*-*-*-iso10646-1
       § (#xA7)
          …

As I said, these is 4500 lines of info — and ALL these lines are
excessive.  On systems where the NATIVE font format is iso10646,
instead of all these lines, ONE LINE would be equivalent (at least
AFAIU — the stuff IS undocumented):

  C-@ .. ø¿¿ (#x43 .. #x3FFFFF)
    -*-*-*-*-*-*-*-*-*-*-*-*-iso10646-1

I do not see how such a change would not fix all the issues reported
here.  (But I’m theoretizing!  ;-)

> >   2) one should make the list of encodings to load (I mean those in 
> >      `describe-fontset') system-dependent, and — on contemporary 
> >      systems — default to iso10646 *ONLY*.
> 
> Sorry, I don't understand what that means.  First, why should the list
> of encodings be system-dependent?

In the best world, it should not: just use one encoding (iso10646),
and you are done (as above).  And, as I said, this would probably work
in 95% of installations of Emacs.  For the rest of (legacy) systems,
the current mess MIGHT be needed (theoretizing again!).

> Second, what do you mean by "default to iso10646"?  Do you mean that
> by default there should be no support for other encodings?  If so,
> why?

Because on contemporary systems,
           -X-Y-Z-T-U-V-S-R-K-L-M-N-iso8859-5
is just a subset of
           -X-Y-Z-T-U-V-S-R-K-L-M-N-iso10646-1
(plus a lot of overhead added to do translations twice: first in one
direction, then in the opposite one!).  Why look for glyphs in both?

=======================================================

BTW, I just noticed: `describe-fontset' produces a buffer starting as

    Fontset: -outline-Courier New-normal-normal-normal-mono-13-*-*-*-c-*-fontset-startup
    CHAR RANGE (CODE RANGE)
	FONT NAME (REQUESTED and [OPENED])
    C-@ .. x?=? (#x43 .. #x3FFF7F)
	-*-*-*-*-*-*-*-*-*-*-*-*-iso8859-1

Where this #x43 cames from?!

Thanks,
Ilya





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-04 17:59 ` Eli Zaretskii
  2015-03-05 21:49   ` Ilya Zakharevich
@ 2015-03-05 22:05   ` Ilya Zakharevich
  2015-03-06 10:45     ` Eli Zaretskii
  1 sibling, 1 reply; 35+ messages in thread
From: Ilya Zakharevich @ 2015-03-05 22:05 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 19993

On Wed, Mar 04, 2015 at 07:59:56PM +0200, Eli Zaretskii wrote:
> > Date: Tue, 3 Mar 2015 14:02:28 -0800
> > From: Ilya Zakharevich <nospam-abuse@ilyaz.org>
> > 
> > (A) On Windows, most Unicode characters won’t be shown, even if the system 
> >     has (many) fonts covering the characters (and these fonts are listed in 
> >     `font-log'!).
> 
> Examples, please: they are required to debug the issue.  Please
> include with the examples the information about the font(s) which
> support the problematic characters, but are not used although
> installed.  Or, if you already debugged this and can tell which code
> misbehaves, please post that information.

I won’t be able to debug this.  However, I just take

   the MOST IMPORTANT font (plug plug!  See ilyaz.org/fonts  ;-] ),

and grep for it in the result of `font-show-log' (family = «Unifont
Smooth»; it is usable, and has all the glyphs for BMP of Unicode 7.0):

  grep -B 3 -A 3 Smooth- font-show-log-post >font-show-log-post-Smooth

I see several occurences:

     -outline-FangSong-normal-normal-normal-mono-*-c-*-gb2312.1980*-*
     -outline-SimHei-normal-normal-normal-mono-*-c-*-gb2312.1980*-*
     -outline-KaiTi-normal-normal-normal-mono-*-c-*-gb2312.1980*-*
     -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-gb2312.1980*-*
   w32font-list: -outline-*-mono-*-gb2312.1980*-*
     -outline-BatangChe-normal-normal-normal-mono-*-c-*-gb2312.1980*-*
     -outline-GungsuhChe-normal-normal-normal-mono-*-c-*-gb2312.1980*-*
   --
     -outline-FangSong-normal-normal-normal-mono-*-c-*-gb2312.1980*-*
     -outline-SimHei-normal-normal-normal-mono-*-c-*-gb2312.1980*-*
     -outline-KaiTi-normal-normal-normal-mono-*-c-*-gb2312.1980*-*
     -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-gb2312.1980*-*
   list: -outline-*-mono-*-gb2312.1980*-*
     -outline-BatangChe-normal-normal-normal-mono-*-c-*-gb2312.1980*-*
     -outline-GungsuhChe-normal-normal-normal-mono-*-c-*-gb2312.1980*-*
   --
     -outline-FangSong-normal-normal-normal-mono-*-c-*-gb2312.1980*-*
     -outline-SimHei-normal-normal-normal-mono-*-c-*-gb2312.1980*-*
     -outline-KaiTi-normal-normal-normal-mono-*-c-*-gb2312.1980*-*
     -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-gb2312.1980*-*
     -outline-BatangChe-normal-normal-normal-mono-*-c-*-gb2312.1980*-*
     -outline-GungsuhChe-normal-normal-normal-mono-*-c-*-gb2312.1980*-*
     -outline-GulimChe-normal-normal-normal-mono-*-c-*-gb2312.1980*-*
   --
   uniscribe-list: -outline-*-mono-*-jisx0208*-*
     -outline-MS Gothic-normal-normal-normal-mono-*-c-*-jisx0208*-*
     -outline-MS Mincho-normal-normal-normal-mono-*-c-*-jisx0208*-*
     -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-jisx0208*-*
   w32font-list: -outline-*-mono-*-jisx0208*-*
     -outline-MS Gothic-normal-normal-normal-mono-*-c-*-jisx0208*-*
     -outline-MS Mincho-normal-normal-normal-mono-*-c-*-jisx0208*-*
     -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-jisx0208*-*
   list: -outline-*-mono-*-jisx0208*-*
     -outline-MS Gothic-normal-normal-normal-mono-*-c-*-jisx0208*-*
     -outline-MS Mincho-normal-normal-normal-mono-*-c-*-jisx0208*-*
     -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-jisx0208*-*
     -outline-MS Gothic-normal-normal-normal-mono-*-c-*-jisx0208*-*
     -outline-MS Mincho-normal-normal-normal-mono-*-c-*-jisx0208*-*
     -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-jisx0208*-*
   sort-by: -*-normal-normal-normal-*-13-*
     uniscribe:-outline-MS Gothic-normal-normal-normal-mono-*-c-*-jisx0208*-*
   open: -outline-MS Gothic-normal-normal-normal-mono-*-c-*-jisx0208*-*

but only with some specialized encodings (instead of iso10646).  How comes?

Would not this explain why the glyph is not shown?

Thanks,
Ilya





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-05 22:05   ` Ilya Zakharevich
@ 2015-03-06 10:45     ` Eli Zaretskii
  2015-03-06 11:38       ` Ilya Zakharevich
  0 siblings, 1 reply; 35+ messages in thread
From: Eli Zaretskii @ 2015-03-06 10:45 UTC (permalink / raw)
  To: Ilya Zakharevich; +Cc: 19993

> Date: Thu, 5 Mar 2015 14:05:02 -0800
> From: Ilya Zakharevich <ilya@math.berkeley.edu>
> Cc: 19993@debbugs.gnu.org
> 
> but only with some specialized encodings (instead of iso10646).  How comes?
> 
> Would not this explain why the glyph is not shown?

What glyph?  Once again, please provide examples someone else can work
with.

Also, it might help to understand how did you produce the font log,
and in particular with what argument, if any, did you invoke
font-show-log.





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-06 10:45     ` Eli Zaretskii
@ 2015-03-06 11:38       ` Ilya Zakharevich
  2015-03-06 14:00         ` Eli Zaretskii
  0 siblings, 1 reply; 35+ messages in thread
From: Ilya Zakharevich @ 2015-03-06 11:38 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 19993

On Fri, Mar 06, 2015 at 12:45:02PM +0200, Eli Zaretskii wrote:
> > Date: Thu, 5 Mar 2015 14:05:02 -0800
> > From: Ilya Zakharevich <ilya@math.berkeley.edu>
> > Cc: 19993@debbugs.gnu.org
> > 
> > but only with some specialized encodings (instead of iso10646).  How comes?
> > 
> > Would not this explain why the glyph is not shown?
> 
> What glyph?  Once again, please provide examples someone else can work
> with.

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).

> Also, it might help to understand how did you produce the font log,
> and in particular with what argument, if any, did you invoke
> font-show-log.

Just
  M-x font-show-log
after entering ℱ (by typing Shift-AltGr-Menu-F on my layouts).

Thanks,
Ilya





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-06 11:38       ` Ilya Zakharevich
@ 2015-03-06 14:00         ` Eli Zaretskii
  2015-03-06 16:21           ` Ilya Zakharevich
  0 siblings, 1 reply; 35+ messages in thread
From: Eli Zaretskii @ 2015-03-06 14:00 UTC (permalink / raw)
  To: Ilya Zakharevich; +Cc: 19993

> Date: Fri, 6 Mar 2015 03:38:04 -0800
> From: Ilya Zakharevich <ilya@math.berkeley.edu>
> Cc: 19993@debbugs.gnu.org
> 
> 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?

> > Also, it might help to understand how did you produce the font log,
> > and in particular with what argument, if any, did you invoke
> > font-show-log.
> 
> Just
>   M-x font-show-log
> after entering ℱ (by typing Shift-AltGr-Menu-F on my layouts).

It by default shows only 20 fonts, so perhaps Emacs searched more than
what it shows.  Invoking font-show-log with a negative argument will
cause it show all the fonts, without any limitations.





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-06 14:00         ` Eli Zaretskii
@ 2015-03-06 16:21           ` Ilya Zakharevich
  2015-03-06 20:11             ` Eli Zaretskii
  0 siblings, 1 reply; 35+ messages in thread
From: Ilya Zakharevich @ 2015-03-06 16:21 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 19993

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. 

> > > Also, it might help to understand how did you produce the font log,
> > > and in particular with what argument, if any, did you invoke
> > > font-show-log.
> > 
> > Just
> >   M-x font-show-log
> > after entering ℱ (by typing Shift-AltGr-Menu-F on my layouts).
> 
> It by default shows only 20 fonts, so perhaps Emacs searched more than
> what it shows.  Invoking font-show-log with a negative argument will
> cause it show all the fonts, without any limitations.

Yes, it was my fault.  I redid it:
  (A) Typed
         Shift-Space Shift-Space <
      in izKeys layout (inserts U+27e8 ⟨).  (Shows a rectangle with 27e8.) 

  (B) Saved the result of
         M-: (font-show-log -1)

  (C) Ran
         egrep -B 1 -A 1 "^[^ ]|Smooth-" font-show-log--1		>font-show-log--1-Smooth-a
	 perl -wlpe "s/^--$/==/" 	 font-show-log--1-Smooth-a 	>font-show-log--1-Smooth-a1
	 grep -B 4 -A 1 Smooth- 	 font-show-log--1-Smooth-a1 	>font-show-log--1-Smooth-b

The result is below.  (Does not tell me anything…)

Thanks,
Ilya

uniscribe-list: -outline-*-mono-*-iso10646-1:script=symbol
  -outline-BatangChe-normal-normal-normal-mono-*-c-*-iso10646-1
==
  -outline-DejaVu Sans Mono Unifont-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth Mono-normal-normal-normal-mono-*-c-*-iso10646-1
--
w32font-list: -outline-*-mono-*-iso10646-1:script=symbol
  -outline-BatangChe-normal-normal-normal-mono-*-c-*-iso10646-1
==
  -outline-DejaVu Sans Mono Unifont-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth Mono-normal-normal-normal-mono-*-c-*-iso10646-1
--
list: -outline-*-mono-*-iso10646-1:script=symbol
  -outline-BatangChe-normal-normal-normal-mono-*-c-*-iso10646-1
==
  -outline-DejaVu Sans Mono Unifont-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth Mono-normal-normal-normal-mono-*-c-*-iso10646-1
==
  -outline-DejaVu Sans Mono Unifont-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth Mono-normal-normal-normal-mono-*-c-*-iso10646-1
--
uniscribe-list: -outline-*-iso10646-1:script=symbol
  -outline-Arial-normal-normal-normal-sans-*-p-*-iso10646-1
==
  -outline-DejaVu Sans Mono Unifont-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth Mono-normal-normal-normal-mono-*-c-*-iso10646-1
--
w32font-list: -outline-*-iso10646-1:script=symbol
  -outline-Arial-normal-normal-normal-sans-*-p-*-iso10646-1
==
  -outline-DejaVu Sans Mono Unifont-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth Mono-normal-normal-normal-mono-*-c-*-iso10646-1
--
list: -outline-*-iso10646-1:script=symbol
  -outline-Arial-normal-normal-normal-sans-*-p-*-iso10646-1
==
  -outline-DejaVu Sans Mono Unifont-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth Mono-normal-normal-normal-mono-*-c-*-iso10646-1
==
  -outline-DejaVu Sans Mono Unifont-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth Mono-normal-normal-normal-mono-*-c-*-iso10646-1
--
uniscribe-list: -*-mono-*-iso10646-1:script=symbol
  -outline-BatangChe-normal-normal-normal-mono-*-c-*-iso10646-1
==
  -outline-DejaVu Sans Mono Unifont-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth Mono-normal-normal-normal-mono-*-c-*-iso10646-1
--
w32font-list: -*-mono-*-iso10646-1:script=symbol
  -outline-BatangChe-normal-normal-normal-mono-*-c-*-iso10646-1
==
  -outline-DejaVu Sans Mono Unifont-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth Mono-normal-normal-normal-mono-*-c-*-iso10646-1
--
list: -*-mono-*-iso10646-1:script=symbol
  -outline-BatangChe-normal-normal-normal-mono-*-c-*-iso10646-1
==
  -outline-DejaVu Sans Mono Unifont-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth Mono-normal-normal-normal-mono-*-c-*-iso10646-1
==
  -outline-DejaVu Sans Mono Unifont-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth Mono-normal-normal-normal-mono-*-c-*-iso10646-1
--
uniscribe-list: -*-iso10646-1:script=symbol
  -outline-Arial-normal-normal-normal-sans-*-p-*-iso10646-1
==
  -outline-DejaVu Sans Mono Unifont-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth Mono-normal-normal-normal-mono-*-c-*-iso10646-1
--
w32font-list: -*-iso10646-1:script=symbol
  -outline-Arial-normal-normal-normal-sans-*-p-*-iso10646-1
==
  -outline-DejaVu Sans Mono Unifont-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth Mono-normal-normal-normal-mono-*-c-*-iso10646-1
--
list: -*-iso10646-1:script=symbol
  -outline-Arial-normal-normal-normal-sans-*-p-*-iso10646-1
==
  -outline-DejaVu Sans Mono Unifont-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth Mono-normal-normal-normal-mono-*-c-*-iso10646-1
==
  -outline-DejaVu Sans Mono Unifont-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth Mono-normal-normal-normal-mono-*-c-*-iso10646-1
--
uniscribe-list: -outline-*-mono-*-iso10646-1
  -outline-BatangChe-normal-normal-normal-mono-*-c-*-iso10646-1
==
  -outline-DejaVu Sans Mono Unifont-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth Mono-normal-normal-normal-mono-*-c-*-iso10646-1
--
w32font-list: -outline-*-mono-*-iso10646-1
  -outline-BatangChe-normal-normal-normal-mono-*-c-*-iso10646-1
==
  -outline-DejaVu Sans Mono Unifont-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth Mono-normal-normal-normal-mono-*-c-*-iso10646-1
--
list: -outline-*-mono-*-iso10646-1
  -outline-BatangChe-normal-normal-normal-mono-*-c-*-iso10646-1
==
  -outline-DejaVu Sans Mono Unifont-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth Mono-normal-normal-normal-mono-*-c-*-iso10646-1
==
  -outline-DejaVu Sans Mono Unifont-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth Mono-normal-normal-normal-mono-*-c-*-iso10646-1
--
uniscribe-list: -outline-*-iso10646-1
  -outline-Tekton Pro-bold-italic-normal-sans-*-p-*-iso10646-1
==
  -outline-DejaVu Sans Mono Unifont-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth Mono-normal-normal-normal-mono-*-c-*-iso10646-1
--
w32font-list: -outline-*-iso10646-1
  -outline-Tekton Pro-bold-italic-normal-sans-*-p-*-iso10646-1
==
  -outline-DejaVu Sans Mono Unifont-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth Mono-normal-normal-normal-mono-*-c-*-iso10646-1
--
list: -outline-*-iso10646-1
  -outline-Tekton Pro-bold-italic-normal-sans-*-p-*-iso10646-1
==
  -outline-DejaVu Sans Mono Unifont-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth Mono-normal-normal-normal-mono-*-c-*-iso10646-1
==
  -outline-DejaVu Sans Mono Unifont-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth Mono-normal-normal-normal-mono-*-c-*-iso10646-1
--
uniscribe-list: -*-mono-*-iso10646-1
  -outline-BatangChe-normal-normal-normal-mono-*-c-*-iso10646-1
==
  -outline-DejaVu Sans Mono Unifont-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth Mono-normal-normal-normal-mono-*-c-*-iso10646-1
--
w32font-list: -*-mono-*-iso10646-1
  -outline-BatangChe-normal-normal-normal-mono-*-c-*-iso10646-1
==
  -outline-DejaVu Sans Mono Unifont-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth Mono-normal-normal-normal-mono-*-c-*-iso10646-1
--
list: -*-mono-*-iso10646-1
  -outline-BatangChe-normal-normal-normal-mono-*-c-*-iso10646-1
==
  -outline-DejaVu Sans Mono Unifont-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth Mono-normal-normal-normal-mono-*-c-*-iso10646-1
==
  -outline-DejaVu Sans Mono Unifont-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth Mono-normal-normal-normal-mono-*-c-*-iso10646-1
--
uniscribe-list: -*-iso10646-1
  -outline-Tekton Pro-bold-italic-normal-sans-*-p-*-iso10646-1
==
  -outline-DejaVu Sans Mono Unifont-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth Mono-normal-normal-normal-mono-*-c-*-iso10646-1
--
w32font-list: -*-iso10646-1
  -outline-Tekton Pro-bold-italic-normal-sans-*-p-*-iso10646-1
==
  -outline-DejaVu Sans Mono Unifont-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth Mono-normal-normal-normal-mono-*-c-*-iso10646-1
--
list: -*-iso10646-1
  -outline-Tekton Pro-bold-italic-normal-sans-*-p-*-iso10646-1
==
  -outline-DejaVu Sans Mono Unifont-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth Mono-normal-normal-normal-mono-*-c-*-iso10646-1
==
  -outline-DejaVu Sans Mono Unifont-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-iso10646-1
  -outline-Unifont Smooth Mono-normal-normal-normal-mono-*-c-*-iso10646-1
--
uniscribe-list: -outline-*-mono-*-gb2312.1980*-*
  -outline-BatangChe-normal-normal-normal-mono-*-c-*-gb2312.1980*-*
==
  -outline-KaiTi-normal-normal-normal-mono-*-c-*-gb2312.1980*-*
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-gb2312.1980*-*
w32font-list: -outline-*-mono-*-gb2312.1980*-*
  -outline-BatangChe-normal-normal-normal-mono-*-c-*-gb2312.1980*-*
==
  -outline-KaiTi-normal-normal-normal-mono-*-c-*-gb2312.1980*-*
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-gb2312.1980*-*
list: -outline-*-mono-*-gb2312.1980*-*
  -outline-BatangChe-normal-normal-normal-mono-*-c-*-gb2312.1980*-*
==
  -outline-KaiTi-normal-normal-normal-mono-*-c-*-gb2312.1980*-*
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-gb2312.1980*-*
  -outline-BatangChe-normal-normal-normal-mono-*-c-*-gb2312.1980*-*
==
  -outline-KaiTi-normal-normal-normal-mono-*-c-*-gb2312.1980*-*
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-gb2312.1980*-*
sort-by: -*-normal-normal-normal-*-13-*
--
list: -*-Courier New-*-jisx0208*-*
uniscribe-list: -outline-*-mono-*-jisx0208*-*
  -outline-MS Gothic-normal-normal-normal-mono-*-c-*-jisx0208*-*
  -outline-MS Mincho-normal-normal-normal-mono-*-c-*-jisx0208*-*
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-jisx0208*-*
w32font-list: -outline-*-mono-*-jisx0208*-*
  -outline-MS Gothic-normal-normal-normal-mono-*-c-*-jisx0208*-*
  -outline-MS Mincho-normal-normal-normal-mono-*-c-*-jisx0208*-*
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-jisx0208*-*
list: -outline-*-mono-*-jisx0208*-*
  -outline-MS Gothic-normal-normal-normal-mono-*-c-*-jisx0208*-*
  -outline-MS Mincho-normal-normal-normal-mono-*-c-*-jisx0208*-*
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-jisx0208*-*
  -outline-MS Gothic-normal-normal-normal-mono-*-c-*-jisx0208*-*
  -outline-MS Mincho-normal-normal-normal-mono-*-c-*-jisx0208*-*
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-jisx0208*-*
sort-by: -*-normal-normal-normal-*-13-*
--
uniscribe-list: -outline-*-mono-*-big5*-*
  -outline-BatangChe-normal-normal-normal-mono-*-c-*-big5*-*
==
  -outline-NSimSun-normal-normal-normal-mono-*-c-*-big5*-*
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-big5*-*
w32font-list: -outline-*-mono-*-big5*-*
  -outline-BatangChe-normal-normal-normal-mono-*-c-*-big5*-*
==
  -outline-NSimSun-normal-normal-normal-mono-*-c-*-big5*-*
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-big5*-*
list: -outline-*-mono-*-big5*-*
  -outline-BatangChe-normal-normal-normal-mono-*-c-*-big5*-*
==
  -outline-NSimSun-normal-normal-normal-mono-*-c-*-big5*-*
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-big5*-*
  -outline-BatangChe-normal-normal-normal-mono-*-c-*-big5*-*
==
  -outline-NSimSun-normal-normal-normal-mono-*-c-*-big5*-*
  -outline-Unifont Smooth-normal-normal-normal-mono-*-c-*-big5*-*
sort-by: -*-normal-normal-normal-*-13-*





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-06 16:21           ` Ilya Zakharevich
@ 2015-03-06 20:11             ` Eli Zaretskii
  2015-03-06 21:12               ` Eli Zaretskii
  2015-03-06 22:08               ` Ilya Zakharevich
  0 siblings, 2 replies; 35+ messages in thread
From: Eli Zaretskii @ 2015-03-06 20:11 UTC (permalink / raw)
  To: Ilya Zakharevich; +Cc: 19993

> Date: Fri, 6 Mar 2015 08:21:36 -0800
> From: Ilya Zakharevich <ilya@math.berkeley.edu>
> Cc: 19993@debbugs.gnu.org
> 
> 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?

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.





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-06 20:11             ` Eli Zaretskii
@ 2015-03-06 21:12               ` Eli Zaretskii
  2015-03-06 22:13                 ` Ilya Zakharevich
  2015-03-06 22:08               ` Ilya Zakharevich
  1 sibling, 1 reply; 35+ messages in thread
From: Eli Zaretskii @ 2015-03-06 21:12 UTC (permalink / raw)
  To: ilya; +Cc: 19993

> Date: Fri, 06 Mar 2015 22:11:32 +0200
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: 19993@debbugs.gnu.org
> 
> > Date: Fri, 6 Mar 2015 08:21:36 -0800
> > From: Ilya Zakharevich <ilya@math.berkeley.edu>
> > Cc: 19993@debbugs.gnu.org
> > 
> > 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. 

This will set up the default fontset to use Symbola for the
Mathematical Alphanumeric Symbols block:

  (set-fontset-font "fontset-default" '(#x1d400 . #x1d7ff) "Symbola")

You should be able to do similar things with other ranges, and
likewise for Unifont Smooth.

The node "Modifying Fontsets" of the Emacs manual also includes an
example of how to set up a fallback font, which might be what you want
to do with Unifont Smooth (unless you already have it set as the
default font).





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-06 20:11             ` Eli Zaretskii
  2015-03-06 21:12               ` Eli Zaretskii
@ 2015-03-06 22:08               ` Ilya Zakharevich
  2015-03-07  8:14                 ` Eli Zaretskii
  1 sibling, 1 reply; 35+ messages in thread
From: Ilya Zakharevich @ 2015-03-06 22:08 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 19993

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 <ilya@math.berkeley.edu>
> > Cc: 19993@debbugs.gnu.org
> > 
> > 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





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-06 21:12               ` Eli Zaretskii
@ 2015-03-06 22:13                 ` Ilya Zakharevich
  2015-03-07  8:18                   ` Eli Zaretskii
  0 siblings, 1 reply; 35+ messages in thread
From: Ilya Zakharevich @ 2015-03-06 22:13 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 19993

On Fri, Mar 06, 2015 at 11:12:17PM +0200, Eli Zaretskii wrote:
> This will set up the default fontset to use Symbola for the
> Mathematical Alphanumeric Symbols block:
> 
>   (set-fontset-font "fontset-default" '(#x1d400 . #x1d7ff) "Symbola")

I do not follow.  What is going on now?  Are you saying that it should
NOT work out-of-the-box?

And what fontset-default has to do with this discussion?  It is not
used by Emacs, right?  (If my understanding of Emacs Manual is correct.)

Ilya





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-06 22:08               ` Ilya Zakharevich
@ 2015-03-07  8:14                 ` Eli Zaretskii
  2015-03-08  7:41                   ` Ilya Zakharevich
  0 siblings, 1 reply; 35+ messages in thread
From: Eli Zaretskii @ 2015-03-07  8:14 UTC (permalink / raw)
  To: Ilya Zakharevich; +Cc: 19993

> Date: Fri, 6 Mar 2015 14:08:01 -0800
> From: Ilya Zakharevich <ilya@math.berkeley.edu>
> Cc: 19993@debbugs.gnu.org
> 
> > 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.





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-06 22:13                 ` Ilya Zakharevich
@ 2015-03-07  8:18                   ` Eli Zaretskii
  2015-03-08  7:45                     ` Ilya Zakharevich
  2015-03-08  8:38                     ` Ilya Zakharevich
  0 siblings, 2 replies; 35+ messages in thread
From: Eli Zaretskii @ 2015-03-07  8:18 UTC (permalink / raw)
  To: Ilya Zakharevich; +Cc: 19993

> Date: Fri, 6 Mar 2015 14:13:51 -0800
> From: Ilya Zakharevich <ilya@math.berkeley.edu>
> Cc: 19993@debbugs.gnu.org
> 
> On Fri, Mar 06, 2015 at 11:12:17PM +0200, Eli Zaretskii wrote:
> > This will set up the default fontset to use Symbola for the
> > Mathematical Alphanumeric Symbols block:
> > 
> >   (set-fontset-font "fontset-default" '(#x1d400 . #x1d7ff) "Symbola")
> 
> I do not follow.  What is going on now?  Are you saying that it should
> NOT work out-of-the-box?

On the slim chance that you'd like this to work for you, and didn't
yet figure it out, I described what worked for me.

Also, others who read this discussion, now or in the future, might
benefit from this information.

> And what fontset-default has to do with this discussion?  It is not
> used by Emacs, right?

AFAICT, it _is_ used.  At least if I evaluate the above in "emacs -Q",
and then type characters in the range, they are displayed using
Symbola, instead of showing a box with hex code, per glyphless
character display.





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-07  8:14                 ` Eli Zaretskii
@ 2015-03-08  7:41                   ` Ilya Zakharevich
  2015-03-08 15:51                     ` Eli Zaretskii
  0 siblings, 1 reply; 35+ messages in thread
From: Ilya Zakharevich @ 2015-03-08  7:41 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 19993

On Sat, Mar 07, 2015 at 10:14:16AM +0200, Eli Zaretskii wrote:
> >   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.

So this bits “identify” a subrange.  Of course, nothing is said about
what this actually MEANS.  So I did an experiment: Cour.ttf.

The following subrange is “identified”:

  9 	  0400 - 04FF	       Cyrillic
  	  0500 - 052F	       Cyrillic Supplement
	  2DE0 - 2DFF	       Cyrillic Extended-A
 	  A640 - A69F	       Cyrillic Extended-B

What is actually supported:

  0400 - 04FF 	 Everything but 04d8,04d9 (Schwa, used in Cyrillic Azeri — but contemporary Azeri is written in Latin) 
  0500 - 052F	 Only 0500 - 0513, 051a - 051d supported
  2DE0 - 2DFF	 None supported (5.1)
  A640 - A69F	 None supported (5.1 and later)

Looking in DerivedAge.txt:

   04D0..04EB    ; 1.1 #  [28] CYRILLIC CAPITAL LETTER A WITH BREVE..CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS

   0500..050F    ; 3.2 #  [16] CYRILLIC CAPITAL LETTER KOMI DE..CYRILLIC SMALL LETTER KOMI TJE
   0510..0513    ; 5.0 #   [4] CYRILLIC CAPITAL LETTER REVERSED ZE..CYRILLIC SMALL LETTER EL WITH HOOK
   0514..0523    ; 5.1 #  [16] CYRILLIC CAPITAL LETTER LHA..CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK

So two characters of 1.1 are not supported, all characters of 3.2 and 5.0 are
supported, and part of 5.1 is supported.

Does it look like a good indication of anything?  I would say no… Do
you know any other tool looking at this bitmap for choosing which font
to pick up for a particular character?

Ilya





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-07  8:18                   ` Eli Zaretskii
@ 2015-03-08  7:45                     ` Ilya Zakharevich
  2015-03-08 15:52                       ` Eli Zaretskii
  2015-03-08  8:38                     ` Ilya Zakharevich
  1 sibling, 1 reply; 35+ messages in thread
From: Ilya Zakharevich @ 2015-03-08  7:45 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 19993

On Sat, Mar 07, 2015 at 10:18:25AM +0200, Eli Zaretskii wrote:
> > Date: Fri, 6 Mar 2015 14:13:51 -0800
> > From: Ilya Zakharevich <ilya@math.berkeley.edu>
> > Cc: 19993@debbugs.gnu.org
> > 
> > On Fri, Mar 06, 2015 at 11:12:17PM +0200, Eli Zaretskii wrote:
> > > This will set up the default fontset to use Symbola for the
> > > Mathematical Alphanumeric Symbols block:
> > > 
> > >   (set-fontset-font "fontset-default" '(#x1d400 . #x1d7ff) "Symbola")
> > 
> > I do not follow.  What is going on now?  Are you saying that it should
> > NOT work out-of-the-box?
> 
> On the slim chance that you'd like this to work for you, and didn't
> yet figure it out, I described what worked for me.
> 
> Also, others who read this discussion, now or in the future, might
> benefit from this information.

Thanks for clarifying this.  However, my answer still remains unanswered…

> > And what fontset-default has to do with this discussion?  It is not
> > used by Emacs, right?
> 
> AFAICT, it _is_ used.  At least if I evaluate the above in "emacs -Q",
> and then type characters in the range, they are displayed using
> Symbola, instead of showing a box with hex code, per glyphless
> character display.

I see: I mixed it up with “standard fontset”.  Thanks.

Ilya





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-07  8:18                   ` Eli Zaretskii
  2015-03-08  7:45                     ` Ilya Zakharevich
@ 2015-03-08  8:38                     ` Ilya Zakharevich
  2015-03-08  8:46                       ` Ilya Zakharevich
  2015-03-08 15:55                       ` Eli Zaretskii
  1 sibling, 2 replies; 35+ messages in thread
From: Ilya Zakharevich @ 2015-03-08  8:38 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 19993

On Sat, Mar 07, 2015 at 10:18:25AM +0200, Eli Zaretskii wrote:
> > >   (set-fontset-font "fontset-default" '(#x1d400 . #x1d7ff) "Symbola")
> > 
> > I do not follow.  What is going on now?  Are you saying that it should
> > NOT work out-of-the-box?
> 
> On the slim chance that you'd like this to work for you, and didn't
> yet figure it out, I described what worked for me.

It would be nice if there was a recipe which works for everyone.
(After this, one could make it a default. ;-)

But the major hurdle is that the semantic of fontsets is completely
undocumented.  After your suggestions, I think I arrived at some
description which does not contradict anything I have seen:

=======================================================
When Emacs wants to show a character using a fontset:
  • Emacs looks in the fontset and finds the font specifications associated
    to this character.
  • Emacs checks which Unicode Subset contains the given character.
		(What if not unique???)
  • From fonts matching the font specifications, Emacs picks up those
    which have this Unicode Subset “identified” within the font.
  • From these, Emacs choses one (which?).

Emacs uses this procedure for two fontsets: the currently enabled one, and
the default fontset.  If none of two obtained fonts supports the given
character, a HEX representation is shown.
=======================================================

Is it similar to what actually happens?  (I’m not asking about the
implementation, just whether there is a functional equivalence.)

Ilya





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-08  8:38                     ` Ilya Zakharevich
@ 2015-03-08  8:46                       ` Ilya Zakharevich
  2015-03-10 16:29                         ` Ilya Zakharevich
  2015-03-08 15:55                       ` Eli Zaretskii
  1 sibling, 1 reply; 35+ messages in thread
From: Ilya Zakharevich @ 2015-03-08  8:46 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 19993

On Sun, Mar 08, 2015 at 12:38:05AM -0800, Ilya Zakharevich wrote:
> When Emacs wants to show a character using a fontset:
>   • Emacs looks in the fontset and finds the font specifications associated
>     to this character.
>   • Emacs checks which Unicode Subset contains the given character.
> 		(What if not unique???)
>   • From fonts matching the font specifications, Emacs picks up those
>     which have this Unicode Subset “identified” within the font.
>   • From these, Emacs choses one (which?).
> 
> Emacs uses this procedure for two fontsets: the currently enabled one, and
> the default fontset.  If none of two obtained fonts supports the given
> character, a HEX representation is shown.
> =======================================================

Interesting tidbit:

  57	D800 - DFFF	Non-Plane 0. Note that setting this bit implies that
  	       		there is at least one supplementary code point
  	       		beyond the Basic Multilingual Plane (BMP) that
  	       		is supported by this font. See Surrogates and
  	       		Supplementary Characters.

Extrapolating (since there is no other way to treat this), having a
Subset “identified” may mean just that there is at least 1 character
in this range supported by the font.  ;-)  :-(

Ilya





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-08  7:41                   ` Ilya Zakharevich
@ 2015-03-08 15:51                     ` Eli Zaretskii
  2015-03-08 16:20                       ` Ilya Zakharevich
  0 siblings, 1 reply; 35+ messages in thread
From: Eli Zaretskii @ 2015-03-08 15:51 UTC (permalink / raw)
  To: Ilya Zakharevich; +Cc: 19993

> Date: Sat, 7 Mar 2015 23:41:58 -0800
> From: Ilya Zakharevich <ilya@math.berkeley.edu>
> Cc: 19993@debbugs.gnu.org
> 
> The following subrange is “identified”:
> 
>   9       0400 - 04FF          Cyrillic
>           0500 - 052F          Cyrillic Supplement
>           2DE0 - 2DFF          Cyrillic Extended-A
>           A640 - A69F          Cyrillic Extended-B
> 
> What is actually supported:
> 
>   0400 - 04FF    Everything but 04d8,04d9 (Schwa, used in Cyrillic Azeri — but 
> contemporary Azeri is written in Latin) 
>   0500 - 052F    Only 0500 - 0513, 051a - 051d supported
>   2DE0 - 2DFF    None supported (5.1)
>   A640 - A69F    None supported (5.1 and later)

FWIW, on one system I use frequently (a pretty standard Windows 7
machine), the last two blocks are not supported by any font.  Likewise
on another system, an XP with a lot of additional fonts installed.
But if I install GNU Unifont, then Emacs does use it for these blocks.
So somehow we do TRT in some situations.  Maybe these subranges are
just a filter?

> Does it look like a good indication of anything?  I would say no… Do
> you know any other tool looking at this bitmap for choosing which font
> to pick up for a particular character?

I guess by "tool" you mean a technique or algorithm that uses the font
data for selecting the appropriate font?  If so, no, I know very
little in this area, on Windows or elsewhere.  Enumerating all the
glyphs would work, but is probably prohibitively expensive.





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-08  7:45                     ` Ilya Zakharevich
@ 2015-03-08 15:52                       ` Eli Zaretskii
  0 siblings, 0 replies; 35+ messages in thread
From: Eli Zaretskii @ 2015-03-08 15:52 UTC (permalink / raw)
  To: Ilya Zakharevich; +Cc: 19993

> Date: Sat, 7 Mar 2015 23:45:05 -0800
> From: Ilya Zakharevich <ilya@math.berkeley.edu>
> Cc: 19993@debbugs.gnu.org
> 
> On Sat, Mar 07, 2015 at 10:18:25AM +0200, Eli Zaretskii wrote:
> > > Date: Fri, 6 Mar 2015 14:13:51 -0800
> > > From: Ilya Zakharevich <ilya@math.berkeley.edu>
> > > Cc: 19993@debbugs.gnu.org
> > > 
> > > On Fri, Mar 06, 2015 at 11:12:17PM +0200, Eli Zaretskii wrote:
> > > > This will set up the default fontset to use Symbola for the
> > > > Mathematical Alphanumeric Symbols block:
> > > > 
> > > >   (set-fontset-font "fontset-default" '(#x1d400 . #x1d7ff) "Symbola")
> > > 
> > > I do not follow.  What is going on now?  Are you saying that it should
> > > NOT work out-of-the-box?
> > 
> > On the slim chance that you'd like this to work for you, and didn't
> > yet figure it out, I described what worked for me.
> > 
> > Also, others who read this discussion, now or in the future, might
> > benefit from this information.
> 
> Thanks for clarifying this.  However, my answer still remains unanswered…

The answer should be obvious.





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-08  8:38                     ` Ilya Zakharevich
  2015-03-08  8:46                       ` Ilya Zakharevich
@ 2015-03-08 15:55                       ` Eli Zaretskii
  1 sibling, 0 replies; 35+ messages in thread
From: Eli Zaretskii @ 2015-03-08 15:55 UTC (permalink / raw)
  To: Ilya Zakharevich; +Cc: 19993

> Date: Sun, 8 Mar 2015 00:38:05 -0800
> From: Ilya Zakharevich <ilya@math.berkeley.edu>
> Cc: 19993@debbugs.gnu.org
> 
> But the major hurdle is that the semantic of fontsets is completely
> undocumented.  After your suggestions, I think I arrived at some
> description which does not contradict anything I have seen:
> 
> =======================================================
> When Emacs wants to show a character using a fontset:
>   • Emacs looks in the fontset and finds the font specifications associated
>     to this character.
>   • Emacs checks which Unicode Subset contains the given character.
>                 (What if not unique???)
>   • From fonts matching the font specifications, Emacs picks up those
>     which have this Unicode Subset “identified” within the font.
>   • From these, Emacs choses one (which?).
> 
> Emacs uses this procedure for two fontsets: the currently enabled one, and
> the default fontset.  If none of two obtained fonts supports the given
> character, a HEX representation is shown.
> =======================================================
> 
> Is it similar to what actually happens?  (I’m not asking about the
> implementation, just whether there is a functional equivalence.)

Sounds reasonable; but then my "reason" in this matter means very
little.  And I'm not aware of any documentation that could be used to
confirm or refute the above.

I can add 2 bits to this:

  . the match between the font spec and the Unicode subranges is
    checked as part of the Windows implementation of the font driver's
    'list' method, which (the method) is called only from
    font_list_entities, which see.

  . at least some of the "wisdom" (or lack thereof) of font selection
    using the defaults seems to come from the database created by
    setup-default-fontset, which see.





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-08 15:51                     ` Eli Zaretskii
@ 2015-03-08 16:20                       ` Ilya Zakharevich
  2015-03-08 17:01                         ` Eli Zaretskii
  0 siblings, 1 reply; 35+ messages in thread
From: Ilya Zakharevich @ 2015-03-08 16:20 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 19993

On Sun, Mar 08, 2015 at 05:51:16PM +0200, Eli Zaretskii wrote:
> > What is actually supported:
> > 
> >   0400 - 04FF    Everything but 04d8,04d9 (Schwa, used in Cyrillic Azeri — but 
> > contemporary Azeri is written in Latin) 
> >   0500 - 052F    Only 0500 - 0513, 051a - 051d supported
> >   2DE0 - 2DFF    None supported (5.1)
> >   A640 - A69F    None supported (5.1 and later)
> 
> FWIW, on one system I use frequently (a pretty standard Windows 7
> machine), the last two blocks are not supported by any font.  Likewise
> on another system, an XP with a lot of additional fonts installed.
> But if I install GNU Unifont, then Emacs does use it for these blocks.
> So somehow we do TRT in some situations.  Maybe these subranges are
> just a filter?

BTW, using Unifont from unifondry is asking for trouble.  And here I
do not mean just your eyes (it may be good at 16pt), but the fact that
it won’t interact with any other font — it claims glyphs for all the
characters in all the ranges — even if it does not know the correct glyph.

My build (“Unifont Smooth” on ilyaz.org/fonts) is properly behaving
(at least in this regard) — and is much better for eyes in all the
resolutions.

> > Does it look like a good indication of anything?  I would say no… Do
> > you know any other tool looking at this bitmap for choosing which font
> > to pick up for a particular character?
> 
> I guess by "tool" you mean a technique or algorithm that uses the font
> data for selecting the appropriate font?  If so, no, I know very
> little in this area, on Windows or elsewhere.  Enumerating all the
> glyphs would work, but is probably prohibitively expensive.

Enumerating all the glyphs is exactly how all the tools I know
work — at least those which can show all the characters which can be
shown on a system.

And so far, on Windows I found one such tool (of those not using
fontconfig, like mplayer):

 firefox with user’s customizations from
   http://search.cpan.org/~ilyaz/UI-KeyboardLayout/lib/UI/KeyboardLayout.pm#There_is_no_way_to_show_Unicode_contents_on_Windows

    (Currently, these instructions are not reflecting the fact that
     Unifont Smooth became well-behaving, so may be used as a
     substitution font too.)

Ilya





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-08 16:20                       ` Ilya Zakharevich
@ 2015-03-08 17:01                         ` Eli Zaretskii
  0 siblings, 0 replies; 35+ messages in thread
From: Eli Zaretskii @ 2015-03-08 17:01 UTC (permalink / raw)
  To: Ilya Zakharevich; +Cc: 19993

> Date: Sun, 8 Mar 2015 09:20:17 -0700
> From: Ilya Zakharevich <ilya@math.berkeley.edu>
> Cc: 19993@debbugs.gnu.org
> 
> BTW, using Unifont from unifondry is asking for trouble.

I know.  I just tried to see if Emacs will pick up a new font for a
character it couldn't display before that.  It did in this case, but I
suspect that it might be because of what setup-default-fontset does.





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-08  8:46                       ` Ilya Zakharevich
@ 2015-03-10 16:29                         ` Ilya Zakharevich
  2015-03-10 17:05                           ` Eli Zaretskii
  0 siblings, 1 reply; 35+ messages in thread
From: Ilya Zakharevich @ 2015-03-10 16:29 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 19993

On Sun, Mar 08, 2015 at 12:46:07AM -0800, I wrote:
> Interesting tidbit:
> 
>   57	D800 - DFFF	Non-Plane 0. Note that setting this bit implies that
>   	       		there is at least one supplementary code point
>   	       		beyond the Basic Multilingual Plane (BMP) that
>   	       		is supported by this font. See Surrogates and
>   	       		Supplementary Characters.
> 
> Extrapolating (since there is no other way to treat this), having a
> Subset “identified” may mean just that there is at least 1 character
> in this range supported by the font.  ;-)  :-(

To check this conjecture:
   • I assume that for most fonts, the OS/2 table is created
     automatically by the font editor;
   • I did experiments with the only font editor I know: FontForge.

What I did:
   • created a new font (File/New);
   • changed Encoding to Unicode (Encoding/Reencode/10646-1);
   • made some scribles in ã (U+00e3) and щ (U+0449);
   • Looked into Element⫽Font␣Info⫽OS/2⫽Charsets.

As predicted above, (in Automatic mode)
  Latin Supplement
  Cyrillic & Supplement
are highlighted.  So, I presume, the conjecture above is justified:

  The fact that a Subset is “identified” means just that AT LEAST 1
  character is present.

=======================================================

Which means that the current algorithm used by Emacs (on
Windows?) — at least in the conjectural form outlined in another
message in this thread — is completely bogus.

Choosing the first font which has a subset of a character “identified”
is not a reasonable thing to do.  One must check whether the character
is ACTUALLY present, and scan other “identified” fonts if not.

Ilya
   





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-10 16:29                         ` Ilya Zakharevich
@ 2015-03-10 17:05                           ` Eli Zaretskii
  2015-03-10 17:41                             ` Eli Zaretskii
  0 siblings, 1 reply; 35+ messages in thread
From: Eli Zaretskii @ 2015-03-10 17:05 UTC (permalink / raw)
  To: Ilya Zakharevich; +Cc: 19993

> Date: Tue, 10 Mar 2015 09:29:56 -0700
> From: Ilya Zakharevich <ilya@math.berkeley.edu>
> Cc: 19993@debbugs.gnu.org
> 
> Choosing the first font which has a subset of a character “identified”
> is not a reasonable thing to do.

See my other messages: I'm not sure we actually do that.  It's
possible that the subrange test is used only as a filter, after we
already identified the candidate fonts.





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-10 17:05                           ` Eli Zaretskii
@ 2015-03-10 17:41                             ` Eli Zaretskii
  2015-03-10 20:32                               ` Ilya Zakharevich
  2015-03-11 19:49                               ` Ilya Zakharevich
  0 siblings, 2 replies; 35+ messages in thread
From: Eli Zaretskii @ 2015-03-10 17:41 UTC (permalink / raw)
  To: ilya; +Cc: 19993

> Date: Tue, 10 Mar 2015 19:05:54 +0200
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: 19993@debbugs.gnu.org
> 
> > Date: Tue, 10 Mar 2015 09:29:56 -0700
> > From: Ilya Zakharevich <ilya@math.berkeley.edu>
> > Cc: 19993@debbugs.gnu.org
> > 
> > Choosing the first font which has a subset of a character “identified”
> > is not a reasonable thing to do.
> 
> See my other messages: I'm not sure we actually do that.  It's
> possible that the subrange test is used only as a filter, after we
> already identified the candidate fonts.

In fact, it's almost certainly a filter: at least my reading of
ww32font.c:font_matches_spec is that if the font spec specifies a
script, then fonts that do NOT have the corresponding subrange bit set
are rejected.





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-10 17:41                             ` Eli Zaretskii
@ 2015-03-10 20:32                               ` Ilya Zakharevich
  2015-03-11  4:28                                 ` Eli Zaretskii
  2015-03-11 19:49                               ` Ilya Zakharevich
  1 sibling, 1 reply; 35+ messages in thread
From: Ilya Zakharevich @ 2015-03-10 20:32 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 19993

On Tue, Mar 10, 2015 at 07:41:39PM +0200, Eli Zaretskii wrote:
> > > Choosing the first font which has a subset of a character “identified”
> > > is not a reasonable thing to do.
> > 
> > See my other messages: I'm not sure we actually do that.  It's
> > possible that the subrange test is used only as a filter, after we
> > already identified the candidate fonts.
> 
> In fact, it's almost certainly a filter: at least my reading of
> ww32font.c:font_matches_spec is that if the font spec specifies a
> script, then fonts that do NOT have the corresponding subrange bit set
> are rejected.

So back to the drawing board:
   • on your system
   • with Symbola installed
   • with the default configuration
I presume that Math Alphabeticals are not shown (but ARE shown when
Symbola is EXPLICITLY marked as the default font for them).

             WHY?

With my conjectures, the explanation would be that a certain other
font on the system has the Math Alphabeticals Subset “identified”, so
this font is chosen by Emacs — but in reality, this font does not
support the whole subset, so the needed glyphs are missing.  (For
example, DejaVu has Monospaced range, and nothing else. [Well, the
glyphs in the Monospaced range are totally broken, but that is
irrelevant for the current discussion!])

Without my conjecture, what would be your explanation?

Ilya





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-10 20:32                               ` Ilya Zakharevich
@ 2015-03-11  4:28                                 ` Eli Zaretskii
  0 siblings, 0 replies; 35+ messages in thread
From: Eli Zaretskii @ 2015-03-11  4:28 UTC (permalink / raw)
  To: Ilya Zakharevich; +Cc: 19993

> Date: Tue, 10 Mar 2015 13:32:24 -0700
> From: Ilya Zakharevich <ilya@math.berkeley.edu>
> Cc: 19993@debbugs.gnu.org
> 
>    • on your system
>    • with Symbola installed
>    • with the default configuration
> I presume that Math Alphabeticals are not shown (but ARE shown when
> Symbola is EXPLICITLY marked as the default font for them).

If you mean the Mathematical Alphanumeric Symbols block, then they are
indeed not shown, although I have quite a few fonts that support that
range, not just Symbola.

>              WHY?

I don't know.

> With my conjectures, the explanation would be that a certain other
> font on the system has the Math Alphabeticals Subset “identified”, so
> this font is chosen by Emacs — but in reality, this font does not
> support the whole subset, so the needed glyphs are missing.  (For
> example, DejaVu has Monospaced range, and nothing else. [Well, the
> glyphs in the Monospaced range are totally broken, but that is
> irrelevant for the current discussion!])

Did you try to uninstall DejaVu (and any other font that claims
support for this range, but doesn't really cover these characters),
and see what happens then?  If the problem persists, then this is not
the real reason.

> Without my conjecture, what would be your explanation?

I don't have one.  I could hypothesize, say, that Emacs simply lacks
some wisdom to find a font for that range, but I think you will be
much better off studying the relevant code and walking through it with
a debugger, than by asking me for explanations in these matters, about
which I know very little.





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-10 17:41                             ` Eli Zaretskii
  2015-03-10 20:32                               ` Ilya Zakharevich
@ 2015-03-11 19:49                               ` Ilya Zakharevich
  2015-03-11 20:21                                 ` Eli Zaretskii
  1 sibling, 1 reply; 35+ messages in thread
From: Ilya Zakharevich @ 2015-03-11 19:49 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 19993

On Tue, Mar 10, 2015 at 07:41:39PM +0200, Eli Zaretskii wrote:
> > > Choosing the first font which has a subset of a character “identified”
> > > is not a reasonable thing to do.
> > 
> > See my other messages: I'm not sure we actually do that.  It's
> > possible that the subrange test is used only as a filter, after we
> > already identified the candidate fonts.
> 
> In fact, it's almost certainly a filter: at least my reading of
> ww32font.c:font_matches_spec is that if the font spec specifies a
> script, then fonts that do NOT have the corresponding subrange bit set
> are rejected.

I think you have misidentified the problem.  Note that in my
“algorithm”, this condition is ALSO used as a filter.

So the real question is not whether the presence of a Subset is used
as filters, but: is

    the presence of the required character in the font

used as a filter.

Ilya





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-11 19:49                               ` Ilya Zakharevich
@ 2015-03-11 20:21                                 ` Eli Zaretskii
  2015-03-12 18:16                                   ` Eli Zaretskii
  0 siblings, 1 reply; 35+ messages in thread
From: Eli Zaretskii @ 2015-03-11 20:21 UTC (permalink / raw)
  To: Ilya Zakharevich; +Cc: 19993

> Date: Wed, 11 Mar 2015 12:49:39 -0700
> From: Ilya Zakharevich <ilya@math.berkeley.edu>
> Cc: 19993@debbugs.gnu.org
> 
> So the real question is not whether the presence of a Subset is used
> as filters, but: is
> 
>     the presence of the required character in the font
> 
> used as a filter.

When a font matches all the other constraints, then yes, it is
actually tested for whether it supports the specific character we need
to display.  See font_has_char and its callers.





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-11 20:21                                 ` Eli Zaretskii
@ 2015-03-12 18:16                                   ` Eli Zaretskii
  2015-03-13  1:52                                     ` Ilya Zakharevich
  2015-03-13  4:50                                     ` Ilya Zakharevich
  0 siblings, 2 replies; 35+ messages in thread
From: Eli Zaretskii @ 2015-03-12 18:16 UTC (permalink / raw)
  To: ilya; +Cc: 19993

> Date: Wed, 11 Mar 2015 22:21:23 +0200
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: 19993@debbugs.gnu.org
> 
> > Date: Wed, 11 Mar 2015 12:49:39 -0700
> > From: Ilya Zakharevich <ilya@math.berkeley.edu>
> > Cc: 19993@debbugs.gnu.org
> > 
> > So the real question is not whether the presence of a Subset is used
> > as filters, but: is
> > 
> >     the presence of the required character in the font
> > 
> > used as a filter.
> 
> When a font matches all the other constraints, then yes, it is
> actually tested for whether it supports the specific character we need
> to display.  See font_has_char and its callers.

I had a few minutes to spare, so I took a closer look at the code.

The problem with the Mathematical Alphanumeric Symbols block is much
more prosaic than you thought: fontset.el breaks this block into
several distinct pseudo-scripts (don't know why, perhaps for
compatibility with something on Unix), but no one has taught w32font.c
to do the same for the corresponding Unicode subrange.  So Emacs was
asking for, say, 'mathematical-italic' "script", but w32font.c was
comparing that with 'mathematical', and was rejecting the fonts that
support these characters.  This is now fixed in commit fc10058 on
master.  You should now be able to type "C-x 8 RET 1d400 RET" and see
the character displayed.

While at that, I also added the missing subranges that for some reason
unknown to me were commented out; for many of them, I could verify
that adding them makes the corresponding characters displayable by
default, where they previously weren't.  (I couldn't verify that for
some of the scripts for which I have no fonts.)  A few subranges were
left out, and I added comments explaining why.

With that out of our way, part of the problem is solved.  Part, but
not all of it.  Because it is true: Emacs searches the fonts installed
on the system mostly by requiring only that the font supports the
script to which the character belongs, but without opening the font
and checking whether the specific character we are about to display
has a glyph in the font.  Here's the crucial piece of code (from
fontset.c):

	  /* Find a font best-matching with the spec without checking
	     the support of the character C.  That checking is costly,
	     and even without the checking, the found font supports C
	     in high possibility.  */
	  font_entity = font_find_for_lface (f, face->lface,
					     FONT_DEF_SPEC (font_def), -1);

That -1 as the last argument tells font_find_for_lface to not check
support for the character.

So yes, if a font claims support for a script, but actually supports
very little of it, it is quite possible that Emacs will try to use it,
and will then be unable to display the missing characters.

I know about font search on Unix even less than I know for Windows, so
I cannot tell if on Unix we are smarter about this.  I see that
ftfont.c uses fontconfig functions to verify that the representative
character of the required script (set up on fontset.el) is part of the
charset supported by a font, but I don't know if that looks into the
font, and in any case we only have at most 1 representative character
for all but a few scripts.  So misses are still possible; or maybe I'm
missing something.

Assuming that we want to become smarter about this, we could do one or
both of the following:

  . have a database of fonts which are _not_ to be used for certain
    scripts, because it is known that their coverage is poor

  . have a more elaborate default fontset that favors specific fonts
    for scripts which these fonts are known to support well

One problem with both of these is that it's hard to recommend fonts
because many good fonts are non-free.

If it turns out that these problems are Windows-specific, the above
can be done for Windows only (like w32-standard-fontset-spec).





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-12 18:16                                   ` Eli Zaretskii
@ 2015-03-13  1:52                                     ` Ilya Zakharevich
  2015-03-13  7:34                                       ` Eli Zaretskii
  2015-03-13  4:50                                     ` Ilya Zakharevich
  1 sibling, 1 reply; 35+ messages in thread
From: Ilya Zakharevich @ 2015-03-13  1:52 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 19993

On Thu, Mar 12, 2015 at 08:16:39PM +0200, Eli Zaretskii wrote:
> support these characters.  This is now fixed in commit fc10058 on
> master.  You should now be able to type "C-x 8 RET 1d400 RET" and see
> the character displayed.
> 
> While at that, I also added the missing subranges that for some reason
> unknown to me were commented out; for many of them, I could verify
> that adding them makes the corresponding characters displayable by
> default, where they previously weren't.  (I couldn't verify that for
> some of the scripts for which I have no fonts.)  A few subranges were
> left out, and I added comments explaining why.

A lot of thanks!

> With that out of our way, part of the problem is solved.  Part, but
> not all of it.  Because it is true: Emacs searches the fonts installed
> on the system mostly by requiring only that the font supports the
> script to which the character belongs, but without opening the font
> and checking whether the specific character we are about to display
> has a glyph in the font.  Here's the crucial piece of code (from
> fontset.c):
> 
> 	  /* Find a font best-matching with the spec without checking
> 	     the support of the character C.  That checking is costly,
> 	     and even without the checking, the found font supports C
> 	     in high possibility.  */

So, this explains why U+2099, U+27e8, U+27e9 are not shown here (while
supported by a lot of fonts).  Thanks for investigating this!

> Assuming that we want to become smarter about this, we could do one or
> both of the following:
> 
>   . have a database of fonts which are _not_ to be used for certain
>     scripts, because it is known that their coverage is poor
> 
>   . have a more elaborate default fontset that favors specific fonts
>     for scripts which these fonts are known to support well
> 

Did you look into the link I provided (about how Firefox does it)?

  http://search.cpan.org/~ilyaz/UI-KeyboardLayout/lib/UI/KeyboardLayout.pm#There_is_no_way_to_show_Unicode_contents_on_Windows

As my experiments show (I did not try to read the source code) the
logic of falling back goes this way:

  • If document’s fonts can show a char, stop;
  • If (user-configurable) fallback fonts for a Subset can show a
    char, stop; 
  • If (user-configurable) universal fallback fonts can show a
    char, stop;
  • Otherwise, scan all fonts to find one supporting a char.

(The third case is the “x-unicode” pseudo-subset mentioned in the link
above.)

Emacs:
  • Supports different fallbacks for different subsets;
  • But it supports only one fallback font per character.
    (Well, it allows specifying more than one font, but as you saw,
    only one of them will be actually used — at least in the case
    when the fonts would claim having chars in all the ranges — as
    most of “good universal fonts” would do.)

The second one is a significant show-stopper, since it is very hard to
boil down things to one font.

Myself, I only use scripts with “simple shaping”, so all of my needs
are covered by 4 fonts:
   DejaVu *
   Symbola
   Junicode
   Unifont Smooth

(with Unifont Smooth last, since though I’m still working on
un-uglifying Unifont, there is a limit to algorithmic beautification,
and it is always going to be MUCH worse than all the
alternatives — when alternatives exist).

BTW, is font-family search caseless?  Since last year, the family was
changed from
  unifont
to
  Unifont
(in the unifondry’s TTF distribution).

> One problem with both of these is that it's hard to recommend fonts
> because many good fonts are non-free.

For simple rendering (no shaping), there is a lot of possibilities.

Ilya





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-12 18:16                                   ` Eli Zaretskii
  2015-03-13  1:52                                     ` Ilya Zakharevich
@ 2015-03-13  4:50                                     ` Ilya Zakharevich
  2015-03-13  6:16                                       ` Eli Zaretskii
  1 sibling, 1 reply; 35+ messages in thread
From: Ilya Zakharevich @ 2015-03-13  4:50 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 19993

On Thu, Mar 12, 2015 at 08:16:39PM +0200, Eli Zaretskii wrote:
> While at that, I also added the missing subranges that for some reason
> unknown to me were commented out; for many of them, I could verify
> that adding them makes the corresponding characters displayable by
> default, where they previously weren't.  (I couldn't verify that for
> some of the scripts for which I have no fonts.)  A few subranges were
> left out, and I added comments explaining why.

BTW, if you downloaded Unifont Smooth, then in 7zip file, in build
subdirectory, there is file coverage-all.txt.  It contains all
characters supported by Unifont (or Unifont Smooth); it is there for
exactly this purpose — to make it easier to debug font selection
problems.

Hope this helps,
Ilya





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-13  4:50                                     ` Ilya Zakharevich
@ 2015-03-13  6:16                                       ` Eli Zaretskii
  0 siblings, 0 replies; 35+ messages in thread
From: Eli Zaretskii @ 2015-03-13  6:16 UTC (permalink / raw)
  To: Ilya Zakharevich; +Cc: 19993

> Date: Thu, 12 Mar 2015 21:50:22 -0700
> From: Ilya Zakharevich <ilya@math.berkeley.edu>
> Cc: 19993@debbugs.gnu.org
> 
> On Thu, Mar 12, 2015 at 08:16:39PM +0200, Eli Zaretskii wrote:
> > While at that, I also added the missing subranges that for some reason
> > unknown to me were commented out; for many of them, I could verify
> > that adding them makes the corresponding characters displayable by
> > default, where they previously weren't.  (I couldn't verify that for
> > some of the scripts for which I have no fonts.)  A few subranges were
> > left out, and I added comments explaining why.
> 
> BTW, if you downloaded Unifont Smooth, then in 7zip file, in build
> subdirectory, there is file coverage-all.txt.  It contains all
> characters supported by Unifont (or Unifont Smooth); it is there for
> exactly this purpose — to make it easier to debug font selection
> problems.

Thanks.  I have BabelMap installed, and it does this job brilliantly,
for all the installed fonts.





^ permalink raw reply	[flat|nested] 35+ messages in thread

* bug#19993: 25.0.50; Unicode fonts defective on Windows
  2015-03-13  1:52                                     ` Ilya Zakharevich
@ 2015-03-13  7:34                                       ` Eli Zaretskii
  0 siblings, 0 replies; 35+ messages in thread
From: Eli Zaretskii @ 2015-03-13  7:34 UTC (permalink / raw)
  To: Ilya Zakharevich; +Cc: 19993

> Date: Thu, 12 Mar 2015 18:52:15 -0700
> From: Ilya Zakharevich <ilya@math.berkeley.edu>
> Cc: 19993@debbugs.gnu.org
> 
> > 	  /* Find a font best-matching with the spec without checking
> > 	     the support of the character C.  That checking is costly,
> > 	     and even without the checking, the found font supports C
> > 	     in high possibility.  */
> 
> So, this explains why U+2099, U+27e8, U+27e9 are not shown here (while
> supported by a lot of fonts).

I do have these displayed (by STIX, not Symbola, but that's just
because STIX was probably examined first).  Did you try that with the
latest master?  Or maybe it's DejaVu at work, see below.

> Did you look into the link I provided (about how Firefox does it)?
> 
>   http://search.cpan.org/~ilyaz/UI-KeyboardLayout/lib/UI/KeyboardLayout.pm#There_is_no_way_to_show_Unicode_contents_on_Windows
> 
> As my experiments show (I did not try to read the source code) the
> logic of falling back goes this way:
> 
>   • If document’s fonts can show a char, stop;
>   • If (user-configurable) fallback fonts for a Subset can show a
>     char, stop; 
>   • If (user-configurable) universal fallback fonts can show a
>     char, stop;
>   • Otherwise, scan all fonts to find one supporting a char.

Emacs already does the first 3 of these.  It also does the 4th, but
without actually opening the fonts.  Changing that to actually open
the fonts is beyond my pay grade.  Given that the fontsets machinery
is so easy to tweak to fix specific problems (once you understand how
to use fontsets), it sounds to me that providing a smarter default
fontset is a much easier way of having Emacs DTRT out of the box.
Also faster, because fontests are checked before scanning all the
fonts and need much less processing.  After all, free fonts with good
coverage of the Unicode codepoints are very few, well-known, and
unlikely to change much in the future.

> Emacs:
>   • Supports different fallbacks for different subsets;
>   • But it supports only one fallback font per character.

Not per character, per script, or Unicode block.  And it's not really
a fallback, it's the result of searching all the installed fonts.
"Fallback" in Emacs is defined by fontsets; a fontset can in principle
define a different fallback font for each codepoint.

>     (Well, it allows specifying more than one font, but as you saw,
>     only one of them will be actually used — at least in the case
>     when the fonts would claim having chars in all the ranges — as
>     most of “good universal fonts” would do.)

There's no problem to specify different fonts for specific characters
belonging to the same Unicode block.  So I don't see any problem here,
not with what can be defined using fontsets.

> The second one is a significant show-stopper, since it is very hard to
> boil down things to one font.

It can be handled in one of the two ways I suggested:

  1) Have the default fontset do this, based on expert knowledge of
     problems with existing fonts and characters.  This can be done
     today by simply augmenting the default fontset.

  2) Add a data base of "bad" fonts that should be rejected for
     certain ranges of codepoints, even if they claim support for
     the corresponding Unicode blocks.  This might need additional
     code to be added (although it's possible that fontsets already
     support that as well -- see the ADD argument of set-fontset-font,
     whose semantics is not explained well enough).

> Myself, I only use scripts with “simple shaping”, so all of my needs
> are covered by 4 fonts:
>    DejaVu *
>    Symbola
>    Junicode
>    Unifont Smooth

I tried DejaVu, but recently uninstalled it, because it masked too
many characters for which it falsely claimed support (including the
Mathematical Alphanumeric Symbols, I think).  What do you need it for?

Also, Quivira has a very good coverage of rare blocks.

> BTW, is font-family search caseless?

I think so.

> > One problem with both of these is that it's hard to recommend fonts
> > because many good fonts are non-free.
> 
> For simple rendering (no shaping), there is a lot of possibilities.

We only need a few popular ones.





^ permalink raw reply	[flat|nested] 35+ messages in thread

end of thread, other threads:[~2015-03-13  7:34 UTC | newest]

Thread overview: 35+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-03-03 22:02 bug#19993: 25.0.50; Unicode fonts defective on Windows Ilya Zakharevich
2015-03-04 17:59 ` Eli Zaretskii
2015-03-05 21:49   ` Ilya Zakharevich
2015-03-05 22:05   ` Ilya Zakharevich
2015-03-06 10:45     ` Eli Zaretskii
2015-03-06 11:38       ` Ilya Zakharevich
2015-03-06 14:00         ` Eli Zaretskii
2015-03-06 16:21           ` Ilya Zakharevich
2015-03-06 20:11             ` Eli Zaretskii
2015-03-06 21:12               ` Eli Zaretskii
2015-03-06 22:13                 ` Ilya Zakharevich
2015-03-07  8:18                   ` Eli Zaretskii
2015-03-08  7:45                     ` Ilya Zakharevich
2015-03-08 15:52                       ` Eli Zaretskii
2015-03-08  8:38                     ` Ilya Zakharevich
2015-03-08  8:46                       ` Ilya Zakharevich
2015-03-10 16:29                         ` Ilya Zakharevich
2015-03-10 17:05                           ` Eli Zaretskii
2015-03-10 17:41                             ` Eli Zaretskii
2015-03-10 20:32                               ` Ilya Zakharevich
2015-03-11  4:28                                 ` Eli Zaretskii
2015-03-11 19:49                               ` Ilya Zakharevich
2015-03-11 20:21                                 ` Eli Zaretskii
2015-03-12 18:16                                   ` Eli Zaretskii
2015-03-13  1:52                                     ` Ilya Zakharevich
2015-03-13  7:34                                       ` Eli Zaretskii
2015-03-13  4:50                                     ` Ilya Zakharevich
2015-03-13  6:16                                       ` Eli Zaretskii
2015-03-08 15:55                       ` Eli Zaretskii
2015-03-06 22:08               ` Ilya Zakharevich
2015-03-07  8:14                 ` Eli Zaretskii
2015-03-08  7:41                   ` Ilya Zakharevich
2015-03-08 15:51                     ` Eli Zaretskii
2015-03-08 16:20                       ` Ilya Zakharevich
2015-03-08 17:01                         ` Eli Zaretskii

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).