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ą).


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>

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>

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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.