Puncte:1

Cum configurez fontconfig pentru a mapa un nume de font cu o cratimă?

drapel cn

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&#45;monospace</string> (și -) dar niciuna dintre acestea nu a funcționat.

Cum configurez fontconfig pentru a mapa un nume de font cu o cratimă?

drapel eg
Cred că este o problemă cu shell-ul, încercați din nou cu `fc-match "ui\-monospace"`, funcționează pentru mine cu fish shell.
drapel cn
Cratima nu este un caracter special pentru shell (dacă ar fi fost, `fc-match 'ui-monospace'` ar fi funcționat). Acea evadare trebuie văzută de _fc-match_, nu de shell, așa cum demonstrează funcționarea `fc-match "ui\-monospace"`.
drapel eg
Da, prima parte a comentariului meu este greșită. Mă refeream la „interfață de linie de comandă” în opoziție cu API precum pango... Oricum, se pare că `fc-match` are nevoie de evadare. Dar configurația ar trebui să funcționeze cu hypen în fișierul de configurare.
Puncte:0
drapel co

Am pus acest fragment în partea de sus a mea ~/.config/fontconfig/fonts.conf si functioneaza:

  <match target="pattern">
    <test qual="any" name="family">
      <string>ui-monospace</string>
    </test>
    <edit name="family" mode="assign" binding="same">
      <string>monospace</string>
    </edit>
  </match>

Trebuie să fie în partea de sus, înaintea părții care specifică ce monospațiu prefer.

Verificat pe GitHub și de către fc-match „ui\-monospace”.

drapel cn
Da, dar asta trimite o bară oblică inversă în apelul meciului. Dacă faceți `fc-match 'ui-monospace'` sau `fc-match ui-monospace` sau `fc-match "ui-monospace"`, nu funcționează. După cum a menționat Nicolas Goy într-un [comentare la întrebare](https://askubuntu.com/q/1355091/260416#comment2347914_1355091), acesta este de fapt o eroare în linia de comandă `fc-match`. În plus, am avut o altă eroare de redare a fonturilor în aplicațiile mele GUI, care a fost rezolvată printr-o repornire.
drapel co
@AdamKatz mai multe caractere precum `-` sau `:` trebuie să fie eliminate deoarece are o semnificație specială pentru fontconfig. Partea de după `-` este interpretată ca `size` (dar care nu sunt cifrele sunt ignorate). Cu toate acestea, în fișierul de configurare, este deja specificat pentru a testa împotriva „family”.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.