script-representative-chars would contain: > (mathematical-script . [119964 119990]) I meant that suggestion as a band-aid fix if we deem that Emacs should guard against these "incomplete" fonts. Not sure it makes sense as-is though, since it yields a vector; judging by script-representative-chars's docstring (and a cursory glance at ftfont_list and font_match_p), a list would be more appropriate, to make all codepoints mandatory? >> 1. (push #x1D4CF (alist-get 'mathematical-script >> script-representative-chars)) >> 2. (set-fontset-font >> t 'mathematical "DejaVu Math TeX Gyre" nil 'prepend) >> 3. Uninstall KpMath. > > I'd suggest to do 3 regardless. A font that supports only part of a > block is a bad font to have. (Right; AFAICT KpMath got pulled in when I installed TeXLive. I'm not entirely sure why the font was designed this way; I couldn't find a rationale in the documentation hosted on CTAN[2]) > Emacs should probably do the equivalent of 1 OK; I'll try to follow-up with a bug report and a patch SomeDay™ then. Again, thanks for your explanations. [1] $ fc-list ':charset=1d4c1' ⇒ a bunch of fonts, including DejaVu Math TeX Gyre but *not* KpMath $ fc-match -f '%{charset}\n' 'KpMath' … 1d456-1d49c 1d49e-1d49f 1d4a2 1d4a5-1d4a6 1d4a9-1d4ac 1d4ae-1d4b5 1d4d0-1d4e9 … ⇒ includes U+1D49C–U+1D4B5 (minus nonexistent codepoints) but not U+1D4B6–U+1D4CF $ fc-match -f '%{charset}\n' 'DejaVu Math TeX Gyre' … 1d456-1d49c 1d49e-1d49f 1d4a2 1d4a5-1d4a6 1d4a9-1d4ac 1d4ae-1d4b9 1d4bb 1d4bd-1d4c3 1d4c5-1d505… ⇒ includes U+1D49C–U+1D4B5 *and* U+1D4B6–U+1D4CF (minus nonexistent codepoints) [2] https://ctan.org/pkg/kpfonts https://ctan.org/pkg/kpfonts-otf The "List of glyphs" document from this second page, § 15.1.8, features a table that clearly shows that KpMath (column "K") does not contain the lowercase glyphs, but I fail to find a design rationale.