diff --git a/lisp/international/fontset.el b/lisp/international/fontset.el index 3deaff9677..533deda61e 100644 --- a/lisp/international/fontset.el +++ b/lisp/international/fontset.el @@ -769,7 +769,9 @@ setup-default-fontset nil 'append)) ;; Special settings for `MATHEMATICAL (U+1D400..U+1D7FF)'. - (dolist (math-subgroup '((#x1D400 #x1D433 mathematical-bold) + (dolist (math-subgroup '( + ;; First pass: A-z range. + (#x1D400 #x1D433 mathematical-bold) (#x1D434 #x1D467 mathematical-italic) (#x1D468 #x1D49B mathematical-bold-italic) (#x1D49C #x1D4CF mathematical-script) @@ -782,6 +784,7 @@ setup-default-fontset (#x1D608 #x1D63B mathematical-sans-serif-italic) (#x1D63C #x1D66F mathematical-sans-serif-bold-italic) (#x1D670 #x1D6A3 mathematical-monospace) + ;; Additional passes: dotless, greek, digits, etc. (#x1D6A4 #x1D6A5 mathematical-italic) (#x1D6A8 #x1D6E1 mathematical-bold) (#x1D6E2 #x1D71B mathematical-italic) @@ -792,13 +795,16 @@ setup-default-fontset (#x1D7D8 #x1D7E1 mathematical-double-struck) (#x1D7E2 #x1D7EB mathematical-sans-serif) (#x1D7EC #x1D7F5 mathematical-sans-serif-bold) - (#x1D7F6 #x1D7FF mathematical-monospace))) + (#x1D7F6 #x1D7FF mathematical-monospace) + )) (let ((slot (assq (nth 2 math-subgroup) script-representative-chars))) (if slot - (if (vectorp (cdr slot)) - (setcdr slot (vconcat (cdr slot) (vector (car math-subgroup)))) - (setcdr slot (vector (cadr slot) (car math-subgroup)))) - (setq slot (list (nth 2 math-subgroup) (car math-subgroup))) + (push (car math-subgroup) (cdr slot)) + ;; First pass: add both CAPITAL A and SMALL A to guard against + ;; fonts that only cover capital codepoints. + (setq slot (list (nth 2 math-subgroup) + (car math-subgroup) + (+ 26 (car math-subgroup)))) (nconc script-representative-chars (list slot)))) (set-fontset-font "fontset-default"