Am probleme cu fontconfig la recunoașterea fișierului ui-monospace
font pe care mai multe site-uri web (inclusiv site-urile Github și Stack Exchange) au început recent să-l folosească. Firefox nu are încă acea referință CSS specială la fonturile de sistem (vezi Bug FF 1226042, cel proiect de specificație, si este Pot folosi intrarea), iar FF este păcălit și de fontconfig, care va satisface orice font cu atribuirea implicită pentru sans-serif.
Ca o soluție, aș dori să numesc în mod explicit acest nume de font cu fontul meu preferat monospațiu (care este Panic Sans, o variantă DejaVu Sans Mono ajustată care împinge puțin sublinierea), dar din moment ce este atât de obscur, această întrebare folosește DejaVu Sans Mono.
Prima mea încercare la această soluție nu funcționează:
<alias>
<family>ui-monospace</family>
<prefer><family>DejaVu Sans Mono</family></prefer>
</alias>
O altă încercare care a avut mai mult succes pentru alte fonturi:
<match>
<test name="family"><string>ui-monospace</string></test>
<edit name="family" mode="assign" binding="strong">
<string>DejaVu Sans Mono</string>
</edit>
</match>
Când îl salvez și șterg memoria cache, nu funcționează:
$ grep ui.monospace ~/.config/fontconfig/fonts.conf
<test name="family"><string>ui-monospace</string></test>
$ fc-cache -f
$ fc-match 'ui-monospace'
Carlito-Regular.ttf: „Carlito” „Regular”
$ fc-match sans-serif
Carlito-Regular.ttf: „Carlito” „Regular”
Deci asta nu merge. Iată partea curioasă: funcționează când folosesc un spațiu în loc de o cratimă:
$ sed -i 's/ui-monospace/ui monospace/' ~/.config/fontconfig/fonts.conf
$ grep ui.monospace ~/.config/fontconfig/fonts.conf
<test name="family"><string>ui monospace</string></test>
$ fc-cache -f
$ fc-match „ui monospace”
DejaVuSansMono.ttf: „DejaVu Sans Mono” „Carte”
Deci se pare că problema este cratima. Nu văd nicio documentație (sau rapoarte de erori) care să sugereze această problemă; cel documente fontconfig pentru <string>
nu notați astfel de caractere ilegale sau cum să scăpați de ele. Am încercat să o definesc ca <string>ui\-monospace</string>
și <string>ui-monospace</string>
(și -
) dar niciuna dintre acestea nu a funcționat.
Cum configurez fontconfig pentru a mapa un nume de font cu o cratimă?