Substitusi font dengan ~ / .fonts.conf

18

Saya mencoba menggunakan ~ / .fonts.conf untuk mengganti Helvetica dengan Droid Sans, inilah isi file tersebut:

<?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>

tapi apa pun yang terjadi, sepertinya tidak ada yang terjadi. Saya mencoba menjalankan fc-cache, saya telah memeriksa /etc/fonts/conf.ddan saya menemukan 50-user.confyang tampaknya secara eksplisit memanggil konfigurasi khusus pengguna.

Apa yang saya lewatkan?

Terima kasih

EDIT: setelah penyelidikan saya menemukan bahwa aturan lain dalam /etc/fonts/conf.dmenimpa konfigurasi pengguna, jadi menautkan user.confke 00-user.confmembantu. Tetap saja ini hanya sebagian keberhasilan, karena saya dapat menentukan font mana yang harus diganti, tetapi pengganti pilihan saya diabaikan: dengan kata lain, saya dapat membuat Helveticatidak valid dan sistem kembali ke font berikutnya (yaitu di browser, itu mengambil font berikutnya yang ditentukan dalam style sheet, jika tidak ada font ini menampilkan sans-serif standar).

Matteo Riva
sumber
Saya datang ke sini karena saya akan mencapai sesuatu yang serupa. Semoga ada yang punya jawaban ...
Ludwig Weinzierl
masih mencari jawaban.
Capi Etheriel

Jawaban:

16

Saya pikir atribut yang mengikat tidak ada dalam konfigurasi Anda. (lihat juga font-conf ). Bergantung pada konfigurasi Anda yang lain, pengikatan "sama" atau "kuat" mungkin bekerja, sementara "lemah" mungkin tidak memberikan apa yang Anda inginkan.

<?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
sumber
1
Bekerja untukku. Sepertinya menambahkan bindingatribut membuat perbedaan. Saya menggunakan fontconfig-2.8.0.
MaoPU
Ini bekerja untuk saya
miloshadzic
3

Saya pikir mekanisme alias akan bekerja untuk ini:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <alias>
    <family>Helvetica</family>
    <prefer>Droid Sans</prefer>
  </alias>
</fontconfig>
Geoff Reedy
sumber
1
Apakah <alias> tidak hanya untuk mengganti font yang tidak diinstal?
MaoPU
@ MaoPU: Saya pikir hal yang sama, tetapi setelah membaca dokumentasi, itu membuat saya percaya bahwa perilaku itu sudah dikonfigurasi. <accept>diutamakan ketika font tidak diinstal, <prefer>diutamakan terlepas jika font diinstal.
JM Becker
/ \ Tidak, sebenarnya tidak, kecuali .conffile yang berisi aturan ini dibaca terlebih dahulu.
Marc.2377
Hmm - yang mengatakan, itu tidak bekerja jika binding="strong"digunakan bersama dengan <alias>elemen!
Marc.2377
0

Apakah "fc-list" benar-benar menunjukkan "Helvetica"? Apa yang dikatakan fc-match? Di kotak saya (F-12) saya mendapatkan:

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

Mungkin Anda harus menambahkan font alias ke subtitusi Anda juga.

vasquez
sumber
0

Saya mengalami masalah yang sama ketika mencoba alias Helvetica sebagai keluarga sans-serif. Bagi siapa pun yang memiliki masalah yang sama, lihat konfigurasi sistem /etc/fonts/conf.d/yang berisi tautan ke file-file dari /etc/fonts/conf.avail. Saya harus menghapus banyak alias untuk mendapatkan perilaku deterministik.

j605
sumber