Subject: bug#32159: 26.1; inhibit-compacting-font-caches does not fix all fonts lagging issue

From: Moses <[email-masked]>
Date: Sun, 22 Jul 2018 14:52:54 +0000

On Sun, Jul 22, 2018 at 2:06 PM Eli Zaretskii <[email-masked]> wrote:
> Can you try to make this a little more quantitative?  How long did it
> take before and how long after the fontset customizations?

Gnus was usually stopped responding and lagging several seconds when
scrolling before the fontset customization. It is much better now.

> And why
> did you need many failed trials, what was the problem that prevented
> you from succeeding on the first trial?

I need to pair every fonts name and script name for every
script/language but I do not know the font name for some
scripts/languages. So I leave Emacs to find the correct font and use
M-x descript-char on these language's character to find the font name.
When there are many languages, it takes some time. And I also found I
made some mistake before, so I need to delete the incorrect one and
repeat these step for that specific script/language again.

> Which scripts are the ones for which you needed to customize the
> fontset?  I mean in your real-life use cases, not for displaying
> HELLO.

This is my font setting, the Linux part is not complete, because
currently, I am on my Windows box.

;; font
(setq font-encoding-alist
(append '(("gb2312.1980" . chinese-gbk)
   ("iso8859-1$" . iso-8859-1)
   ("iso8859-2$" . iso-8859-2)
   ("iso8859-3$" . iso-8859-3)
   ("iso8859-4$" . iso-8859-4)
   ("iso8859-5$" . iso-8859-5)
   ("iso8859-6$" . iso-8859-6)
   ("iso8859-7$" . iso-8859-7)
   ("iso8859-8$" . iso-8859-8)
   ("iso8859-9$" . iso-8859-9)
   ("iso8859-10$" . iso-8859-10)
   ("iso8859-11$" . iso-8859-11)
   ("iso8859-13$" . iso-8859-13)
   ("iso8859-14$" . iso-8859-14)
   ("iso8859-15$" . iso-8859-15)
   ("iso8859-16$" . iso-8859-16)
   ("ascii-0$" . ascii)
   ("gb2312.1980" . chinese-gb2312)
   ("gbk" . chinese-gbk)
   ("gb18030" unicode)
   ("jisx0208.1978" . japanese-jisx0208-1978)
   ("jisx0208" . japanese-jisx0208)
   ("jisx0201" . jisx0201)
   ("jisx0212" . japanese-jisx0212)
   ("ksx1001" . korean-ksc5601)
   ("ksc5601.1987" . korean-ksc5601)
   ("cns11643.1992.*1" . chinese-cns11643-1)
   ("cns11643.1992.*2" . chinese-cns11643-2)
   ("cns11643.1992.*3" . chinese-cns11643-3)
   ("cns11643.1992.*4" . chinese-cns11643-4)
   ("cns11643.1992.*5" . chinese-cns11643-5)
   ("cns11643.1992.*6" . chinese-cns11643-6)
   ("cns11643.1992.*7" . chinese-cns11643-7)
   ("cns11643.92p1-0" . chinese-cns11643-1)
   ("cns11643.92p2-0" . chinese-cns11643-2)
   ("cns11643.92p3-0" . chinese-cns11643-3)
   ("cns11643.92p4-0" . chinese-cns11643-4)
   ("cns11643.92p5-0" . chinese-cns11643-5)
   ("cns11643.92p6-0" . chinese-cns11643-6)
   ("cns11643.92p7-0" . chinese-cns11643-7)
   ("big5" . big5)
   ("viscii" . viscii)
   ("tis620" . tis620-2533)
   ("microsoft-cp1251" . windows-1251)
   ("koi8-r" . koi8-r)
   ("jisx0213.2000-1" . japanese-jisx0213-1)
   ("jisx0213.2000-2" . japanese-jisx0213-2)
   ("jisx0213.2004-1" . japanese-jisx0213\.2004-1)
   ("iso10646-1$" unicode-bmp)
   ("iso10646.indian-1" unicode-bmp)
   ("unicode-bmp" unicode-bmp)
   ("abobe-symbol" . symbol)
   ("sisheng_cwnn" . chinese-sisheng)
   ("mulearabic-0" . arabic-digit)
   ("mulearabic-1" . arabic-1-column)
   ("mulearabic-2" . arabic-2-column)
   ("muleipa" . ipa)
   ("ethiopic-unicode" unicode-bmp . ethiopic)
   ("is13194-devanagari" . indian-is13194)
   ("Devanagari-CDAC" . devanagari-cdac)
   ("Sanskrit-CDAC" . sanskrit-cdac)
   ("Bengali-CDAC" . bengali-cdac)
   ("Assamese-CDAC" . assamese-cdac)
   ("Punjabi-CDAC" . punjabi-cdac)
   ("Gujarati-CDAC" . gujarati-cdac)
   ("Oriya-CDAC" . oriya-cdac)
   ("Tamil-CDAC" . tamil-cdac)
   ("Telugu-CDAC" . telugu-cdac)
   ("Kannada-CDAC" . kannada-cdac)
   ("Malayalam-CDAC" . malayalam-cdac)
   ("Devanagari-Akruti" . devanagari-akruti)
   ("Bengali-Akruti" . bengali-akruti)
   ("Punjabi-Akruti" . punjabi-akruti)
   ("Gujarati-Akruti" . gujarati-akruti)
   ("Oriya-Akruti" . oriya-akruti)
   ("Tamil-Akruti" . tamil-akruti)
   ("Telugu-Akruti" . telugu-akruti)
   ("Kannada-Akruti" . kannada-akruti)
   ("Malayalam-Akruti" . malayalam-akruti)
   ("muleindian-2" . indian-2-column)
   ("muleindian-1" . indian-1-column)
   ("mulelao-1" . mule-lao)
   ("muletibetan-2" . tibetan)
   ("muletibetan-0" . tibetan)
   ("muletibetan-1" . tibetan-1-column))
font-encoding-alist)
)

(defun my--set-font (&optional frame)
  (with-selected-frame (or frame (selected-frame))
    (if (string-equal system-type "windows-nt")
;; Windows
(progn
  (set-face-attribute 'default nil :font "consolas")
  (dolist (charset '(han cjk-misc chinese-gbk))
    (set-fontset-font "fontset-default" charset (font-spec :family
"Microsoft Jhenghei")))
    (set-fontset-font "fontset-default" 'kana '("Meiryo" . "iso10646-1"))
    (set-fontset-font "fontset-default" 'hangul '("Malgun Gothic" .
"iso10646-1"))
    (set-fontset-font "fontset-default" 'arabic '("Adobe Naskh Medium"
. "iso10646-1"))
    (set-fontset-font "fontset-default" 'cyrillic '("Consolas" . "iso10646-1"))
    (set-fontset-font "fontset-default" 'gujarati '("Nirmala UI" .
"iso10646-1"))
    (set-fontset-font "fontset-default" 'devanagari '("Adobe
Devanagari" . "iso10646-1"))
    (set-fontset-font "fontset-default" 'kannada '("Nirmala UI" . "iso10646-1"))
    (set-fontset-font "fontset-default" 'malayalam '("Nirmala UI" .
"iso10646-1"))
    (set-fontset-font "fontset-default" 'oriya '("Nirmala UI" . "iso10646-1"))
    (set-fontset-font "fontset-default" 'sinhala '("Nirmala UI" . "iso10646-1"))
    (set-fontset-font "fontset-default" 'tamil '("Nirmala UI" . "iso10646-1"))
    (set-fontset-font "fontset-default" 'telugu '("Nirmala UI" . "iso10646-1"))
    (set-fontset-font "fontset-default" 'tibetan '("Microsoft
Himalaya" . "iso10646-1"))
    (set-fontset-font "fontset-default" 'burmese '("Myanmar Text" .
"iso10646-1"))

  (setq use-default-font-for-symbols nil)

  (set-fontset-font "fontset-default" 'unicode "Segoe UI Symbol" nil 'append)
  (set-fontset-font "fontset-default" '(#x1F600 . #x1F64F) "Segoe UI
Symbol") ; Emoji
  (set-fontset-font "fontset-default" '(#xE000 . #xF8FF) "STIX")) ;
Private Use Areas
      ;; Linux
      (set-face-attribute
       'default nil :font "Inconsolata 14")
      (dolist (charset '(kana han cjk-misc bopomofo))
(set-fontset-font "fontset-default"
  charset (font-spec :name "Hiragino Sans GB")))))

  (set-fontset-font "fontset-default" 'egyptian '("Noto Sans Egyptian
Hieroglyphs" . "iso10646-1"))
  (set-fontset-font "fontset-default" 'javanese '("Javanese Text" .
"iso10646-1"))
  )

(my--set-font)

(add-hook 'after-make-frame-functions 'my--set-font)

(setq inhibit-compacting-font-caches t)

;; font size
(set-face-attribute 'default nil :height 120)

> You mean, customizing the fontset didn't help with HELLO?  Is it
> possible that you customized the fontset for scripts other than those
> which slow down HELLO?

As you can see, some fontset settings were taken from your previous
post. I only modified the font name to adjust my machine, other parts
is my own. I believe this setup covers all the characters range in the
HELLO file?

> Thanks.