Podstawianie czcionek za pomocą ~ / .fonts.conf

18

Próbuję użyć ~ / .fonts.conf, aby zastąpić Helveticę Droidem Sansem, oto zawartość pliku:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="pattern">
    <test qual="any" name="family"><string>Helvetica</string></test>
    <edit name="family" mode="assign"><string>Droid Sans</string></edit>
  </match>
</fontconfig>

ale bez względu na wszystko wydaje się, że nic się nie dzieje. Próbowałem uruchomić fc-cache, zalogowałem się /etc/fonts/conf.di znalazłem, 50-user.confktóry wyraźnie wywołuje konfiguracje specyficzne dla użytkownika.

czego mi brakuje?

Dzięki

EDYCJA: po badaniu dowiedziałem się, że inne reguły /etc/fonts/conf.dzastępują konfigurację użytkownika, więc link user.confdo 00-user.confpomógł. Nadal jest to tylko częściowy sukces, ponieważ mogę określić, które czcionki powinny zostać zastąpione, ale wybrany przez nas zamiennik jest ignorowany: innymi słowy, mogę uczynić Helveticaniepoprawnym, a system wraca do następnej czcionki (tj. W przeglądarce pobiera następną czcionkę określoną w arkuszu stylów, jeśli nie ma żadnej, wyświetla standardową czcionkę bezszeryfową).

Matteo Riva
źródło
Przybyłem tutaj, bo chciałem osiągnąć coś podobnego. Mam nadzieję, że ktoś ma odpowiedź ...
Ludwig Weinzierl
wciąż szukam odpowiedzi.
Capi Etheriel

Odpowiedzi:

16

Myślę, że brakowało atrybutu wiązania w konfiguracji. (zobacz także fonts-conf ). W zależności od innej konfiguracji powiązanie „tego samego” lub „silnego” może prawdopodobnie działać, podczas gdy „słabe” może nie dać ci tego, czego chcesz.

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="pattern">
    <test qual="any" name="family"><string>Helvetica</string></test>
    <edit name="family" mode="assign" binding="same"><string>Droid Sans</string></edit>
  </match>
</fontconfig>
Frenkx
źródło
1
Pracował dla mnie. Wydaje się, że dodanie bindingatrybutu robi różnicę. Używam fontconfig-2.8.0.
MaoPU,
To zadziałało dla mnie
miloshadzic
3

Sądzę, że mechanizm aliasu by na to zadziałał:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <alias>
    <family>Helvetica</family>
    <prefer>Droid Sans</prefer>
  </alias>
</fontconfig>
Geoff Reedy
źródło
1
Czy <alias> nie służy wyłącznie do zastępowania niezainstalowanych czcionek?
MaoPU,
@MaoPU: Myślałem o tym samym, ale po przeczytaniu dokumentacji doprowadziłem mnie do przekonania, że ​​takie zachowanie jest skonfigurowane. <accept>ma pierwszeństwo, gdy czcionka nie jest zainstalowana, <prefer>ma pierwszeństwo, niezależnie od tego, czy czcionka jest zainstalowana.
JM Becker
/ \ Nie, tak naprawdę nie jest, chyba że .confplik zawierający tę regułę zostanie przeczytany jako pierwszy.
Marc.2377,
Hmm - powiedział, że to robi pracę, jeśli binding="strong"jest używany wraz z <alias>elementem!
Marc.2377,
0

Czy „lista FC” faktycznie pokazuje „Helvetica”? Co mówi fc-match? Na moim pudełku (F-12) dostaję:

 >fc-match Helvetica
n019003l.pfb: "Nimbus Sans L" "Regular"

Być może musisz również dodać aliasowaną czcionkę do zamiany.

wasquez
źródło
0

Podobny problem napotkałem, próbując pseudonimu Helvetica jako rodziny bezszeryfowej. Dla każdego, kto dotknie ten sam problem, spójrz na konfigurację systemu, w /etc/fonts/conf.d/której będą zawarte linki do plików z /etc/fonts/conf.avail. Musiałem usunąć wiele z tych aliasów, aby uzyskać deterministyczne zachowanie.

j605
źródło