unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#53924: 26.1; fontification sometimes fails for some characters despite available glyphs
@ 2022-02-10 19:02 Greg A. Woods
  2022-02-10 20:21 ` Eli Zaretskii
       [not found] ` <handler.53924.B.164452023325832.ack@debbugs.gnu.org>
  0 siblings, 2 replies; 15+ messages in thread
From: Greg A. Woods @ 2022-02-10 19:02 UTC (permalink / raw)
  To: 53924

[-- Attachment #1: Type: text/plain, Size: 54558 bytes --]

Emacs fails to display all available glyphs for some fonts, and in some
cases any available glyphs for some fonts.

Whether this is Emacs' fault or some bug in the fonts themselves, I am
as yet unsure.  I also have a package called `unicode-fonts' installed
(from MELPA), and it may somehow be involved, though I hope not, since
it claims to avoid remapping the "Basic Latin" Unicode block (and
others, including related "Latin*" blocks.

For example the following works fine, e.g. when evaluated in the
*scratch* buffer, i.e. it shows the sample text correctly rendered with
glyphs from the desired font (visually obvious, but also as confirmed by
`describe-char'):

(insert (propertize "The quick brown fox\n" 'font-lock-face
		    '(:family "valencia"
			      :weight medium
			      :slant r)))

However changing the font family name as follows produces text in the
default frame font (visually obvious, but also as confirmed by
`describe-char'):

(insert (propertize "The quick brown fox\n" 'font-lock-face
		    '(:family "unifrakturmaguntia"
			      :weight medium
			      :slant r)))

Interestingly `describe-char' claims in both cases that the texts have
properties including the `font-lock-face' property with the correct font
family named, as well as the `fontified' property with a value of t.

Even more interestingly, expanding the sample text to include all
iso8859-1 characters shows the correct glyphs for all but the ASCII
characters!  (visually obvious, but also as confirmed by
`describe-char')

Both fonts are confirmed to be correctly installed and available to the
X11 server with both xfontsel and xlsfonts.


The first font, "Valencia" is a TTF font installed from the UrbanRenewal
fonts:

	https://www.kreativekorp.com/software/fonts/urbanrenewal.shtml

$ file /opt/pkg/share/fonts/X11/TTF/Valencia.ttf
/opt/pkg/share/fonts/X11/TTF/Valencia.ttf: TrueType Font data, 13 tables, 1st "FFTM", 14 names, Macintosh


The second font, "UnifrakturMaguntia" is installed from:

	http://unifraktur.sourceforge.net/maguntia.html

$ file /opt/pkg/share/fonts/X11/TTF/UnifrakturMaguntia.ttf
/opt/pkg/share/fonts/X11/TTF/UnifrakturMaguntia.ttf: TrueType Font data, 18 tables, 1st "FFTM", 20 names, Macintosh, Copyright (c) 2010-2016 j. 'mach' wust, Gerrit Ansmann, Georg Duffner with Reserved Font Name Un


However these are but two examples of several where either the ASCII
subset, or all, characters from the font, are not rendered by Emacs.


I use the following code to show me sample text in all available font
families:

(defun show-all-font-families (&optional sample-text)
  "Show SAMPLE-TEXT (by default `list-faces-sample-text') in
'roman', 'bold', 'italic', and 'bold italic' for each font family
known to `font-family-list'.

Note you can seem some strange results for fonts that don't have
each of the requested weight and slant forms.  Sometimes
proportional glyphs will even be substituted for mono-spaced
glyphs!  Sometimes a glyph from a different font (the default
font?) will be substituted even when the requested font is
available with all the requested attributes, e.g. 'office code
pro'.  (Perhaps because it is _only_ avaliable with the requested
attributes, but no others?)

Also some proportional fonts will show up despite only
mono-spaced fonts being selected.  Perhaps spacing is ignored
when requesting a font?  Note even `x-list-fonts' warns that:

    Fonts Emacs can't use may or may not be excluded...

N.B. WARNING:  This code may try to display fonts that cannot be
opened and as a result will crash Emacs!  Worse yet it can get
stuck rendering fonts and if killed cause the X11 server to go
into a CPU-bound loop that may take hours to resolve!  Kill it
sooner than later!  See the exclusion of the 'droid' fonts.

(Derived from an example on the EmacsWiki.)"
  (interactive (and current-prefix-arg
		    (list (read-string
			   "Sample text:"
			   ;; this default text is just ASCII
			   ;; xxx should it be iso8859-1, but how to do that?
			   "ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789
abcdefghijklmnopqrstuvwxyz
`~!@#$%^&*()_+-={}|[]\\:\"\;'<>?,./"))))
  (let ((str (if sample-text
		 sample-text
	       list-faces-sample-text))
	(font-families (cl-remove-duplicates
			(sort (font-family-list)
			      (lambda(x y) (string> (upcase x) (upcase y))))
			:test 'cl-equalp)))
    (with-help-window "*Font-Families*"
      (with-current-buffer standard-output
	(dolist (ff font-families)
	  (let* ((fs   (font-spec :family ff
				  ;; xxx :spacing is (sometimes!) ignored!
				  :weight 'medium :slant 'r ;:spacing 'm
				  :registry 'iso10646-1))
		 (xlfd (font-xlfd-name fs)))
	    ;; XXX the "droid*" fonts are broken???
	    (if (and (not (string-match "droid" ff))
		     (not (string-match "italic" ff)) ; xxx rarely in all other styles
		     (not (string-match "bold" ff)) ; xxx rarely in all other styles
		     (not (string-match ".pcf" ff)) ; xxx usually bitmap cursors
		     (find-font fs)
		     (font-info xlfd)
		     (if (eq window-system 'x)
			 (x-list-fonts xlfd) ; xxx hmmm...
		       t))
		;; xxx XXX N.B.:  without escaping the semicolons emacs can't
		;; parse these expressions backwards!!!
		(insert "\; " ff ":" xlfd "\n\;\n"
			"\;\t" ff " (plain):\n\;\n"
			(propertize str 'font-lock-face
				    `(:font ,fs :weight medium))
			"\n\;\n\;\t" ff " [bold]:\n\;\n"
			(propertize str 'font-lock-face
				    `(:family ,ff :weight bold))
			"\n\;\n\;\t " ff " [italic]:\n\;\n"
			(propertize str 'font-lock-face
				    `(:family ,ff :weight medium :slant italic))
			"\n\;\n\;\t " ff " [bold italic]:\n\;\n"
			(propertize str 'font-lock-face
				    `(:family ,ff :weight bold :slant italic))
			"\n\;\n\f\n")))
	  (goto-char (point-min))
	  (if (fboundp 'form-feed-mode)
	      (form-feed-mode nil)))))))

(setq list-faces-sample-text
      ;; The first two lines are chars that must all be easily distinguisable as
      ;; unique for programming (except maybe the last two, the first of which
      ;; is the SOFT HYPHEN, which when displayed should probably look just like
      ;; the HYPHEN-MINUS that follows it).  The sixth line is made up of the
      ;; ASCII punctuation characters gathered in value-order.  The
      ;; seventh-ninth lines are value-order iso8859-1 characters 0x80-0xFF.
      "~`´¨'\"1lIi|¦!¡/DØ0Oo{[(<«»>)]},.;:?¿
©®aª2²3³8BuµpP¶#¤£$¢¥°.·,¸±+=¬~_--
ABCDEFGHIJKLMNOPQRSTUVWXYZ /0123456789
abcdefghijklmnopqrstuvwxyz £©µÀÆÖÞßéöÿ
 !\"#$%&'()*+,-./:;<->?[\\]^_`{|}~
 ¡¢£¤¥¦§¨©ª«¬-®¯°±²³´µ¶·¸¹º»¼½¾¿
ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞß
àáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ
                        
                        
                                 
                                 
                
                                        
                                          
                                £   
                     
                                   
                             
                            
                
          ,           
           ,           
")


In GNU Emacs 26.1 (build 1, x86_64--netbsd, GTK+ Version 2.24.32)
 of 2021-11-10 built on b2
Windowing system distributor 'The X.Org Foundation', version 11.0.12011000
Recent messages:
Mark set
 [3 times]
Mark set [2 times]

Use +,-,0 for further adjustment [2 times]
 [2 times]
delete-window: Attempt to delete minibuffer or sole ordinary window
Use +,-,0 for further adjustment
Making completion list... [4 times]

Configured using:
 'configure
 --srcdir=/var/package-obj/root/editors/emacs26/work/emacs-26.1
 --localstatedir=/var --disable-autodepend --without-dbus
 --x-includes=/usr/X11R7/include --x-libraries=/usr/X11R7/lib
 --without-gconf --without-imagemagick --without-xaw3d
 --with-x-toolkit=gtk2 --enable-static --enable-shared
 --disable-dependency-tracking --prefix=/usr/pkg --build=x86_64--netbsd
 --host=x86_64--netbsd --sysconfdir=/etc --localstatedir=/var
 --infodir=/usr/pkg/share/info --mandir=/usr/pkg/share/man 'CFLAGS=-O2
 -g -D_FORTIFY_SOURCE=2 -pipe -I/usr/pkg/include -I/usr/include
 -I/usr/X11R7/include -I/usr/X11R7/include/libdrm
 -I/usr/X11R7/include/freetype2 -I/usr/pkg/include/glib/glib-2.0
 -I/usr/pkg/include/glib/gio-unix-2.0 -I/usr/pkg/lib/glib-2.0/include'
 'CPPFLAGS=-DTERMINFO -I/usr/pkg/include -I/usr/include
 -I/usr/X11R7/include -I/usr/X11R7/include/libdrm
 -I/usr/X11R7/include/freetype2 -I/usr/pkg/include/glib/glib-2.0
 -I/usr/pkg/include/glib/gio-unix-2.0 -I/usr/pkg/lib/glib-2.0/include'
 'LDFLAGS=-L/usr/pkg/lib -L/usr/lib -Wl,-R/usr/lib -Wl,-R/usr/pkg/lib
 -L/usr/X11R7/lib -Wl,-R/usr/X11R7/lib''

Configured features:
XPM JPEG TIFF GIF PNG RSVG SOUND GSETTINGS NOTIFY ACL GNUTLS LIBXML2
FREETYPE M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK2 X11 THREADS

Important settings:
  value of $LC_COLLATE: C
  value of $LC_CTYPE: en_US.UTF-8
  value of $LC_NUMERIC: en_CA.UTF-8
  value of $LC_TIME: C
  locale-coding-system: utf-8-unix

Major mode: Help

Minor modes in effect:
  form-feed-mode: t
  auto-image-file-mode: t
  timeclock-mode-line-display: t
  normal-erase-is-backspace-mode: t
  show-paren-mode: t
  diff-auto-refine-mode: t
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  shell-dirtrack-mode: t
  override-global-mode: t
  display-time-mode: t
  tooltip-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  buffer-read-only: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
/home/more/woods/.emacs.d/packages-26.1/apel-20201106.2221/install hides /usr/local/share/emacs/site-lisp/apel/install
/home/more/woods/.emacs.d/packages-26.1/apel-20201106.2221/filename hides /usr/local/share/emacs/site-lisp/apel/filename
/home/more/woods/.emacs.d/packages-26.1/apel-20201106.2221/path-util hides /usr/local/share/emacs/site-lisp/apel/path-util
/home/more/woods/.emacs.d/packages-26.1/apel-20201106.2221/calist hides /usr/local/share/emacs/site-lisp/apel/calist
/home/more/woods/.emacs.d/packages-26.1/apel-20201106.2221/alist hides /usr/local/share/emacs/site-lisp/apel/alist
/home/more/woods/.emacs.d/packages-26.1/apel-20201106.2221/path-util hides /usr/local/share/emacs/site-lisp/apel-OLD/path-util
/home/more/woods/.emacs.d/packages-26.1/apel-20201106.2221/install hides /usr/local/share/emacs/site-lisp/apel-OLD/install
/home/more/woods/.emacs.d/packages-26.1/apel-20201106.2221/filename hides /usr/local/share/emacs/site-lisp/apel-OLD/filename
/home/more/woods/.emacs.d/packages-26.1/apel-20201106.2221/calist hides /usr/local/share/emacs/site-lisp/apel-OLD/calist
/home/more/woods/.emacs.d/packages-26.1/apel-20201106.2221/alist hides /usr/local/share/emacs/site-lisp/apel-OLD/alist
/home/more/woods/.emacs.d/packages-26.1/apel-20201106.2221/inv-23 hides /usr/local/share/emacs/site-lisp/emu/inv-23
/home/more/woods/.emacs.d/packages-26.1/apel-20201106.2221/static hides /usr/local/share/emacs/site-lisp/emu/static
/home/more/woods/.emacs.d/packages-26.1/apel-20201106.2221/richtext hides /usr/local/share/emacs/site-lisp/emu/richtext
/home/more/woods/.emacs.d/packages-26.1/apel-20201106.2221/pym hides /usr/local/share/emacs/site-lisp/emu/pym
/home/more/woods/.emacs.d/packages-26.1/apel-20201106.2221/product hides /usr/local/share/emacs/site-lisp/emu/product
/home/more/woods/.emacs.d/packages-26.1/apel-20201106.2221/poem hides /usr/local/share/emacs/site-lisp/emu/poem
/home/more/woods/.emacs.d/packages-26.1/apel-20201106.2221/poem-e20_3 hides /usr/local/share/emacs/site-lisp/emu/poem-e20_3
/home/more/woods/.emacs.d/packages-26.1/apel-20201106.2221/poem-e20 hides /usr/local/share/emacs/site-lisp/emu/poem-e20
/home/more/woods/.emacs.d/packages-26.1/apel-20201106.2221/poe hides /usr/local/share/emacs/site-lisp/emu/poe
/home/more/woods/.emacs.d/packages-26.1/apel-20201106.2221/pcustom hides /usr/local/share/emacs/site-lisp/emu/pcustom
/home/more/woods/.emacs.d/packages-26.1/apel-20201106.2221/pces hides /usr/local/share/emacs/site-lisp/emu/pces
/home/more/woods/.emacs.d/packages-26.1/apel-20201106.2221/pces-e20 hides /usr/local/share/emacs/site-lisp/emu/pces-e20
/home/more/woods/.emacs.d/packages-26.1/apel-20201106.2221/pces-20 hides /usr/local/share/emacs/site-lisp/emu/pces-20
/home/more/woods/.emacs.d/packages-26.1/apel-20201106.2221/pccl hides /usr/local/share/emacs/site-lisp/emu/pccl
/home/more/woods/.emacs.d/packages-26.1/apel-20201106.2221/pccl-20 hides /usr/local/share/emacs/site-lisp/emu/pccl-20
/home/more/woods/.emacs.d/packages-26.1/apel-20201106.2221/mule-caesar hides /usr/local/share/emacs/site-lisp/emu/mule-caesar
/home/more/woods/.emacs.d/packages-26.1/apel-20201106.2221/mcs-e20 hides /usr/local/share/emacs/site-lisp/emu/mcs-e20
/home/more/woods/.emacs.d/packages-26.1/apel-20201106.2221/mcs-20 hides /usr/local/share/emacs/site-lisp/emu/mcs-20
/home/more/woods/.emacs.d/packages-26.1/apel-20201106.2221/mcharset hides /usr/local/share/emacs/site-lisp/emu/mcharset
/home/more/woods/.emacs.d/packages-26.1/apel-20201106.2221/invisible hides /usr/local/share/emacs/site-lisp/emu/invisible
/home/more/woods/.emacs.d/packages-26.1/apel-20201106.2221/emu hides /usr/local/share/emacs/site-lisp/emu/emu
/home/more/woods/.emacs.d/packages-26.1/apel-20201106.2221/broken hides /usr/local/share/emacs/site-lisp/emu/broken
/home/more/woods/.emacs.d/packages-26.1/apel-20201106.2221/apel-ver hides /usr/local/share/emacs/site-lisp/emu/apel-ver
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/qmtp hides /usr/local/share/emacs/site-lisp/flim/qmtp
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/smtp hides /usr/local/share/emacs/site-lisp/flim/smtp
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/sasl-scram hides /usr/local/share/emacs/site-lisp/flim/sasl-scram
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/sasl hides /usr/local/share/emacs/site-lisp/flim/sasl
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mime-conf hides /usr/local/share/emacs/site-lisp/flim/mime-conf
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mmexternal hides /usr/local/share/emacs/site-lisp/flim/mmexternal
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mmcooked hides /usr/local/share/emacs/site-lisp/flim/mmcooked
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mmbuffer hides /usr/local/share/emacs/site-lisp/flim/mmbuffer
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mmgeneric hides /usr/local/share/emacs/site-lisp/flim/mmgeneric
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mime-parse hides /usr/local/share/emacs/site-lisp/flim/mime-parse
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mime hides /usr/local/share/emacs/site-lisp/flim/mime
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/eword-encode hides /usr/local/share/emacs/site-lisp/flim/eword-encode
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/eword-decode hides /usr/local/share/emacs/site-lisp/flim/eword-decode
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mel-g hides /usr/local/share/emacs/site-lisp/flim/mel-g
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mel-u hides /usr/local/share/emacs/site-lisp/flim/mel-u
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mel-q hides /usr/local/share/emacs/site-lisp/flim/mel-q
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mel hides /usr/local/share/emacs/site-lisp/flim/mel
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mime-def hides /usr/local/share/emacs/site-lisp/flim/mime-def
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/lunit hides /usr/local/share/emacs/site-lisp/flim/lunit
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/luna hides /usr/local/share/emacs/site-lisp/flim/luna
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/std11 hides /usr/local/share/emacs/site-lisp/flim/std11
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mel-q-ccl hides /usr/local/share/emacs/site-lisp/flim/mel-q-ccl
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/hmac-sha1 hides /usr/local/share/emacs/site-lisp/flim/hmac-sha1
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/sha1 hides /usr/local/share/emacs/site-lisp/flim/sha1
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/md5 hides /usr/local/share/emacs/site-lisp/flim/md5
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/std11 hides /usr/local/share/emacs/site-lisp/flim-OLD/std11
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/smtp hides /usr/local/share/emacs/site-lisp/flim-OLD/smtp
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/sha1 hides /usr/local/share/emacs/site-lisp/flim-OLD/sha1
/usr/local/share/emacs/site-lisp/flim/sha1-el hides /usr/local/share/emacs/site-lisp/flim-OLD/sha1-el
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/sasl hides /usr/local/share/emacs/site-lisp/flim-OLD/sasl
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/sasl-scram hides /usr/local/share/emacs/site-lisp/flim-OLD/sasl-scram
/usr/local/share/emacs/site-lisp/flim/sasl-ntlm hides /usr/local/share/emacs/site-lisp/flim-OLD/sasl-ntlm
/usr/local/share/emacs/site-lisp/flim/sasl-digest hides /usr/local/share/emacs/site-lisp/flim-OLD/sasl-digest
/usr/local/share/emacs/site-lisp/flim/sasl-cram hides /usr/local/share/emacs/site-lisp/flim-OLD/sasl-cram
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/qmtp hides /usr/local/share/emacs/site-lisp/flim-OLD/qmtp
/usr/local/share/emacs/site-lisp/flim/ntlm hides /usr/local/share/emacs/site-lisp/flim-OLD/ntlm
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mmgeneric hides /usr/local/share/emacs/site-lisp/flim-OLD/mmgeneric
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mmexternal hides /usr/local/share/emacs/site-lisp/flim-OLD/mmexternal
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mmbuffer hides /usr/local/share/emacs/site-lisp/flim-OLD/mmbuffer
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mime hides /usr/local/share/emacs/site-lisp/flim-OLD/mime
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mime-parse hides /usr/local/share/emacs/site-lisp/flim-OLD/mime-parse
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mime-def hides /usr/local/share/emacs/site-lisp/flim-OLD/mime-def
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mime-conf hides /usr/local/share/emacs/site-lisp/flim-OLD/mime-conf
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mel hides /usr/local/share/emacs/site-lisp/flim-OLD/mel
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mel-u hides /usr/local/share/emacs/site-lisp/flim-OLD/mel-u
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mel-q hides /usr/local/share/emacs/site-lisp/flim-OLD/mel-q
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mel-q-ccl hides /usr/local/share/emacs/site-lisp/flim-OLD/mel-q-ccl
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mel-g hides /usr/local/share/emacs/site-lisp/flim-OLD/mel-g
/usr/local/share/emacs/site-lisp/flim/mel-b-el hides /usr/local/share/emacs/site-lisp/flim-OLD/mel-b-el
/usr/local/share/emacs/site-lisp/flim/mel-b-ccl hides /usr/local/share/emacs/site-lisp/flim-OLD/mel-b-ccl
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mmcooked hides /usr/local/share/emacs/site-lisp/flim-OLD/mmcooked
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/md5 hides /usr/local/share/emacs/site-lisp/flim-OLD/md5
/usr/local/share/emacs/site-lisp/flim/md4 hides /usr/local/share/emacs/site-lisp/flim-OLD/md4
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/lunit hides /usr/local/share/emacs/site-lisp/flim-OLD/lunit
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/luna hides /usr/local/share/emacs/site-lisp/flim-OLD/luna
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/hmac-sha1 hides /usr/local/share/emacs/site-lisp/flim-OLD/hmac-sha1
/usr/local/share/emacs/site-lisp/flim/hmac-md5 hides /usr/local/share/emacs/site-lisp/flim-OLD/hmac-md5
/usr/local/share/emacs/site-lisp/flim/hmac-def hides /usr/local/share/emacs/site-lisp/flim-OLD/hmac-def
/usr/local/share/emacs/site-lisp/flim/hex-util hides /usr/local/share/emacs/site-lisp/flim-OLD/hex-util
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/eword-encode hides /usr/local/share/emacs/site-lisp/flim-OLD/eword-encode
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/eword-decode hides /usr/local/share/emacs/site-lisp/flim-OLD/eword-decode
/home/more/woods/.emacs.d/packages-26.1/semi-20210613.948/mime-signature hides /usr/local/share/emacs/site-lisp/semi/mime-signature
/home/more/woods/.emacs.d/packages-26.1/semi-20210613.948/mime-tnef hides /usr/local/share/emacs/site-lisp/semi/mime-tnef
/home/more/woods/.emacs.d/packages-26.1/semi-20210613.948/mime-setup hides /usr/local/share/emacs/site-lisp/semi/mime-setup
/home/more/woods/.emacs.d/packages-26.1/semi-20210613.948/mime-shr hides /usr/local/share/emacs/site-lisp/semi/mime-shr
/home/more/woods/.emacs.d/packages-26.1/semi-20210613.948/mime-vcard hides /usr/local/share/emacs/site-lisp/semi/mime-vcard
/home/more/woods/.emacs.d/packages-26.1/semi-20210613.948/mime-w3 hides /usr/local/share/emacs/site-lisp/semi/mime-w3
/home/more/woods/.emacs.d/packages-26.1/semi-20210613.948/mime-image hides /usr/local/share/emacs/site-lisp/semi/mime-image
/home/more/woods/.emacs.d/packages-26.1/semi-20210613.948/mail-mime-setup hides /usr/local/share/emacs/site-lisp/semi/mail-mime-setup
/home/more/woods/.emacs.d/packages-26.1/semi-20210613.948/semi-setup hides /usr/local/share/emacs/site-lisp/semi/semi-setup
/home/more/woods/.emacs.d/packages-26.1/semi-20210613.948/mime-edit hides /usr/local/share/emacs/site-lisp/semi/mime-edit
/home/more/woods/.emacs.d/packages-26.1/semi-20210613.948/mime-partial hides /usr/local/share/emacs/site-lisp/semi/mime-partial
/home/more/woods/.emacs.d/packages-26.1/semi-20210613.948/mime-play hides /usr/local/share/emacs/site-lisp/semi/mime-play
/home/more/woods/.emacs.d/packages-26.1/semi-20210613.948/mime-view hides /usr/local/share/emacs/site-lisp/semi/mime-view
/home/more/woods/.emacs.d/packages-26.1/semi-20210613.948/semi-def hides /usr/local/share/emacs/site-lisp/semi/semi-def
/home/more/woods/.emacs.d/packages-26.1/semi-20210613.948/mime-pgp hides /usr/local/share/emacs/site-lisp/semi/mime-pgp
/home/more/woods/.emacs.d/packages-26.1/semi-20210613.948/signature hides /usr/local/share/emacs/site-lisp/semi/signature
/home/more/woods/.emacs.d/packages-26.1/semi-20210613.948/signature hides /usr/local/share/emacs/site-lisp/semi-OLD/signature
/home/more/woods/.emacs.d/packages-26.1/semi-20210613.948/semi-setup hides /usr/local/share/emacs/site-lisp/semi-OLD/semi-setup
/home/more/woods/.emacs.d/packages-26.1/semi-20210613.948/semi-def hides /usr/local/share/emacs/site-lisp/semi-OLD/semi-def
/home/more/woods/.emacs.d/packages-26.1/semi-20210613.948/mime-w3 hides /usr/local/share/emacs/site-lisp/semi-OLD/mime-w3
/home/more/woods/.emacs.d/packages-26.1/semi-20210613.948/mime-view hides /usr/local/share/emacs/site-lisp/semi-OLD/mime-view
/home/more/woods/.emacs.d/packages-26.1/semi-20210613.948/mime-setup hides /usr/local/share/emacs/site-lisp/semi-OLD/mime-setup
/home/more/woods/.emacs.d/packages-26.1/semi-20210613.948/mime-play hides /usr/local/share/emacs/site-lisp/semi-OLD/mime-play
/home/more/woods/.emacs.d/packages-26.1/semi-20210613.948/mime-pgp hides /usr/local/share/emacs/site-lisp/semi-OLD/mime-pgp
/home/more/woods/.emacs.d/packages-26.1/semi-20210613.948/mime-partial hides /usr/local/share/emacs/site-lisp/semi-OLD/mime-partial
/home/more/woods/.emacs.d/packages-26.1/semi-20210613.948/mime-image hides /usr/local/share/emacs/site-lisp/semi-OLD/mime-image
/home/more/woods/.emacs.d/packages-26.1/semi-20210613.948/mime-edit hides /usr/local/share/emacs/site-lisp/semi-OLD/mime-edit
/home/more/woods/.emacs.d/packages-26.1/semi-20210613.948/mail-mime-setup hides /usr/local/share/emacs/site-lisp/semi-OLD/mail-mime-setup
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo hides /usr/local/share/emacs/site-lisp/wl/elmo
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-mime hides /usr/local/share/emacs/site-lisp/wl/wl-mime
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-e21 hides /usr/local/share/emacs/site-lisp/wl/wl-e21
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-qs hides /usr/local/share/emacs/site-lisp/wl/wl-qs
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-batch hides /usr/local/share/emacs/site-lisp/wl/wl-batch
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-spam hides /usr/local/share/emacs/site-lisp/wl/wl-spam
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-acap hides /usr/local/share/emacs/site-lisp/wl/wl-acap
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-score hides /usr/local/share/emacs/site-lisp/wl/wl-score
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-template hides /usr/local/share/emacs/site-lisp/wl/wl-template
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-expire hides /usr/local/share/emacs/site-lisp/wl/wl-expire
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-fldmgr hides /usr/local/share/emacs/site-lisp/wl/wl-fldmgr
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-thread hides /usr/local/share/emacs/site-lisp/wl/wl-thread
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-refile hides /usr/local/share/emacs/site-lisp/wl/wl-refile
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-demo hides /usr/local/share/emacs/site-lisp/wl/wl-demo
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-highlight hides /usr/local/share/emacs/site-lisp/wl/wl-highlight
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-addrmgr hides /usr/local/share/emacs/site-lisp/wl/wl-addrmgr
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-address hides /usr/local/share/emacs/site-lisp/wl/wl-address
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-version hides /usr/local/share/emacs/site-lisp/wl/wl-version
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-util hides /usr/local/share/emacs/site-lisp/wl/wl-util
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-draft hides /usr/local/share/emacs/site-lisp/wl/wl-draft
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-vars hides /usr/local/share/emacs/site-lisp/wl/wl-vars
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-message hides /usr/local/share/emacs/site-lisp/wl/wl-message
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-action hides /usr/local/share/emacs/site-lisp/wl/wl-action
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-summary hides /usr/local/share/emacs/site-lisp/wl/wl-summary
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-folder hides /usr/local/share/emacs/site-lisp/wl/wl-folder
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl hides /usr/local/share/emacs/site-lisp/wl/wl
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-mime hides /usr/local/share/emacs/site-lisp/wl/elmo-mime
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/modb-standard hides /usr/local/share/emacs/site-lisp/wl/modb-standard
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/modb-legacy hides /usr/local/share/emacs/site-lisp/wl/modb-legacy
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/modb-entity hides /usr/local/share/emacs/site-lisp/wl/modb-entity
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/modb hides /usr/local/share/emacs/site-lisp/wl/modb
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elsp-spamoracle hides /usr/local/share/emacs/site-lisp/wl/elsp-spamoracle
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elsp-bsfilter hides /usr/local/share/emacs/site-lisp/wl/elsp-bsfilter
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elsp-sa hides /usr/local/share/emacs/site-lisp/wl/elsp-sa
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elsp-bogofilter hides /usr/local/share/emacs/site-lisp/wl/elsp-bogofilter
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-spam hides /usr/local/share/emacs/site-lisp/wl/elmo-spam
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-split hides /usr/local/share/emacs/site-lisp/wl/elmo-split
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-file hides /usr/local/share/emacs/site-lisp/wl/elmo-file
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-search hides /usr/local/share/emacs/site-lisp/wl/elmo-search
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-dop hides /usr/local/share/emacs/site-lisp/wl/elmo-dop
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-null hides /usr/local/share/emacs/site-lisp/wl/elmo-null
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-sendlog hides /usr/local/share/emacs/site-lisp/wl/elmo-sendlog
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-flag hides /usr/local/share/emacs/site-lisp/wl/elmo-flag
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-internal hides /usr/local/share/emacs/site-lisp/wl/elmo-internal
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-cache hides /usr/local/share/emacs/site-lisp/wl/elmo-cache
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-pipe hides /usr/local/share/emacs/site-lisp/wl/elmo-pipe
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-archive hides /usr/local/share/emacs/site-lisp/wl/elmo-archive
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-filter hides /usr/local/share/emacs/site-lisp/wl/elmo-filter
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-access hides /usr/local/share/emacs/site-lisp/wl/elmo-access
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-multi hides /usr/local/share/emacs/site-lisp/wl/elmo-multi
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-maildir hides /usr/local/share/emacs/site-lisp/wl/elmo-maildir
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-map hides /usr/local/share/emacs/site-lisp/wl/elmo-map
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-localnews hides /usr/local/share/emacs/site-lisp/wl/elmo-localnews
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-localdir hides /usr/local/share/emacs/site-lisp/wl/elmo-localdir
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-nntp hides /usr/local/share/emacs/site-lisp/wl/elmo-nntp
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-pop3 hides /usr/local/share/emacs/site-lisp/wl/elmo-pop3
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-imap4 hides /usr/local/share/emacs/site-lisp/wl/elmo-imap4
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-net hides /usr/local/share/emacs/site-lisp/wl/elmo-net
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-passwd hides /usr/local/share/emacs/site-lisp/wl/elmo-passwd
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-msgdb hides /usr/local/share/emacs/site-lisp/wl/elmo-msgdb
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-vars hides /usr/local/share/emacs/site-lisp/wl/elmo-vars
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-version hides /usr/local/share/emacs/site-lisp/wl/elmo-version
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-util hides /usr/local/share/emacs/site-lisp/wl/elmo-util
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-date hides /usr/local/share/emacs/site-lisp/wl/elmo-date
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-signal hides /usr/local/share/emacs/site-lisp/wl/elmo-signal
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/mmimap hides /usr/local/share/emacs/site-lisp/wl/mmimap
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/slp hides /usr/local/share/emacs/site-lisp/wl/slp
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/acap hides /usr/local/share/emacs/site-lisp/wl/acap
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/pldap hides /usr/local/share/emacs/site-lisp/wl/pldap
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-rss hides /usr/local/share/emacs/site-lisp/wl/elmo-rss
/usr/local/share/emacs/site-lisp/wl/wl-complete hides /usr/local/share/emacs/site-lisp/wl-OLD/wl-complete
/usr/local/share/emacs/site-lisp/wl/wl-addrbook hides /usr/local/share/emacs/site-lisp/wl-OLD/wl-addrbook
/usr/local/share/emacs/site-lisp/wl/wl-mailto hides /usr/local/share/emacs/site-lisp/wl-OLD/wl-mailto
/usr/local/share/emacs/site-lisp/wl/im-wl hides /usr/local/share/emacs/site-lisp/wl-OLD/im-wl
/usr/local/share/emacs/site-lisp/wl/rfc2368 hides /usr/local/share/emacs/site-lisp/wl-OLD/rfc2368
/usr/local/share/emacs/site-lisp/wl/ssl hides /usr/local/share/emacs/site-lisp/wl-OLD/ssl
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-version hides /usr/local/share/emacs/site-lisp/wl-OLD/wl-version
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-vars hides /usr/local/share/emacs/site-lisp/wl-OLD/wl-vars
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-util hides /usr/local/share/emacs/site-lisp/wl-OLD/wl-util
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-thread hides /usr/local/share/emacs/site-lisp/wl-OLD/wl-thread
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-template hides /usr/local/share/emacs/site-lisp/wl-OLD/wl-template
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-summary hides /usr/local/share/emacs/site-lisp/wl-OLD/wl-summary
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-spam hides /usr/local/share/emacs/site-lisp/wl-OLD/wl-spam
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-score hides /usr/local/share/emacs/site-lisp/wl-OLD/wl-score
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-refile hides /usr/local/share/emacs/site-lisp/wl-OLD/wl-refile
/usr/local/share/emacs/site-lisp/wl/wl-news hides /usr/local/share/emacs/site-lisp/wl-OLD/wl-news
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-mime hides /usr/local/share/emacs/site-lisp/wl-OLD/wl-mime
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-message hides /usr/local/share/emacs/site-lisp/wl-OLD/wl-message
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-highlight hides /usr/local/share/emacs/site-lisp/wl-OLD/wl-highlight
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-folder hides /usr/local/share/emacs/site-lisp/wl-OLD/wl-folder
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-fldmgr hides /usr/local/share/emacs/site-lisp/wl-OLD/wl-fldmgr
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-expire hides /usr/local/share/emacs/site-lisp/wl-OLD/wl-expire
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-e21 hides /usr/local/share/emacs/site-lisp/wl-OLD/wl-e21
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-draft hides /usr/local/share/emacs/site-lisp/wl-OLD/wl-draft
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-demo hides /usr/local/share/emacs/site-lisp/wl-OLD/wl-demo
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-batch hides /usr/local/share/emacs/site-lisp/wl-OLD/wl-batch
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-addrmgr hides /usr/local/share/emacs/site-lisp/wl-OLD/wl-addrmgr
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-address hides /usr/local/share/emacs/site-lisp/wl-OLD/wl-address
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-action hides /usr/local/share/emacs/site-lisp/wl-OLD/wl-action
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl-acap hides /usr/local/share/emacs/site-lisp/wl-OLD/wl-acap
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/wl hides /usr/local/share/emacs/site-lisp/wl-OLD/wl
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/slp hides /usr/local/share/emacs/site-lisp/wl-OLD/slp
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/pldap hides /usr/local/share/emacs/site-lisp/wl-OLD/pldap
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/modb hides /usr/local/share/emacs/site-lisp/wl-OLD/modb
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/modb-standard hides /usr/local/share/emacs/site-lisp/wl-OLD/modb-standard
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/modb-legacy hides /usr/local/share/emacs/site-lisp/wl-OLD/modb-legacy
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/modb-entity hides /usr/local/share/emacs/site-lisp/wl-OLD/modb-entity
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/mmimap hides /usr/local/share/emacs/site-lisp/wl-OLD/mmimap
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elsp-spamoracle hides /usr/local/share/emacs/site-lisp/wl-OLD/elsp-spamoracle
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elsp-sa hides /usr/local/share/emacs/site-lisp/wl-OLD/elsp-sa
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elsp-bsfilter hides /usr/local/share/emacs/site-lisp/wl-OLD/elsp-bsfilter
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elsp-bogofilter hides /usr/local/share/emacs/site-lisp/wl-OLD/elsp-bogofilter
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo hides /usr/local/share/emacs/site-lisp/wl-OLD/elmo
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-version hides /usr/local/share/emacs/site-lisp/wl-OLD/elmo-version
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-vars hides /usr/local/share/emacs/site-lisp/wl-OLD/elmo-vars
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-util hides /usr/local/share/emacs/site-lisp/wl-OLD/elmo-util
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-split hides /usr/local/share/emacs/site-lisp/wl-OLD/elmo-split
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-spam hides /usr/local/share/emacs/site-lisp/wl-OLD/elmo-spam
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-signal hides /usr/local/share/emacs/site-lisp/wl-OLD/elmo-signal
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-shimbun hides /usr/local/share/emacs/site-lisp/wl-OLD/elmo-shimbun
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-sendlog hides /usr/local/share/emacs/site-lisp/wl-OLD/elmo-sendlog
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-search hides /usr/local/share/emacs/site-lisp/wl-OLD/elmo-search
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-pop3 hides /usr/local/share/emacs/site-lisp/wl-OLD/elmo-pop3
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-pipe hides /usr/local/share/emacs/site-lisp/wl-OLD/elmo-pipe
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-null hides /usr/local/share/emacs/site-lisp/wl-OLD/elmo-null
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-nntp hides /usr/local/share/emacs/site-lisp/wl-OLD/elmo-nntp
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-net hides /usr/local/share/emacs/site-lisp/wl-OLD/elmo-net
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-multi hides /usr/local/share/emacs/site-lisp/wl-OLD/elmo-multi
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-msgdb hides /usr/local/share/emacs/site-lisp/wl-OLD/elmo-msgdb
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-mime hides /usr/local/share/emacs/site-lisp/wl-OLD/elmo-mime
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-map hides /usr/local/share/emacs/site-lisp/wl-OLD/elmo-map
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-maildir hides /usr/local/share/emacs/site-lisp/wl-OLD/elmo-maildir
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-localnews hides /usr/local/share/emacs/site-lisp/wl-OLD/elmo-localnews
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-localdir hides /usr/local/share/emacs/site-lisp/wl-OLD/elmo-localdir
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-internal hides /usr/local/share/emacs/site-lisp/wl-OLD/elmo-internal
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-imap4 hides /usr/local/share/emacs/site-lisp/wl-OLD/elmo-imap4
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-flag hides /usr/local/share/emacs/site-lisp/wl-OLD/elmo-flag
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-filter hides /usr/local/share/emacs/site-lisp/wl-OLD/elmo-filter
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-file hides /usr/local/share/emacs/site-lisp/wl-OLD/elmo-file
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-dop hides /usr/local/share/emacs/site-lisp/wl-OLD/elmo-dop
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-date hides /usr/local/share/emacs/site-lisp/wl-OLD/elmo-date
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-cache hides /usr/local/share/emacs/site-lisp/wl-OLD/elmo-cache
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-archive hides /usr/local/share/emacs/site-lisp/wl-OLD/elmo-archive
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/elmo-access hides /usr/local/share/emacs/site-lisp/wl-OLD/elmo-access
/home/more/woods/.emacs.d/packages-26.1/wanderlust-20220103.800/acap hides /usr/local/share/emacs/site-lisp/wl-OLD/acap
/usr/local/share/emacs/site-lisp/color-theme-el/color-theme hides /usr/local/share/emacs/site-lisp/color-theme-el/themes/color-theme
/usr/local/share/emacs/site-lisp/color-theme-el/color-theme-library hides /usr/local/share/emacs/site-lisp/color-theme-el/themes/color-theme-library
/usr/local/share/emacs/site-lisp/color-theme-el/color-theme-example hides /usr/local/share/emacs/site-lisp/color-theme-el/themes/color-theme-example
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/std11 hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/std11
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/smtp hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/smtp
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/sha1 hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/sha1
/usr/local/share/emacs/site-lisp/flim/sha1-el hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/sha1-el
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/sasl hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/sasl
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/sasl-scram hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/sasl-scram
/usr/local/share/emacs/site-lisp/flim/sasl-ntlm hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/sasl-ntlm
/usr/local/share/emacs/site-lisp/flim/sasl-digest hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/sasl-digest
/usr/local/share/emacs/site-lisp/flim/sasl-cram hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/sasl-cram
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/qmtp hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/qmtp
/usr/local/share/emacs/site-lisp/flim/ntlm hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/ntlm
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mmgeneric hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/mmgeneric
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mmexternal hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/mmexternal
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mmcooked hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/mmcooked
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mmbuffer hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/mmbuffer
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mime hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/mime
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mime-parse hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/mime-parse
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mime-def hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/mime-def
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mime-conf hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/mime-conf
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mel hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/mel
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mel-u hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/mel-u
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mel-q hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/mel-q
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mel-q-ccl hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/mel-q-ccl
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/mel-g hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/mel-g
/usr/local/share/emacs/site-lisp/flim/mel-b-el hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/mel-b-el
/usr/local/share/emacs/site-lisp/flim/mel-b-ccl hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/mel-b-ccl
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/md5 hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/md5
/usr/local/share/emacs/site-lisp/flim/md4 hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/md4
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/lunit hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/lunit
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/luna hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/luna
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/hmac-sha1 hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/hmac-sha1
/usr/local/share/emacs/site-lisp/flim/hmac-md5 hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/hmac-md5
/usr/local/share/emacs/site-lisp/flim/hmac-def hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/hmac-def
/usr/local/share/emacs/site-lisp/flim/hex-util hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/hex-util
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/eword-encode hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/eword-encode
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/eword-decode hides /usr/local/share/emacs/site-lisp/flim-OLD/flim/eword-decode
/home/more/woods/.emacs.d/packages-26.1/xcscope-20210719.828/xcscope hides /usr/pkg/share/emacs/site-lisp/xcscope
/usr/local/share/emacs/site-lisp/flim/md4 hides /usr/pkg/share/emacs/26.1/lisp/md4
/usr/local/share/emacs/site-lisp/flim/hex-util hides /usr/pkg/share/emacs/26.1/lisp/hex-util
/home/more/woods/.emacs.d/packages-26.1/flim-20210529.1253/sasl hides /usr/pkg/share/emacs/26.1/lisp/net/sasl
/usr/local/share/emacs/site-lisp/flim/sasl-ntlm hides /usr/pkg/share/emacs/26.1/lisp/net/sasl-ntlm
/usr/local/share/emacs/site-lisp/flim/sasl-digest hides /usr/pkg/share/emacs/26.1/lisp/net/sasl-digest
/usr/local/share/emacs/site-lisp/flim/sasl-cram hides /usr/pkg/share/emacs/26.1/lisp/net/sasl-cram
/usr/local/share/emacs/site-lisp/flim/ntlm hides /usr/pkg/share/emacs/26.1/lisp/net/ntlm
/usr/local/share/emacs/site-lisp/flim/hmac-md5 hides /usr/pkg/share/emacs/26.1/lisp/net/hmac-md5
/usr/local/share/emacs/site-lisp/flim/hmac-def hides /usr/pkg/share/emacs/26.1/lisp/net/hmac-def
/usr/local/share/emacs/site-lisp/wl/rfc2368 hides /usr/pkg/share/emacs/26.1/lisp/mail/rfc2368
/usr/local/share/emacs/site-lisp/wl-OLD/utf7 hides /usr/pkg/share/emacs/26.1/lisp/international/utf7
/usr/local/share/emacs/site-lisp/semi-OLD/smime hides /usr/pkg/share/emacs/26.1/lisp/gnus/smime
/home/more/woods/.emacs.d/packages-26.1/nadvice-0.3/nadvice hides /usr/pkg/share/emacs/26.1/lisp/emacs-lisp/nadvice
/home/more/woods/.emacs.d/packages-26.1/let-alist-1.0.6/let-alist hides /usr/pkg/share/emacs/26.1/lisp/emacs-lisp/let-alist
/usr/local/share/emacs/site-lisp/semi-OLD/pgg hides /usr/pkg/share/emacs/26.1/lisp/obsolete/pgg
/usr/local/share/emacs/site-lisp/semi-OLD/pgg-pgp5 hides /usr/pkg/share/emacs/26.1/lisp/obsolete/pgg-pgp5
/usr/local/share/emacs/site-lisp/semi-OLD/pgg-pgp hides /usr/pkg/share/emacs/26.1/lisp/obsolete/pgg-pgp
/usr/local/share/emacs/site-lisp/semi-OLD/pgg-parse hides /usr/pkg/share/emacs/26.1/lisp/obsolete/pgg-parse
/usr/local/share/emacs/site-lisp/semi-OLD/pgg-gpg hides /usr/pkg/share/emacs/26.1/lisp/obsolete/pgg-gpg
/usr/local/share/emacs/site-lisp/semi-OLD/pgg-def hides /usr/pkg/share/emacs/26.1/lisp/obsolete/pgg-def

Features:
(shadow sort flyspell mail-extr emacsbug apropos mode-local eieio-opt
speedbar sb-image ezimage dframe debug cl-print face-remap cus-edit
cus-start cus-load pp wid-edit descr-text help-fns radix-tree misearch
multi-isearch todo-mode sgml-mode dom dns python tramp-sh tramp
tramp-compat tramp-loaddefs trampver ucs-normalize json go-mode
find-file ffap etags s vc-filewise form-feed elec-pair image-file
x-face-e21 timeclock cal-bahai holidays hol-loaddefs cal-persia
cal-coptic cal-mayan cal-islam cal-hebrew cal-french cal-china cal-iso
lunar cal-julian vc-fossil solar cal-dst appt diary-lib diary-loaddefs
cal-menu calendar cal-loaddefs hippie-exp xref project warnings vc-dir
vc-sccs vc-rcs vc vc-dispatcher cc-mode cc-fonts cc-guess cc-menus
cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs pcvs vc-cvs
pcvs-parse pcvs-info pcvs-defs ewoc ispell view find-func browse-url
paren persistent-soft list-utils pcache eieio-base font-utils
unicode-fonts ucs-utils foldout sh-script smie executable forge-list
forge-commands forge-semi forge-bitbucket buck forge-gogs gogs
forge-gitea gtea forge-gitlab glab forge-github ghub-graphql treepy map
gsexp ghub let-alist forge-notify forge-revnote forge-pullreq
forge-issue forge-topic yaml parse-time bug-reference forge-post
markdown-mode color thingatpt noutline outline forge-repo forge
forge-core forge-db closql emacsql-sqlite advice emacsql
emacsql-compiler url-http tls gnutls url-auth url-gw nsm url url-proxy
url-privacy url-expand url-methods url-history url-cookie url-domsuf
url-util mailcap magit-submodule magit-obsolete magit-popup magit-blame
magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch
magit-clone magit-remote magit-commit magit-sequence magit-notes
magit-worktree magit-tag magit-merge magit-branch magit-reset
magit-files magit-refs magit-status magit magit-repos magit-apply
magit-wip magit-log which-func imenu magit-diff smerge-mode diff-mode
git-commit log-edit message sendmail rmc puny dired dired-loaddefs
rfc822 mml mml-sec epa epg gnus-util rmail rmail-loaddefs mm-decode
mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util
ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils mailheader
pcvs-util add-log magit-core magit-autorevert autorevert filenotify
magit-margin magit-transient magit-process with-editor shell pcomplete
server magit-mode transient cl-extra edmacro kmacro help-mode
format-spec magit-git magit-section magit-utils crm subr-x dash grep
compile comint ansi-color ring jka-compr flex-mode derived use-package
use-package-ensure use-package-delight use-package-diminish
use-package-bind-key bind-key easy-mmode use-package-core finder-inf rx
cl w3m-load info package easymenu epg-config url-handlers url-parse
auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs
password-cache url-vars seq byte-opt gv bytecomp byte-compile cconv
cl-loaddefs cl-lib time time-date mule-util tooltip eldoc electric
uniquify ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win
term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode elisp-mode lisp-mode
prog-mode register page menu-bar rfn-eshadow isearch timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core
term/tty-colors 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 composite charscript charprop case-table epa-hook jka-cmpr-hook
help simple abbrev obarray 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 kqueue dynamic-setting system-font-setting font-render-setting
move-toolbar gtk x-toolkit x multi-tty make-network-process emacs)

Memory information:
((conses 16 933326 140314)
 (symbols 48 60779 1)
 (miscs 40 905 1767)
 (strings 32 240843 19309)
 (string-bytes 1 6360005)
 (vectors 16 98748)
 (vector-slots 8 2764072 111020)
 (floats 8 942 1081)
 (intervals 56 65308 1048)
 (buffers 992 34))

-- 
					Greg A. Woods <gwoods@acm.org>

Kelowna, BC     +1 250 762-7675           RoboHack <woods@robohack.ca>
Planix, Inc. <woods@planix.com>     Avoncote Farms <woods@avoncote.ca>

[-- Attachment #2: OpenPGP Digital Signature --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

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

* bug#53924: 26.1; fontification sometimes fails for some characters despite available glyphs
  2022-02-10 19:02 bug#53924: 26.1; fontification sometimes fails for some characters despite available glyphs Greg A. Woods
@ 2022-02-10 20:21 ` Eli Zaretskii
  2022-02-10 23:34   ` Greg A. Woods
       [not found] ` <handler.53924.B.164452023325832.ack@debbugs.gnu.org>
  1 sibling, 1 reply; 15+ messages in thread
From: Eli Zaretskii @ 2022-02-10 20:21 UTC (permalink / raw)
  To: Greg A. Woods; +Cc: 53924

> Date: Thu, 10 Feb 2022 11:02:19 -0800
> From: "Greg A. Woods" <woods@robohack.ca>
> 
> Emacs fails to display all available glyphs for some fonts, and in some
> cases any available glyphs for some fonts.

Thanks, but why do you consider that a problem?  You are trying to use
arbitrary fonts available on your system, and Emacs sometimes finds
them inappropriate for its purposes, or incapable of displaying some
characters.  That's completely normal.  Not every font is good enough
for Emacs.

Also, please try this in a newer Emacs.  v26 is very old and no longer
developed; Emacs 28 is in pretest.





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

* bug#53924: 26.1; fontification sometimes fails for some characters despite available glyphs
       [not found] ` <handler.53924.B.164452023325832.ack@debbugs.gnu.org>
@ 2022-02-10 22:42   ` Greg A. Woods
  0 siblings, 0 replies; 15+ messages in thread
From: Greg A. Woods @ 2022-02-10 22:42 UTC (permalink / raw)
  To: 53924

[-- Attachment #1: Type: text/plain, Size: 432 bytes --]

Sorry, some debug code crept into my test function.

The first call to `propertize' was:

 (propertize str 'font-lock-face
        `(:font ,fs :weight medium))

but should be:

 (propertize str 'font-lock-face
        `(:family ,ff :weight medium))

--
					Greg A. Woods <gwoods@acm.org>

Kelowna, BC     +1 250 762-7675           RoboHack <woods@robohack.ca>
Planix, Inc. <woods@planix.com>     Avoncote Farms <woods@avoncote.ca>

[-- Attachment #2: OpenPGP Digital Signature --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

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

* bug#53924: 26.1; fontification sometimes fails for some characters despite available glyphs
  2022-02-10 20:21 ` Eli Zaretskii
@ 2022-02-10 23:34   ` Greg A. Woods
  2022-02-11  7:15     ` Eli Zaretskii
  0 siblings, 1 reply; 15+ messages in thread
From: Greg A. Woods @ 2022-02-10 23:34 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 53924

[-- Attachment #1: Type: text/plain, Size: 2757 bytes --]

At Thu, 10 Feb 2022 22:21:50 +0200, Eli Zaretskii <eliz@gnu.org> wrote:
Subject: Re: bug#53924: 26.1; fontification sometimes fails for some characters despite available glyphs
>
> > Date: Thu, 10 Feb 2022 11:02:19 -0800
> > From: "Greg A. Woods" <woods@robohack.ca>
> >
> > Emacs fails to display all available glyphs for some fonts, and in some
> > cases any available glyphs for some fonts.
>
> Thanks, but why do you consider that a problem?  You are trying to use
> arbitrary fonts available on your system, and Emacs sometimes finds
> them inappropriate for its purposes, or incapable of displaying some
> characters.  That's completely normal.  Not every font is good enough
> for Emacs.

Yes, indeed I do consider it a problem -- something is sometimes
swapping glyphs that should not be doing so, and doing so inconsistently
for some reason.

I don't consider all the fonts available to be "good enough for Emacs",
quite the contrary, but I do believe Emacs should be able to show me
text rendered with any and all available glyphs from these fonts upon
request.  If Xterm can, why can't Emacs?

The exception of course is if there's something actually wrong with the
font, or its encoding, or some such non-Emacs problem.  I would expect
such problems to show up in xfontsel though.

One more clue I've noticed -- the inconsistent results only occur for
proportional fonts -- not for mono-spaced fonts, and I have noticed that
I have one or two fonts which appear to be mono-spaced, and which have
the word "mono" in their family name, but which xfontsel and xlsfonts
insists are proportional fonts.

I'm no expert at font definitions and encodings -- I'm just trying to
get some consistent results that at least match what I can see with
xfontsel.

Note I'm working only with TTF fonts, primarily on a high-res display
(218dpi), and though I have the standard X11 fonts installed on the
machine running Emacs, all the fonts I am seeing problems with are
installed only on the X11 server machine, a desktop macOS with XQuartz
running in full-screen mode.

One more possibly relevant observation:  I don't see this problem with
Emacs built using the "nextstep" toolkit and running on native macOS.
There even when the font has a strange encoding (e.g. for symbol fonts),
or no ASCII glyphs at all, I see either the symbols in their place, or
empty boxes.

> Also, please try this in a newer Emacs.  v26 is very old and no longer
> developed; Emacs 28 is in pretest.

As soon as I can, but for now v26 is what is available in all my
production working environments.

--
					Greg A. Woods <gwoods@acm.org>

Kelowna, BC     +1 250 762-7675           RoboHack <woods@robohack.ca>
Planix, Inc. <woods@planix.com>     Avoncote Farms <woods@avoncote.ca>

[-- Attachment #2: OpenPGP Digital Signature --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

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

* bug#53924: 26.1; fontification sometimes fails for some characters despite available glyphs
  2022-02-10 23:34   ` Greg A. Woods
@ 2022-02-11  7:15     ` Eli Zaretskii
  2022-02-11 21:56       ` Greg A. Woods
  2022-02-13  6:06       ` Greg A. Woods
  0 siblings, 2 replies; 15+ messages in thread
From: Eli Zaretskii @ 2022-02-11  7:15 UTC (permalink / raw)
  To: Greg A. Woods; +Cc: 53924

> Date: Thu, 10 Feb 2022 15:34:05 -0800
> From: "Greg A. Woods" <woods@robohack.ca>
> CC: 53924@debbugs.gnu.org
> 
> Yes, indeed I do consider it a problem -- something is sometimes
> swapping glyphs that should not be doing so, and doing so inconsistently
> for some reason.

It might look inconsistent from your POV, but Emacs has its own ideas
about this, and they are consistent as soon as one understands the
code and its design ideas.

> I don't consider all the fonts available to be "good enough for Emacs",
> quite the contrary, but I do believe Emacs should be able to show me
> text rendered with any and all available glyphs from these fonts upon
> request.  If Xterm can, why can't Emacs?

Emacs is not xterm.  Emacs doesn't examine each and every glyph of a
font when it decides when to use it, because that would be
prohibitively expensive on systems that have many fonts available.
AFAIK, xterm uses a static arrangement of fonts, and does not by
itself look for fonts suitable for a given character outside of the
set of fonts specified to it externally.  Well, that's not how Emacs
works, not at all.  So there's little surprise the results might be
different for some fonts.

> The exception of course is if there's something actually wrong with the
> font, or its encoding, or some such non-Emacs problem.  I would expect
> such problems to show up in xfontsel though.

How can xfontsel know which problems are relevant to Emacs use of
fonts and Emacs display engine in general?

> One more possibly relevant observation:  I don't see this problem with
> Emacs built using the "nextstep" toolkit and running on native macOS.
> There even when the font has a strange encoding (e.g. for symbol fonts),
> or no ASCII glyphs at all, I see either the symbols in their place, or
> empty boxes.

So maybe what you see is specific to that OS (NetBSD, AFAIU).

FWIW, I don't see what we can do about this bug report.





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

* bug#53924: 26.1; fontification sometimes fails for some characters despite available glyphs
  2022-02-11  7:15     ` Eli Zaretskii
@ 2022-02-11 21:56       ` Greg A. Woods
  2022-02-13  6:06       ` Greg A. Woods
  1 sibling, 0 replies; 15+ messages in thread
From: Greg A. Woods @ 2022-02-11 21:56 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: GNU Emacs Bug reports

[-- Attachment #1: Type: text/plain, Size: 3121 bytes --]

At Fri, 11 Feb 2022 09:15:09 +0200, Eli Zaretskii <eliz@gnu.org> wrote:
Subject: Re: bug#53924: 26.1; fontification sometimes fails for some characters despite available glyphs
>
> It might look inconsistent from your POV, but Emacs has its own ideas
> about this, and they are consistent as soon as one understands the
> code and its design ideas.

The inconsistency I'm observing seems to be within Emacs itself, or
perhaps in the way it uses the GTK2 toolkit (gbdfed, also using GTK2,
does not have any problem, either directly on the problem fonts, or via
fetching them from the X11 server).

I probably shouldn't have mentioned Xterm since, as you say, it has an
even more restrictive view of how to manage fonts, and specifically
can't deal with proportional fonts at all.

So Emacs+GTK2 can display some fonts perfectly, but not others, despite
the fact the underlying system (i.e. X11) and its related tools
(e.g. xfontsel, xfd, gbdfed, etc.) can display and find (xlsfonts) all
those fonts with no problem.

There's also nothing whatsoever in any available documentation I can
find which even remotely suggests that what I expect Emacs to do will
not happen for some reason.

If you can point me to any such documentation, that would be excellent.

If not then this is a real bug, though as I've said I'm not sure the bug
is in Emacs -- it could well be some otherwise hidden defect in the
fonts, their encodings, and/or how they are loaded by the X11 server.

I just can't find anything whatsoever, so far, to point responsibility
to anything other than Emacs, and specifically in an Emacs built with
the GTK2 toolkit.

Have you run the function I supply to see how it fares in your
environment with your available font families?


> How can xfontsel know which problems are relevant to Emacs use of
> fonts and Emacs display engine in general?

It doesn't of course -- but it (and the other related tools, including
gbdfed) demonstrates that the font, and its encoding, and the underlying
X11 display engine, are all perfectly happy to load and correctly
display the glyphs for the problem fonts.

What could possibly be different about a font that would lead Emacs+GTK2
to ignore some/all of the available glyphs for the ASCII characters in
that font (but not ignore them in the Emacs+nextstep variant)?

> So maybe what you see is specific to that OS (NetBSD, AFAIU).

I would think that's literally impossible.  The Emacs code is all very
portable (and is indeed running on NetBSD), as is the font handling and
most of the X11 server itself (which is running on macOS) -- the only
thing that's unique in my specific test scenario (the macOS part) is
demonstrably not a problem because it is all perfectly happy to display
all available fonts in all other contexts, both in native macOS as well
as in the X11 server running on it (e.g. Emacs+nextstep in native macOS,
or gbdfed, and all the X11 font tools running on macOS).

--
					Greg A. Woods <gwoods@acm.org>

Kelowna, BC     +1 250 762-7675           RoboHack <woods@robohack.ca>
Planix, Inc. <woods@planix.com>     Avoncote Farms <woods@avoncote.ca>

[-- Attachment #2: OpenPGP Digital Signature --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

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

* bug#53924: 26.1; fontification sometimes fails for some characters despite available glyphs
  2022-02-11  7:15     ` Eli Zaretskii
  2022-02-11 21:56       ` Greg A. Woods
@ 2022-02-13  6:06       ` Greg A. Woods
  2022-02-13 11:53         ` Eli Zaretskii
  1 sibling, 1 reply; 15+ messages in thread
From: Greg A. Woods @ 2022-02-13  6:06 UTC (permalink / raw)
  To: GNU Emacs Bug Reports

[-- Attachment #1: Type: text/plain, Size: 9834 bytes --]

New code, ancient bug, and a possibly related crash.....

First the ancient typo/bug:

fontset.el contains an errant definition for xlfd-regexp-spacing-subnum
(with the value '8').  git-blame suggests this typo has lurked for 20
years!

It should of course be '9':

    (defconst xlfd-regexp-spacing-subnum 9) ; fix a 20-year-old typo!


Second, an update of my `show-all-font-families', now with working
support to optionally show just the mono-spaced fonts, but be warned it
can cause crashes:

(defvar sample-text-history nil
  "History list for commands that read sample text.")
(require 'faces)
(add-to-history 'sample-text-history list-faces-sample-text)

(defvar ascii-sample-text
  ;; this default text is just ASCII
  ;; xxx should it be iso8859-1, but how to do that?
  ;; `encode-coding-string' ?
  "ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789
abcdefghijklmnopqrstuvwxyz
`~!@#$%^&*()_+-={}|[]\\:\"\;'<>?,./"
  "all the ASCII printable characters for sample text.")

(defun show-all-font-families (&optional sample-text mono-only)
  "Show SAMPLE-TEXT (by default `list-faces-sample-text') in
'roman', 'bold', 'italic', and 'bold italic' for each font family
known to `font-family-list'.

If MONO-ONLY, include ':spacing m' in the `font-spec' parameters.
Interactively, a negative prefix does the same.

Note you can seem some strange results for fonts that don't have
each of the requested weight and slant forms.  Sometimes
proportional glyphs will even be substituted for mono-spaced
glyphs!  Sometimes a glyph from a different font (the default
font?) will be substituted even when the requested font is
available with all the requested attributes, e.g. 'office code
pro'.  (Perhaps because it is _only_ avaliable with the requested
attributes, but no others?)

Also some proportional fonts will show up despite only
mono-spaced fonts being selected.  Perhaps spacing is ignored
when requesting a font?  Note even `x-list-fonts' warns that:

    Fonts Emacs can't use may or may not be excluded...

N.B. WARNING:  This code may try to display fonts that cannot be
opened and as a result will crash Emacs!  Worse yet it can get
stuck rendering fonts and if killed cause the X11 server to go
into a CPU-bound loop that may take hours to resolve!  Kill it
sooner than later!  This is particularly true for Emacs-26.1 when
the MONO-ONLY parameter is non-nil.  See also the exclusion of
the 'droid' fonts.

Derived from an example on the EmacsWiki."
  (interactive
   (list
    ;; optional `sample-text':
    (if current-prefix-arg
	(read-string
	 "Sample text:"
	 ascii-sample-text
	 'sample-text-history))
    ;; optional `mono-only':
    (cond
     ((eq current-prefix-arg '-)
      t)
     ((and (numberp current-prefix-arg)
           (< current-prefix-arg 0))
      t)
     ((and (listp current-prefix-arg)
           (numberp (car current-prefix-arg))
           (< (car current-prefix-arg) 0))
      t)
     (t nil))))
  (let ((str (if sample-text
		 sample-text
	       list-faces-sample-text))
	(font-families (cl-remove-duplicates
			(sort (font-family-list)
			      (lambda(x y) (string> (upcase x) (upcase y))))
			:test 'cl-equalp)))
    (with-help-window "*Font Families*"
      (with-current-buffer standard-output
	(dolist (ff font-families)
	  (let* ((fs (font-spec :family ff
				:weight 'medium :slant 'r
				;; xxx :spacing is confusing
				;; see below for additional test to confirm!
				(if mono-only :spacing) (if mono-only 'm)
				:registry 'iso10646-1))
		 (fl (list-fonts fs))
		 (fe (car fl))			; usually the cdr is non-scalable?
		 (xlfd (if fe
			   (font-xlfd-name fe)
			 (font-xlfd-name fs)))	; xxx font may not be useable
		 (fn (if (eq window-system 'x)
			 (condition-case nil
			     (x-resolve-font-name xlfd)
			   (error (message "Invalid font family: %s" ff)
				  nil))
		       nil))
		 (xlfd-fields (if fn
				  (x-decompose-font-name fn) ; xxx not really an X11 function
				nil))
		 )
	    ;; XXX the "droid*" fonts are broken???
	    (if (and (not (string-match "droid" ff))
		     (not (string-equal "nil" ff)) ; xxx never a useful font
		     (not (string-match "italic" ff)) ; xxx rarely in all other styles
		     (not (string-match "bold" ff)) ; xxx rarely in all other styles
		     (not (string-match ".pcf" ff)) ; xxx usually bitmap cursors
		     ;;
		     ;; xxx some fonts, e.g. "inconsolata" (which xfontsel says
		     ;; is both 'm' and 'p'), will return the "wrong" spacing in
		     ;; the XLFD if the request has a wild-card (i.e. :spacing
		     ;; unspecified), but then it can't be found with
		     ;; `font-info' with the explicit ":spacing 'p".
		     ;;
		     ;; XXX this test is needed though as it might sometimes
		     ;; prevent crashes in the case where this spacing confusion
		     ;; happens.
		     ;;
		     (condition-case nil
			 (if (font-info xlfd) ; xxx can this also return nil?
			     t
			   (message "Can't get font info for: %s" xlfd)
			   nil)
		       (error (message "Bad font: %s" xlfd)
			      nil))
		     (if mono-only
			 (if xlfd-fields
			     ;; because `x-resolve-font-name' sometimes ignores
			     ;; `:spacing' we must confirm the font matches
			     ;; xxx `xlfd-regexp-spacing-subnum' is WRONG, for 20 years!
			     (if (string-equal (aref xlfd-fields 9) "m")
				 t
			       (message "Font not actually monospaced: %s" xlfd)
			       nil)
			   ;; xxx try `font-get' on `fe', but that doesn't seem to
			   ;; work properly for getting `:spacing'!?!?!?!?
			   (if (eq window-system 'x)
			       (message "Can't resolve X font for: %s" xlfd)))
		       t))
		;; xxx XXX N.B.:  without escaping the semicolons emacs can't
		;; parse these expressions backwards!!!
		(insert "\; " ff ":" xlfd "\n\;\n"
			"\;\t" ff " (plain):\n\;\n"
			(propertize str 'font-lock-face
				    `(:family ,ff :weight medium :slant r))
			"\n\;\n\;\t" ff " [bold]:\n\;\n"
			(propertize str 'font-lock-face
				    `(:family ,ff :weight bold :slant r))
			"\n\;\n\;\t " ff " [italic]:\n\;\n"
			(propertize str 'font-lock-face
				    `(:family ,ff :weight medium :slant italic))
			"\n\;\n\;\t " ff " [bold italic]:\n\;\n"
			(propertize str 'font-lock-face
				    `(:family ,ff :weight bold :slant italic))
			"\n\;\n\f\n")
	      (message "Not showing font-family: %s" ff)))
	  (goto-char (point-min))
	  (setq case-fold-search t)
	  (if (fboundp 'form-feed-mode)
	      (form-feed-mode nil)))))))



Finally a crash (working on reproducing it with GDB in the source tree,
but my gdb is having trouble with the emacs .gdbinit):

Reading symbols from /usr/pkg/bin/emacs-26.1...
[New process 12954]
[New process 1873]
Core was generated by `emacs'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007cdaa53676aa in _lwp_kill () from /usr/lib/libc.so.12
[Current thread is 1 (process 12954)]
(gdb) bt
#0  0x00007cdaa53676aa in _lwp_kill () from /usr/lib/libc.so.12
#1  0x00000000004dc6ac in terminate_due_to_signal (sig=sig@entry=11,
    backtrace_limit=backtrace_limit@entry=40) at emacs.c:394
#2  0x00000000004f2d13 in handle_fatal_signal (sig=sig@entry=11) at sysdep.c:1769
#3  0x00000000004f2f53 in deliver_thread_signal (sig=sig@entry=11,
    handler=0x4f2d05 <handle_fatal_signal>) at sysdep.c:1743
#4  0x00000000004f2fa6 in deliver_fatal_thread_signal (sig=11) at sysdep.c:1781
#5  handle_sigsegv (sig=11, siginfo=<optimized out>, arg=<optimized out>)
    at sysdep.c:1866
#6  <signal handler called>
#7  0x00000000005ad68d in fontset_find_font (fontset=fontset@entry=364, c=c@entry=180,
    face=face@entry=0x7cdaad2db4c0, charset_id=charset_id@entry=-1,
    fallback=fallback@entry=false) at fontset.c:550
#8  0x00000000005adfd3 in fontset_font (fontset=fontset@entry=364, c=c@entry=180,
    face=face@entry=0x7cdaad2db4c0, id=-1) at fontset.c:760
#9  0x00000000005ae365 in face_for_char (f=0x7cdaafbf2c30,
    face=face@entry=0x7cdaad2db4c0, c=180, pos=<optimized out>, object=<optimized out>)
    at fontset.c:990
#10 0x000000000043e186 in FACE_FOR_CHAR (object=<optimized out>, pos=<optimized out>,
    character=<optimized out>, face=0x7cdaad2db4c0, f=<optimized out>)
    at dispextern.h:1818
#11 get_next_display_element (it=it@entry=0x7f7fffe82f90) at xdisp.c:7303
#12 0x000000000044790b in display_line (it=it@entry=0x7f7fffe82f90,
    cursor_vpos=cursor_vpos@entry=0) at xdisp.c:21409
#13 0x000000000044ab97 in try_window (window=window@entry=137278716771333, pos=...,
    flags=flags@entry=0) at xdisp.c:17627
#14 0x000000000045e783 in redisplay_window (window=137278716771333,
    just_this_one_p=just_this_one_p@entry=false) at xdisp.c:16811
#15 0x0000000000461d78 in redisplay_window_0 (window=window@entry=137278716771333)
    at xdisp.c:14831
#16 0x0000000000547c1f in internal_condition_case_1 (
    bfun=bfun@entry=0x461d4f <redisplay_window_0>, arg=137278716771333,
    handlers=<optimized out>, hfun=hfun@entry=0x42929e <redisplay_window_error>)
    at eval.c:1356
#17 0x000000000042d9ae in redisplay_windows (window=137278716771333) at xdisp.c:14811
#18 0x000000000044f61d in redisplay_internal () at xdisp.c:14300
#19 0x000000000045133e in redisplay () at xdisp.c:13518
#20 0x00000000004e58eb in read_char (commandflag=commandflag@entry=1,
    map=map@entry=137278680449907, prev_event=0,
    used_mouse_menu=used_mouse_menu@entry=0x7f7fffe883cb, end_time=end_time@entry=0x0)
    at keyboard.c:2480
#21 0x00000000004e8b6c in read_key_sequence (keybuf=keybuf@entry=0x7f7fffe884b0,
    prompt=prompt@entry=0, dont_downcase_last=dont_downcase_last@entry=false,
    can_return_switch_frame=can_return_switch_frame@entry=true,
--Type <RET> for more, q to quit, c to continue without paging--q
Quit
(gdb)

--
					Greg A. Woods <gwoods@acm.org>

Kelowna, BC     +1 250 762-7675           RoboHack <woods@robohack.ca>
Planix, Inc. <woods@planix.com>     Avoncote Farms <woods@avoncote.ca>

[-- Attachment #2: OpenPGP Digital Signature --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

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

* bug#53924: 26.1; fontification sometimes fails for some characters despite available glyphs
  2022-02-13  6:06       ` Greg A. Woods
@ 2022-02-13 11:53         ` Eli Zaretskii
  2022-02-15  2:01           ` Greg A. Woods
  0 siblings, 1 reply; 15+ messages in thread
From: Eli Zaretskii @ 2022-02-13 11:53 UTC (permalink / raw)
  To: Greg A. Woods; +Cc: 53924

> Date: Sat, 12 Feb 2022 22:06:09 -0800
> From: "Greg A. Woods" <woods@robohack.ca>
> 
> First the ancient typo/bug:
> 
> fontset.el contains an errant definition for xlfd-regexp-spacing-subnum
> (with the value '8').  git-blame suggests this typo has lurked for 20
> years!
> 
> It should of course be '9':
> 
>     (defconst xlfd-regexp-spacing-subnum 9) ; fix a 20-year-old typo!

Thanks, fixed for the upcoming Emacs 28.  Fortunately, this defconst
were not used anywhere (which might explain how the typo survived for
so long).

> 	(font-families (cl-remove-duplicates
> 			(sort (font-family-list)
> 			      (lambda(x y) (string> (upcase x) (upcase y))))
> 			:test 'cl-equalp)))

This is not recommended as a way to get useful fonts.  My suggestion
is to use the following instead:

  (delete-dups
   (x-list-fonts "-*-*-medium-r-normal-*-*-*-*-*-*-iso10646-1"
		 'default (selected-frame)))

Indeed, using x-list-fonts indiscriminately could very well include
fonts that Emacs cannot use or even those which will crash Emacs.

> Finally a crash (working on reproducing it with GDB in the source tree,
> but my gdb is having trouble with the emacs .gdbinit):
> 
> Reading symbols from /usr/pkg/bin/emacs-26.1...
> [New process 12954]
> [New process 1873]
> Core was generated by `emacs'.
> Program terminated with signal SIGSEGV, Segmentation fault.
> #0  0x00007cdaa53676aa in _lwp_kill () from /usr/lib/libc.so.12
> [Current thread is 1 (process 12954)]
> (gdb) bt
> #0  0x00007cdaa53676aa in _lwp_kill () from /usr/lib/libc.so.12
> #1  0x00000000004dc6ac in terminate_due_to_signal (sig=sig@entry=11,
>     backtrace_limit=backtrace_limit@entry=40) at emacs.c:394
> #2  0x00000000004f2d13 in handle_fatal_signal (sig=sig@entry=11) at sysdep.c:1769
> #3  0x00000000004f2f53 in deliver_thread_signal (sig=sig@entry=11,
>     handler=0x4f2d05 <handle_fatal_signal>) at sysdep.c:1743
> #4  0x00000000004f2fa6 in deliver_fatal_thread_signal (sig=11) at sysdep.c:1781
> #5  handle_sigsegv (sig=11, siginfo=<optimized out>, arg=<optimized out>)
>     at sysdep.c:1866
> #6  <signal handler called>
> #7  0x00000000005ad68d in fontset_find_font (fontset=fontset@entry=364, c=c@entry=180,
>     face=face@entry=0x7cdaad2db4c0, charset_id=charset_id@entry=-1,
>     fallback=fallback@entry=false) at fontset.c:550
> #8  0x00000000005adfd3 in fontset_font (fontset=fontset@entry=364, c=c@entry=180,
>     face=face@entry=0x7cdaad2db4c0, id=-1) at fontset.c:760
> #9  0x00000000005ae365 in face_for_char (f=0x7cdaafbf2c30,
>     face=face@entry=0x7cdaad2db4c0, c=180, pos=<optimized out>, object=<optimized out>)
>     at fontset.c:990
> #10 0x000000000043e186 in FACE_FOR_CHAR (object=<optimized out>, pos=<optimized out>,
>     character=<optimized out>, face=0x7cdaad2db4c0, f=<optimized out>)
>     at dispextern.h:1818
> #11 get_next_display_element (it=it@entry=0x7f7fffe82f90) at xdisp.c:7303
> #12 0x000000000044790b in display_line (it=it@entry=0x7f7fffe82f90,
>     cursor_vpos=cursor_vpos@entry=0) at xdisp.c:21409

Is this with the above Lisp program that tries all the fonts collected
by font-family-list, or is this with some other recipe to reproduce
the crash?  Also, was that in "emacs -Q"?





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

* bug#53924: 26.1; fontification sometimes fails for some characters despite available glyphs
  2022-02-13 11:53         ` Eli Zaretskii
@ 2022-02-15  2:01           ` Greg A. Woods
  2022-02-15 14:21             ` Eli Zaretskii
  0 siblings, 1 reply; 15+ messages in thread
From: Greg A. Woods @ 2022-02-15  2:01 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: GNU Emacs Bug Reports

[-- Attachment #1: Type: text/plain, Size: 8116 bytes --]

At Sun, 13 Feb 2022 13:53:27 +0200, Eli Zaretskii <eliz@gnu.org> wrote:
Subject: Re: bug#53924: 26.1; fontification sometimes fails for some characters despite available glyphs
>
> > 	(font-families (cl-remove-duplicates
> > 			(sort (font-family-list)
> > 			      (lambda(x y) (string> (upcase x) (upcase y))))
> > 			:test 'cl-equalp)))
>
> This is not recommended as a way to get useful fonts.

Perhaps you can explain that better or differently so I can try to
understand?

I chose font-family-list because it is (supposedly) window-system
agnostic.  Indeed it works fine on macOS too, and it transparently even
does approximately the right thing on a TTY.


>  My suggestion
> is to use the following instead:
>
>   (delete-dups
>    (x-list-fonts "-*-*-medium-r-normal-*-*-*-*-*-*-iso10646-1"
> 		 'default (selected-frame)))

BTW, delete-dups is wrong, but I finally found seq-uniq (to avoid
cl-lib):

	(seq-uniq
	 (sort (font-family-list)
	       (lambda(x y) (string> (upcase x) (upcase y))))
	 (lambda(x y) (string= (upcase x) (upcase y))))

> Indeed, using x-list-fonts indiscriminately could very well include
> fonts that Emacs cannot use or even those which will crash Emacs.

Indeed -- that's another reason why I chose not to use x-list-fonts!


> Is this with the above Lisp program that tries all the fonts collected
> by font-family-list, or is this with some other recipe to reproduce
> the crash?  Also, was that in "emacs -Q"?

It turns out the crash happens with one font in particular,
"Inconsolata".  I have some cleanup of the versions of that font in
particular that I need to do to be sure I know which one is being used.

I can also now confirm the same crash occurs with both GTK+2.0 and with
the Lucid (xaw3d) toolkits, and in both 26.1 and today's Git "master".

The strange behaviour with glyph selection in some fonts also occurs
with the Lucid toolkit, and on today's Git "master".

The Lucid toolkit though seems to do font-scaling bass-ackwards
w.r.t. handling display resolution, and it also chooses "fixed" as the
default base font, which is not scalable (though that makes the effects
of the incorrect glyph choices extremely obvious on a hi-res display
since the bad glyphs are now 1/4 the size they should be).

--
					Greg A. Woods <gwoods@acm.org>

Kelowna, BC     +1 250 762-7675           RoboHack <woods@robohack.ca>
Planix, Inc. <woods@planix.com>     Avoncote Farms <woods@avoncote.ca>


Latest show-all-font-families:

(defun show-all-font-families (&optional sample-text mono-only)
  "Show SAMPLE-TEXT (by default `list-faces-sample-text') in
'roman', 'bold', 'italic', and 'bold italic' for each font family
known to `font-family-list'.

If MONO-ONLY, include ':spacing m' in the `font-spec' parameters.
Interactively, a negative prefix does the same.

Note you can seem some strange results for fonts that don't have
each of the requested weight and slant forms.  Sometimes
proportional glyphs will even be substituted for mono-spaced
glyphs!  Sometimes a glyph from a different font (the default
font?) will be substituted even when the requested font is
available with all the requested attributes, e.g. 'office code
pro'.  (Perhaps because it is _only_ avaliable with the requested
attributes, but no others?)

Also some proportional fonts will show up despite only
mono-spaced fonts being selected.  Perhaps spacing is ignored
when requesting a font?  Note even `x-list-fonts' warns that:

    Fonts Emacs can't use may or may not be excluded...

N.B. WARNING:  This code may try to display fonts that cannot be
opened and as a result will crash Emacs!  Worse yet it can get
stuck rendering fonts and if killed cause the X11 server to go
into a CPU-bound loop that may take hours to resolve!  Kill it
sooner than later!  This is particularly true for Emacs-26.1 when
the MONO-ONLY parameter is non-nil.  See also the exclusion of
the 'droid' fonts.

Derived from an example on the EmacsWiki."
  (interactive
   (list
    ;; optional `sample-text':
    (if current-prefix-arg
	(read-string
	 "Sample text: "
	 ascii-sample-text
	 'sample-text-history))
    ;; optional `mono-only':
    (cond
     ((eq current-prefix-arg '-)
      t)
     ((and (numberp current-prefix-arg)
           (< current-prefix-arg 0))
      t)
     ((and (listp current-prefix-arg)
           (numberp (car current-prefix-arg))
           (< (car current-prefix-arg) 0))
      t)
     (t nil))))
  (let ((str (if sample-text
		 sample-text
	       list-faces-sample-text))
	(font-families (seq-uniq
			;; note:  the list is reversed so that font text is
			;; inserted in the demo buffer the right order
			(sort (font-family-list)
			      (lambda(x y) (string> (upcase x) (upcase y))))
			(lambda(x y) (string= (upcase x) (upcase y))))))
    (with-help-window "*Font Families*"
      (with-current-buffer standard-output
	(dolist (ff font-families)
	  (let* ((fs (font-spec :family ff
;				:weight 'medium :slant 'r
				;; xxx :spacing is confusing
				;; see below for additional test to confirm!
				(if mono-only :spacing) (if mono-only 'm)
				:dpi (round (/ (display-pixel-height)
					       (/ (display-mm-height) 25.4)))
				:registry 'iso10646-1))
		 (fl (list-fonts fs))
		 (fe (car fl))			; usually the cdr is non-scalable?
		 (xlfd (if fe
			   (font-xlfd-name fe)
			 (font-xlfd-name fs)))	; xxx font may not be useable
		 (fn (if (eq window-system 'x)
			 (condition-case nil
			     (x-resolve-font-name xlfd)
			   (error (message "Invalid font family: %s" ff)
				  nil))
		       nil))
		 (xlfd-fields (if fn
				  (x-decompose-font-name fn) ; xxx not really an X11 function
				nil))
		 )
	    ;; XXX the "droid*" fonts are broken???
	    (if (and (not (string-match "droid" ff))
		     (not (string-equal "inconsolata" ff)) ; xxx may crash Emacs!!!
		     (not (string-equal "nil" ff)) ; xxx never a useful font
;		     (not (string-match "italic" ff)) ; xxx rarely in all other styles
;		     (not (string-match "bold" ff)) ; xxx rarely in all other styles
		     (not (string-match ".pcf" ff)) ; xxx usually bitmap cursors
		     ;;
		     ;; xxx some fonts, e.g. "inconsolata" (which xfontsel says
		     ;; is both 'm' and 'p'), will return the "wrong" spacing in
		     ;; the XLFD if the request has a wild-card (i.e. :spacing
		     ;; unspecified), but then it can't be found with
		     ;; `font-info' with the explicit ":spacing 'p".
		     ;;
		     (condition-case nil
			 (if (font-info xlfd) ; xxx can this also return nil?
			     t
			   (message "Can't get font info for: %s" xlfd)
			   nil)
		       (error (message "Bad font: %s" xlfd)
			      nil))
		     (if mono-only
			 (if xlfd-fields
			     ;; because `x-resolve-font-name' sometimes ignores
			     ;; `:spacing' we must confirm the font matches
			     ;; xxx `xlfd-regexp-spacing-subnum' is WRONG, for 20 years!
			     (if (string-equal (aref xlfd-fields 9) "m")
				 t
			       (message "Font not actually monospaced: %s" xlfd)
			       nil)
			   ;; xxx try `font-get' on `fe', but that doesn't seem to
			   ;; work properly for getting `:spacing'!?!?!?!?
			   (if (eq window-system 'x)
			       (message "Can't resolve X font for: %s" xlfd)))
		       t))
		(progn
		  (message "Inserting text for font: %s" xlfd)
		  ;; xxx XXX N.B.:  without escaping the semicolons emacs can't
		  ;; parse these expressions backwards!!!
		  (insert "\; " ff ":" xlfd "\n\;\n"
			  "\;\t" ff " (plain):\n\;\n"
			  (propertize str 'font-lock-face
				      `(:family ,ff :weight medium :slant r))
			  "\n\;\n\;\t" ff " [bold]:\n\;\n"
			  (propertize str 'font-lock-face
				      `(:family ,ff :weight bold :slant r))
			  "\n\;\n\;\t " ff " [italic]:\n\;\n"
			  (propertize str 'font-lock-face
				      `(:family ,ff :weight medium :slant italic))
			  "\n\;\n\;\t " ff " [bold italic]:\n\;\n"
			  (propertize str 'font-lock-face
				      `(:family ,ff :weight bold :slant italic))
			  "\n\;\n\f\n"))
	      (message "Not showing font-family: %s" ff)))
	  (goto-char (point-min))
	  (setq case-fold-search t)
	  (if (fboundp 'form-feed-mode)
	      (form-feed-mode nil)))))))

[-- Attachment #2: OpenPGP Digital Signature --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

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

* bug#53924: 26.1; fontification sometimes fails for some characters despite available glyphs
  2022-02-15  2:01           ` Greg A. Woods
@ 2022-02-15 14:21             ` Eli Zaretskii
  2022-02-15 22:04               ` Greg A. Woods
  2022-02-16  2:32               ` Greg A. Woods
  0 siblings, 2 replies; 15+ messages in thread
From: Eli Zaretskii @ 2022-02-15 14:21 UTC (permalink / raw)
  To: Greg A. Woods; +Cc: 53924

> Date: Mon, 14 Feb 2022 18:01:43 -0800
> From: "Greg A. Woods" <woods@robohack.ca>
> Cc: GNU Emacs Bug Reports <53924@debbugs.gnu.org>
> 
> > > 	(font-families (cl-remove-duplicates
> > > 			(sort (font-family-list)
> > > 			      (lambda(x y) (string> (upcase x) (upcase y))))
> > > 			:test 'cl-equalp)))
> >
> > This is not recommended as a way to get useful fonts.
> 
> Perhaps you can explain that better or differently so I can try to
> understand?

Certainly.  Which part(s) would you like me to explain better?

> I chose font-family-list because it is (supposedly) window-system
> agnostic.  Indeed it works fine on macOS too, and it transparently even
> does approximately the right thing on a TTY.

font-family-list yields a list that includes fonts that are not
necessarily appropriate for Emacs.  As does x-list-fonts, if run with
just one argument.

> >  My suggestion
> > is to use the following instead:
> >
> >   (delete-dups
> >    (x-list-fonts "-*-*-medium-r-normal-*-*-*-*-*-*-iso10646-1"
> > 		 'default (selected-frame)))
> 
> BTW, delete-dups is wrong, but I finally found seq-uniq (to avoid
> cl-lib):

I don't see why delete-dups would be wrong here, but that's a tangent.

> 	(seq-uniq
> 	 (sort (font-family-list)
> 	       (lambda(x y) (string> (upcase x) (upcase y))))
> 	 (lambda(x y) (string= (upcase x) (upcase y))))

The problem with this is that it doesn't filter out fonts that are too
small for the frame, and fonts that cannot be used for the 'default'
face.  So the result is still unsafe.

> > Indeed, using x-list-fonts indiscriminately could very well include
> > fonts that Emacs cannot use or even those which will crash Emacs.
> 
> Indeed -- that's another reason why I chose not to use x-list-fonts!

But font-family-list is not better.  In fact, it's worse, because it
doesn't support the filtering x-list-fonts does when used with 3
arguments, and when the font XLFD pattern is set up to produce only
fonts that can be safely used in Emacs for the 'default' face.

> > Is this with the above Lisp program that tries all the fonts collected
> > by font-family-list, or is this with some other recipe to reproduce
> > the crash?  Also, was that in "emacs -Q"?
> 
> It turns out the crash happens with one font in particular,
> "Inconsolata".  I have some cleanup of the versions of that font in
> particular that I need to do to be sure I know which one is being used.
> 
> I can also now confirm the same crash occurs with both GTK+2.0 and with
> the Lucid (xaw3d) toolkits, and in both 26.1 and today's Git "master".

Can you show a simple Emacs -Q invocation with that font which
crashes?  Then I think I or someone else could look into the reasons.





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

* bug#53924: 26.1; fontification sometimes fails for some characters despite available glyphs
  2022-02-15 14:21             ` Eli Zaretskii
@ 2022-02-15 22:04               ` Greg A. Woods
  2022-02-16  2:32               ` Greg A. Woods
  1 sibling, 0 replies; 15+ messages in thread
From: Greg A. Woods @ 2022-02-15 22:04 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: GNU Emacs Bug Reports

[-- Attachment #1: Type: text/plain, Size: 6872 bytes --]

At Tue, 15 Feb 2022 16:21:43 +0200, Eli Zaretskii <eliz@gnu.org> wrote:
Subject: Re: bug#53924: 26.1; fontification sometimes fails for some characters despite available glyphs
>
> Can you show a simple Emacs -Q invocation with that font which
> crashes?  Then I think I or someone else could look into the reasons.

I'll work on that.

In the mean time here's another crash in the exact same spot, but this
time triggered a new way, while trying to zoom the "*Font Families*"
window created by my test function with text-scale-adjust (C-x C-+).
Before zooming all the sample text for all fonts in the window was
viewable without any problem.

I still can't figure out, I think because of the inline function,
exactly which line within fontset_find_font() where the crash happens.

Perhaps I should rebuild with -O0?

(this is Emacs from yesterday's Git master, with the Lucid toolkit)


(gdb) source ../src/.gdbinit
SIGINT is used by the debugger.
Are you sure you want to change it? (y or n) [answered Y; input not from terminal]
DISPLAY = very.local:0
TERM = xterm-256color
Breakpoint 1 at 0xdcd800: file ../../src/emacs.c, line 408.
Breakpoint 2 at 0x4c7bdd: file ../../src/xterm.c, line 13072.
../src/.gdbinit:1375: Error in sourced command file:
Scripting in the "Python" language is not supported in this copy of GDB.
(gdb) run
Starting program: /work/woods/m-emacs/build-x86_64-nb9.99.81/src/emacs-29.0.50.1
[New LWP 17054 of process 7937]
[New process 7937]
Thread 1 "" received signal SIGSEGV, Segmentation fault.
fontset_find_font (fontset=fontset@entry=0xacb, c=c@entry=180,
    face=face@entry=0x7f04f5ec82c0, charset_id=charset_id@entry=-1,
    fallback=fallback@entry=false) at ../../src/lisp.h:757
757       return lisp_h_XLP (o);
(gdb) pp fontset
#<INVALID_LISP_OBJECT 0x00000acb>
(gdb) pp face
#<INVALID_LISP_OBJECT 0x7f04f5ec82c0>
(gdb) print fontset
$1 = (Lisp_Object) 0xacb
(gdb) print face
$2 = (struct face *) 0x7f04f5ec82c0
(gdb) print *fontset
$4 = <incomplete type>
(gdb) print *face
$3 = {lface = {0x63f0, 0x7f05110cd184, 0x7f0515df8dc4, 0xb2e0, 0x26e, 0xa170,
    0x7f05133441b0, 0x0, 0x0, 0x7f0515e54404, 0x7f0515e54424, 0x0, 0x0, 0x0, 0x0,
    0x7f0512221465, 0x0, 0x7f0511de0864, 0xf480, 0x0}, id = 4121, gc = 0x0, stipple = 0,
  foreground = 0, background = 16777215, underline_color = 0, overline_color = 0,
  strike_through_color = 0, box_color = 0, font = 0x0, fontset = -1,
  box_vertical_line_width = 0, box_horizontal_line_width = 0,
  underline_pixels_above_descent_line = 0, box = FACE_NO_BOX,
  underline = FACE_NO_UNDERLINE, use_box_color_for_shadows_p = false,
  overline_p = false, strike_through_p = false, foreground_defaulted_p = false,
  background_defaulted_p = false, underline_defaulted_p = false,
  overline_color_defaulted_p = false, strike_through_color_defaulted_p = false,
  box_color_defaulted_p = false, underline_at_descent_line_p = false,
  tty_bold_p = false, tty_italic_p = false, tty_underline_p = false,
  tty_reverse_p = false, tty_strike_through_p = false, colors_copied_bitwise_p = false,
  overstrike = false, hash = 34914959679024, next = 0x7f04fbd65a40, prev = 0x0,
  ascii_face = 0x7f04f5ec82c0, extra = 0x0}
(gdb) info locals
vec = <optimized out>
font_group = <optimized out>
i = <optimized out>
charset_matched = 0
found_index = <optimized out>
f = <optimized out>
rfont_def = <optimized out>
(gdb) bt
#0  fontset_find_font (fontset=fontset@entry=0xacb, c=c@entry=180,
    face=face@entry=0x7f04f5ec82c0, charset_id=charset_id@entry=-1,
    fallback=fallback@entry=false) at ../../src/lisp.h:757
#1  0x00000000005ee5dd in fontset_font (fontset=fontset@entry=0xacb, c=c@entry=180,
    face=face@entry=0x7f04f5ec82c0, id=-1) at ../../src/fontset.c:766
#2  0x00000000005eec55 in face_for_char (f=0x7f051297e9e0,
    face=face@entry=0x7f04f5ec82c0, c=180, pos=<optimized out>, object=<optimized out>)
    at ../../src/fontset.c:996
#3  0x0000000000436fd2 in FACE_FOR_CHAR (object=<optimized out>, pos=<optimized out>,
    character=<optimized out>, face=0x7f04f5ec82c0, f=<optimized out>)
    at ../../src/dispextern.h:1908
#4  get_next_display_element (it=it@entry=0x7f7fffb88b10) at ../../src/xdisp.c:8012
#5  0x000000000043e326 in display_line (it=it@entry=0x7f7fffb88b10,
    cursor_vpos=cursor_vpos@entry=0) at ../../src/xdisp.c:24105
#6  0x00000000004437fa in try_window (window=window@entry=0x7f0508317cfd, pos=...,
    flags=flags@entry=1) at ../../src/xdisp.c:20009
#7  0x0000000000461bc8 in redisplay_window (window=0x7f0508317cfd,
    just_this_one_p=just_this_one_p@entry=false) at ../../src/xdisp.c:19416
#8  0x0000000000463881 in redisplay_window_0 (window=window@entry=0x7f0508317cfd)
    at ../../src/xdisp.c:17061
#9  0x0000000000572a8e in internal_condition_case_1 (
    bfun=bfun@entry=0x463858 <redisplay_window_0>, arg=arg@entry=0x7f0508317cfd,
    handlers=<optimized out>, hfun=hfun@entry=0x417fee <redisplay_window_error>)
    at ../../src/eval.c:1503
#10 0x000000000041ab68 in redisplay_windows (window=0x7f0508317cfd)
    at ../../src/xdisp.c:17041
#11 0x000000000044cb8f in redisplay_internal () at ../../src/xdisp.c:16509
#12 0x000000000044df61 in redisplay () at ../../src/xdisp.c:15719
#13 0x0000000000502cb8 in read_char (commandflag=commandflag@entry=1,
    map=map@entry=0x7f051157e083, prev_event=0x0,
    used_mouse_menu=used_mouse_menu@entry=0x7f7fffb8dbfb, end_time=end_time@entry=0x0)
    at ../../src/keyboard.c:2586
#14 0x000000000050448f in read_key_sequence (keybuf=keybuf@entry=0x7f7fffb8dd10,
    prompt=prompt@entry=0x0, dont_downcase_last=dont_downcase_last@entry=false,
    can_return_switch_frame=can_return_switch_frame@entry=true,
    fix_current_buffer=fix_current_buffer@entry=true,
    prevent_redisplay=prevent_redisplay@entry=false) at ../../src/keyboard.c:9778
#15 0x0000000000505f82 in command_loop_1 () at ../../src/lisp.h:1153
#16 0x0000000000572a08 in internal_condition_case (
    bfun=bfun@entry=0x505d75 <command_loop_1>, handlers=handlers@entry=0x90,
    hfun=hfun@entry=0x4fa596 <cmd_error>) at ../../src/eval.c:1479
#17 0x00000000004f3f97 in command_loop_2 (handlers=handlers@entry=0x90)
    at ../../src/keyboard.c:1137
#18 0x000000000057296e in internal_catch (tag=tag@entry=0xe9d0,
--Type <RET> for more, q to quit, c to continue without paging--
    func=func@entry=0x4f3f81 <command_loop_2>, arg=arg@entry=0x90)
    at ../../src/eval.c:1210
#19 0x00000000004f3f50 in command_loop () at ../../src/lisp.h:1153
#20 0x00000000004fa1da in recursive_edit_1 () at ../../src/keyboard.c:724
#21 0x00000000004fa4ef in Frecursive_edit () at ../../src/keyboard.c:807
#22 0x0000000000dd55d7 in main (argc=2, argv=0x7f7fffb8e098) at ../../src/emacs.c:2430
(gdb)

--
					Greg A. Woods <gwoods@acm.org>

Kelowna, BC     +1 250 762-7675           RoboHack <woods@robohack.ca>
Planix, Inc. <woods@planix.com>     Avoncote Farms <woods@avoncote.ca>

[-- Attachment #2: OpenPGP Digital Signature --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

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

* bug#53924: 26.1; fontification sometimes fails for some characters despite available glyphs
  2022-02-15 14:21             ` Eli Zaretskii
  2022-02-15 22:04               ` Greg A. Woods
@ 2022-02-16  2:32               ` Greg A. Woods
  2022-02-16  3:36                 ` Eli Zaretskii
  2022-02-16 22:14                 ` Lars Ingebrigtsen
  1 sibling, 2 replies; 15+ messages in thread
From: Greg A. Woods @ 2022-02-16  2:32 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: GNU Emacs Bug Reports

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=ISO10646-1, Size: 411 bytes --]

\x1eŠ^~éeÊØb²g¬±¨\x1ezw(uë)®Š^®\¢¶ÈhºW[z×±·úej)âžØ^!#µÓ®:ÕÈZ®Ç­Â+a\x04\x04„뇧r‡bž\x04néšrÊ¢žØ^uæî‚\a«³\b­r^[h¶\x17¬r¶­r\x16î}÷«jwbžÇ«¶Ø^~Šæ±·¥£\vazs1zö¥nçßzºÞ¶êçK\b­r^[h¶\x17§{\x01hžÑZš)bzÆî}÷«jwlrº%–ÉhÂ\­†º.‚\x18­\rê^Ø§‚‰á£	šŸ'èžÛ2¢èZ½è§²Ö¥•çZØhÁ©ÝÂ\x16­’)Ý¡úÞ²‹«që2¢êìÊË^šÈZ½ëaŠÇ(ºWmjGªº+^jZ'‚ئx‡í…«]¡ë'¶Úâ‚\a«iÊÚ²^[kÊ
"ž\x06ÚrKh¶\x17›z\b§ž)àŠw+y«\x1e¶\x17­{^[lq©^Â+a
à±\væ§vÇ+¢Ym†º.‚\x16 j)Ó†+,y鬶ŠÞ–&›—'\x1aºÇ­…ç+jÈ_¢¹žjÙ^jËpŠØm…ᢶf¬µêïz»"¢r!j÷›º)mºÈ§‚Ø^–ç"vÚ(–H­

[-- Attachment #2: OpenPGP Digital Signature --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

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

* bug#53924: 26.1; fontification sometimes fails for some characters despite available glyphs
  2022-02-16  2:32               ` Greg A. Woods
@ 2022-02-16  3:36                 ` Eli Zaretskii
  2022-02-16 21:55                   ` Greg A. Woods
  2022-02-16 22:14                 ` Lars Ingebrigtsen
  1 sibling, 1 reply; 15+ messages in thread
From: Eli Zaretskii @ 2022-02-16  3:36 UTC (permalink / raw)
  To: Greg A. Woods; +Cc: 53924

> Date: Tue, 15 Feb 2022 18:32:23 -0800
> From: "Greg A. Woods" <woods@robohack.ca>
> CC: GNU Emacs Bug Reports <53924@debbugs.gnu.org>
> 
> Hopefully this message encodes properly, it should be text/plain, in
> the ISO10646-1 charset, with BASE64 encoding.
> 
> Run "emacs -q" in the debugger, switch to the *scratch* buffer and
> insert the forms below, then:
> 
> M-x eval-buffer <return>
> 
> Switch to the new *Font Families* buffer and scroll slowly through it.
> Depending on how many fonts you have installed, and how, and what kind
> of resources your system(s) have, this could take quite a long time.
> 
> If that doesn't trigger a crash try going back to the beginning,
> increase the text scale with C-u C-x C-+ and scroll through again.
> 
> This seems to reliably cause the crash for me, at least with the Git
> master version I have built using the lucid toolkit..

Like I said before: please try to figure out which font causes the
crashes, and post a recipe with that font alone.  Otherwise, trying to
reproduce this is a huge waste of time, because the results depend
critically on the fonts actually installed on the system.

Thanks.





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

* bug#53924: 26.1; fontification sometimes fails for some characters despite available glyphs
  2022-02-16  3:36                 ` Eli Zaretskii
@ 2022-02-16 21:55                   ` Greg A. Woods
  0 siblings, 0 replies; 15+ messages in thread
From: Greg A. Woods @ 2022-02-16 21:55 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: GNU Emacs Bug Reports

[-- Attachment #1: Type: text/plain, Size: 3998 bytes --]

At Wed, 16 Feb 2022 05:36:24 +0200, Eli Zaretskii <eliz@gnu.org> wrote:
Subject: Re: bug#53924: 26.1; fontification sometimes fails for some characters despite available glyphs
>
> > Date: Tue, 15 Feb 2022 18:32:23 -0800
> > From: "Greg A. Woods" <woods@robohack.ca>
> > CC: GNU Emacs Bug Reports <53924@debbugs.gnu.org>
> >
> > Hopefully this message encodes properly, it should be text/plain, in
> > the ISO10646-1 charset, with BASE64 encoding.
> >
> > Run "emacs -q" in the debugger, switch to the *scratch* buffer and
> > insert the forms below, then:
> >
> > M-x eval-buffer <return>
> >
> > Switch to the new *Font Families* buffer and scroll slowly through it.
> > Depending on how many fonts you have installed, and how, and what kind
> > of resources your system(s) have, this could take quite a long time.
> >
> > If that doesn't trigger a crash try going back to the beginning,
> > increase the text scale with C-u C-x C-+ and scroll through again.
> >
> > This seems to reliably cause the crash for me, at least with the Git
> > master version I have built using the lucid toolkit..
>
> Like I said before: please try to figure out which font causes the
> crashes, and post a recipe with that font alone.  Otherwise, trying to
> reproduce this is a huge waste of time, because the results depend
> critically on the fonts actually installed on the system.

Sorry, I really can't be bothered to waste more of my own time on this
aspect of the problem until I know that you, or someone else, has at
least tried the very simple test I've provided.  It is really very
simple, and it really would be useful if someone other than myself, in
my limited test environment, can try it out to see what happens.  I've
even already identified suspect fonts (e.g. in comments in the code I
supplied), and if you don't have them google will almost instantly tell
you where you can find them to try for yourself.

Any crash is very bad of course, but, the main issue central to this bug
report remains, which is the question of why Emacs chooses to use the
frame's default font for ASCII characters when displaying some fonts but
not others (even simultaneously with both fonts rendered in the same
frame), even when all fonts appear (via other tools) to have all
necessary glyphs for all these same ASCII characters.  The algorithms
for this choice do not seem to be very well documented outside of the
code itself, and the code is extremely convoluted and non-modular.  If
there's something "odd" or otherwise wrong/different with the fonts that
don't display properly, that's fine, I just want to know exactly what
the problem is.  However without knowing even what could be wrong it's
impossible to identify and perhaps fix or otherwise change these
differences using other tools.

My only other available test environment is native macOS with Emacs
using the "nextstep" toolkit.  There it seems Emacs has very a different
and quite opposite "opinion" about ASCII vs. other Unicode characters
(than under X11) -- the macOS native version is happy to show empty
boxes for ASCII characters if the font has none, but it always cobbles
together other Unicode glyphs, e.g. in my sample text, from a variety of
other fonts if the requested font has no glyphs for them.  I have not
seen any crashes in the native macOS environment either.

Anyway this X11 font display issue seems to be central to Emacs' ability
to accurately display things like web pages and other formatted
documents in a more WYSIWYG manner.  It also doesn't make a very good
demo if Emacs can't even show samples of all available fonts in a given
environment.  The crash, which for example might be triggered by an
attempt to use one of the more problematic fonts in displaying a
formatted web page or document, is still secondary to my main issue.

--
					Greg A. Woods <gwoods@acm.org>

Kelowna, BC     +1 250 762-7675           RoboHack <woods@robohack.ca>
Planix, Inc. <woods@planix.com>     Avoncote Farms <woods@avoncote.ca>

[-- Attachment #2: OpenPGP Digital Signature --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

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

* bug#53924: 26.1; fontification sometimes fails for some characters despite available glyphs
  2022-02-16  2:32               ` Greg A. Woods
  2022-02-16  3:36                 ` Eli Zaretskii
@ 2022-02-16 22:14                 ` Lars Ingebrigtsen
  1 sibling, 0 replies; 15+ messages in thread
From: Lars Ingebrigtsen @ 2022-02-16 22:14 UTC (permalink / raw)
  To: Greg A. Woods; +Cc: GNU Emacs Bug Reports

"Greg A. Woods" <woods@robohack.ca> writes:

> Run "emacs -q" in the debugger, switch to the *scratch* buffer and
> insert the forms below, then:
> M-x eval-buffer <return>

This segfaults Emacs 26.1, but not Emacs 29.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





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

end of thread, other threads:[~2022-02-16 22:14 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-02-10 19:02 bug#53924: 26.1; fontification sometimes fails for some characters despite available glyphs Greg A. Woods
2022-02-10 20:21 ` Eli Zaretskii
2022-02-10 23:34   ` Greg A. Woods
2022-02-11  7:15     ` Eli Zaretskii
2022-02-11 21:56       ` Greg A. Woods
2022-02-13  6:06       ` Greg A. Woods
2022-02-13 11:53         ` Eli Zaretskii
2022-02-15  2:01           ` Greg A. Woods
2022-02-15 14:21             ` Eli Zaretskii
2022-02-15 22:04               ` Greg A. Woods
2022-02-16  2:32               ` Greg A. Woods
2022-02-16  3:36                 ` Eli Zaretskii
2022-02-16 21:55                   ` Greg A. Woods
2022-02-16 22:14                 ` Lars Ingebrigtsen
     [not found] ` <handler.53924.B.164452023325832.ack@debbugs.gnu.org>
2022-02-10 22:42   ` Greg A. Woods

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