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

From: Ilya Zakharevich <[email-masked]>
Date: Tue, 3 Mar 2015 14:02:28 -0800

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