Subject: 25.1; With `--font 7x13', wrong font is used for Unicode characters

From: Vladimir Panteleev <[email-masked]>
Date: Wed, 28 Sep 2016 16:34:15 +0000

On a GNU/Linux system running X.Org, if Emacs is set to use the X11
fixed font 7x13 (e.g. by specifying `--font 7x13' on the command line),
Emacs will use the incorrect font for Unicode (non-ASCII)
characters. Specifically:

- US-ASCII characters are rendered using the correct font.

- Cyrillic (e.g. letters of the Russian alphabet) and some other
  characters (e.g. '¢' (CENT SIGN)) are rendered with the 12x13 font
  instead of the indicated 7x13 font.

- Some characters, e.g. '·' (MIDDLE DOT) and '»' (RIGHT-POINTING DOUBLE
  ANGLE QUOTATION MARK) are rendered with an 8x13 font. This causes
  enabling whitespace-mode to misalign text.

Screenshots can be seen here:

http://emacs.stackexchange.com/questions/20278/unicode-in-x-bitmap-font-uses-a-different-font

I have found that evaluating the Sexpr:

(set-fontset-font "fontset-default" 'unicode "-misc-fixed-*-*-*--13-*-*-*-*-70-iso10646-1")

... causes characters with Unicode codepoints above 256 (incl. Cyrillic
characters) to be rendered with the correct font, but not those in the
codepoint range 128-255. Running set-fontset-font with '(128 . 255) as
the TARGET parameter does not seem to have any effect.

The problem can also be observed in Emacs version 24.5.  Other graphical
applications on the same system using this font do not exhibit this
behavior.

-----------------------------------------------------------------------

In GNU Emacs 25.1.1 (x86_64-unknown-linux-gnu, GTK+ Version 3.20.9)
 of 2016-09-18 built on juergen
Windowing system distributor 'The X.Org Foundation', version 11.0.11804000
System Description:	Arch Linux

Configured using:
 'configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib
 --localstatedir=/var --with-x-toolkit=gtk3 --with-xft
 'CFLAGS=-march=x86-64 -mtune=generic -O2 -pipe
 -fstack-protector-strong' CPPFLAGS=-D_FORTIFY_SOURCE=2
 LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro'

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GCONF GSETTINGS
NOTIFY ACL GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11

Important settings:
  value of $LC_TIME: en_DK.UTF-8
  value of $LANG: en_US.UTF8
  locale-coding-system: utf-8-unix

Major mode: Emacs-Lisp

Minor modes in effect:
  global-semanticdb-minor-mode: t
  global-semantic-idle-scheduler-mode: t
  semantic-mode: t
  which-key-mode: t
  flyspell-mode: t
  cua-mode: t
  magit-auto-revert-mode: t
  global-git-commit-mode: t
  global-diff-hl-mode: t
  diff-hl-mode: t
  diff-auto-refine-mode: t
  delete-selection-mode: t
  global-flycheck-mode: t
  flycheck-mode: t
  global-company-mode: t
  company-mode: t
  highlight-defined-mode: t
  recentf-mode: t
  highlight-symbol-mode: t
  helm-mode: t
  shell-dirtrack-mode: t
  async-bytecomp-package-mode: t
  show-paren-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent messages:
Mark set [4 times]
next-line: End of buffer [69 times]
Mark set [3 times]
previous-line: Beginning of buffer [59 times]
You should have a section marked ";;; Commentary:"

The first line should be of the form: ";;; package --- Summary"
Undo! [25 times]
Saving file /home/vladimir/.emacs.d/recentf...
Wrote /home/vladimir/.emacs.d/recentf

Load-path shadows:
/home/vladimir/.emacs.d/opt/bbcode-mode/bbcode-mode hides /home/vladimir/.emacs.d/elpa/bbcode-mode-20141103.1341/bbcode-mode
/home/vladimir/.emacs.d/opt/cil-mode/cil-mode hides /home/vladimir/.emacs.d/elpa/cil-mode-20160622.730/cil-mode
/home/vladimir/.emacs.d/opt/company-dcd/company-dcd hides /home/vladimir/.emacs.d/elpa/company-dcd-20160806.1852/company-dcd
/home/vladimir/.emacs.d/opt/Emacs-D-Mode/d-mode hides /home/vladimir/.emacs.d/elpa/d-mode-20160504.955/d-mode
/home/vladimir/.emacs.d/elpa/editorconfig-20160904.1508/editorconfig-core hides /home/vladimir/.emacs.d/elpa/editorconfig-core-20160212.106/editorconfig-core
/home/vladimir/.emacs.d/elpa/editorconfig-20160904.1508/editorconfig-core-handle hides /home/vladimir/.emacs.d/elpa/editorconfig-core-20160212.106/editorconfig-core-handle
/home/vladimir/.emacs.d/elpa/editorconfig-20160904.1508/editorconfig-fnmatch hides /home/vladimir/.emacs.d/elpa/editorconfig-fnmatch-20160212.106/editorconfig-fnmatch
/home/vladimir/.emacs.d/opt/flycheck/flycheck hides /home/vladimir/.emacs.d/elpa/flycheck-20160921.227/flycheck
/home/vladimir/.emacs.d/opt/flycheck/flycheck-ert hides /home/vladimir/.emacs.d/elpa/flycheck-20160921.227/flycheck-ert
/home/vladimir/.emacs.d/opt/flycheck/flycheck-buttercup hides /home/vladimir/.emacs.d/elpa/flycheck-20160921.227/flycheck-buttercup
/home/vladimir/.emacs.d/opt/pov-mode/pov-mode hides /home/vladimir/.emacs.d/elpa/pov-mode-20120825.716/pov-mode
/home/vladimir/.emacs.d/opt/pov-mode/pov-mode-pkg hides /home/vladimir/.emacs.d/elpa/pov-mode-20120825.716/pov-mode-pkg
/home/vladimir/.emacs.d/elpa/seq-2.16/seq hides /usr/share/emacs/25.1/lisp/emacs-lisp/seq

Features:
(shadow mail-extr emacsbug sendmail semantic/tag-write org org-macro
org-footnote org-pcomplete org-list org-faces org-entities org-version
ob-emacs-lisp ob ob-tangle ob-ref ob-lob ob-table ob-exp org-src ob-keys
ob-comint ob-core ob-eval org-compat org-macs org-loaddefs cal-menu
calendar cal-loaddefs semantic/edit semantic/db-typecache semantic/ia
semantic/senator semantic/tag-file semantic/db-file data-debug
cedet-files semantic/bovine/c semantic/decorate/include
semantic/decorate/mode semantic/decorate pulse hideif
semantic/bovine/c-by semantic/lex-spp semantic/bovine/gcc semantic/dep
semantic/bovine semantic/analyze/refs semantic/db-find semantic/db-ref
semantic/analyze semantic/sort semantic/scope semantic/analyze/fcn
semantic/db-mode semantic/db eieio-base semantic/idle semantic/format
ezimage semantic/tag-ls semantic/ctxt magit-extras linum gitignore-mode
conf-mode rect graphviz-dot-mode sort helm-command helm-elisp helm-eval
edebug helm-git-grep semantic/find helm-semantic helm-imenu imenu
semantic/util-modes semantic/util semantic semantic/tag semantic/lex
semantic/fw mode-local cedet pkgbuild-mode sh-script smie executable
d-mode derived cc-langs disp-table whitespace misearch multi-isearch
winner filecache ido copyright vc-git company-oddmuse company-keywords
company-etags etags xref project company-gtags company-dabbrev-code
company-dabbrev company-files company-capf company-cmake company-xcode
company-clang company-semantic company-eclim company-template
company-css company-nxml company-bbdb which-key my-stuff face-remap
my-keys smartparens-python python markdown-mode noutline outline
make-mode mediawiki url-cache mm-url gnus gnus-ems nnheader url-http tls
gnutls url-auth url-gw flyspell ispell move-text cua-base
my-persistent-selection my-prefs magit-blame magit-stash magit-bisect
magit-remote magit-commit magit-sequence magit magit-apply magit-wip
magit-log magit-diff smerge-mode magit-core magit-autorevert autorevert
filenotify magit-process magit-popup magit-mode magit-git crm
magit-section magit-utils git-commit log-edit message idna rfc822 mml
mml-sec epg mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047
rfc2045 ietf-drums mailabbrev mail-utils gmm-utils mailheader pcvs-util
add-log with-editor tramp-sh smart-tabs-mode cc-mode cc-fonts cc-guess
cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs projectile
grep ibuf-ext ibuffer diff-hl vc-dir ewoc vc vc-dispatcher diff-mode
company-dcd ivy lv delsel popwin flycheck-dmd-dub f s flycheck find-func
subr-x json map yasnippet company highlight-defined cil-mode
smartparens-config smartparens dash recentf tree-widget wid-edit
highlight-symbol smart-mode-line-dark-theme smart-mode-line
rich-minority helm-mode helm-files rx image-dired tramp tramp-compat
tramp-loaddefs trampver ucs-normalize shell pcomplete format-spec
dired-x dired-aux ffap thingatpt helm-buffers helm-elscreen helm-tags
helm-bookmark helm-adaptive helm-info bookmark pp helm-locate helm-grep
helm-regexp helm-external helm-net browse-url xml url url-proxy
url-privacy url-expand url-methods url-history url-cookie url-domsuf
url-util url-parse auth-source gnus-util mm-util help-fns mail-prsvr
password-cache url-vars mailcap helm-utils compile comint ansi-color
ring helm-help helm-types helm easy-mmode helm-source eieio-compat eieio
eieio-core helm-multi-match helm-lib dired helm-config helm-easymenu
async-bytecomp advice async saveplace my-recent my-packages my-server
server time-date deeper-blue-theme paren cus-start cus-load finder-inf
edmacro kmacro cl-seq cl-macs cl info package epg-config seq byte-opt gv
bytecomp byte-compile cl-extra help-mode easymenu cconv cl-loaddefs
pcase cl-lib mule-util tooltip eldoc electric uniquify ediff-hook
vc-hooks lisp-float-type mwheel x-win term/common-win x-dnd 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
cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai
tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian
slovak czech european ethiopic indian cyrillic chinese charscript
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 dbusbind inotify
dynamic-setting system-font-setting font-render-setting move-toolbar gtk
x-toolkit x multi-tty make-network-process emacs)

Memory information:
((conses 16 858192 556079)
 (symbols 48 60675 15)
 (miscs 40 3397 8168)
 (strings 32 187937 240917)
 (string-bytes 1 5200713)
 (vectors 16 104156)
 (vector-slots 8 2151017 320756)
 (floats 8 805 1255)
 (intervals 56 10754 21079)
 (buffers 976 71))