Konfigurasikan fontconfig untuk mengabaikan bitmap dalam font yang skalabel

12

Saya telah menginstal Microsoft C-Font, dan itu sangat bagus. Namun, Calibri muncul sebagai font bitmap dalam banyak ukuran yang muncul. Bagaimana cara memberi tahu fontconfig untuk melarang Calibri (dan Cambria, dll.) Agar tidak dirender dari bitmap yang disematkan? Saya sudah punya 70-no-bitmaps.confdi /etc/fonts/conf.d/direktori saya .

Font yang dimaksud dapat diekstraksi dari PowerPoint Viewer .

Paul Fisher
sumber
AFAIK font-font itu tidak dapat didistribusikan secara bebas? (Jadi saya tidak bisa mengujinya.) Tapi apakah Anda yakin mereka menggunakan bitmap, dan jangan hanya menonaktifkan antialiassing?
JanC
@JanC Fon memang menggunakan bitmap prerendered.
Paul Fisher

Jawaban:

19

/etc/fonts/conf.d/70-no-bitmaps.confhanya menolak font bitmap, mereka tidak menonaktifkan bitmap tertanam, yang merupakan kasus di sini. Saya tidak tahu mengapa mereka tidak menempatkan pengaturan untuk menonaktifkan bitmap tertanam dalam file conf yang sama. Bagaimanapun, letakkan yang berikut ini di ~/.config/fontconfig/conf.d/20-no-embedded.conf(atau, untuk versi Ubuntu yang lama, di ~/.fonts.conf.d/20-no-embedded.conf):

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="font">
    <edit name="embeddedbitmap" mode="assign">
      <bool>false</bool>
    </edit>
  </match>
</fontconfig>

Ini akan menonaktifkan bitmap tertanam untuk semua font. Jika Anda ingin menonaktifkan hanya untuk font tertentu, tambahkan <test>elemen:

<test name="family" compare="contains">
  <string>Calibri</string>
  <string>Cambria</string>
</test>

sebelumnya <edit ....

Syockit
sumber
Haruskah ini diletakkan di /etc/fonts/conf.d, atau lebih baik di /etc/fonts/conf.avail dan disinkronkan ke conf.d, seperti semua file konfigurasi lainnya? Apakah ini disediakan untuk file konfigurasi yang disediakan oleh distribusi ubuntu? Apakah itu penting?
knb
1
@knb secara default, pengaturan ubuntu / debian, fontconfig akan memuat apa pun ~/.fonts.conf.d/juga. Jadi saya sarankan Anda menaruhnya di sana untuk menghindari mucking dengan konfigurasi sistem. Kecuali jika Anda ingin membuatnya tersedia untuk semua pengguna, maka Anda dapat memasukkannya /etc/fonts/conf.d, atau memasukkannya availdan symlink conf.duntuk menggunakannya saat Anda membutuhkannya (Anda dapat menghapus symlink ketika Anda ingin menyalakannya, sebaliknya)
syockit
3
Dengan versi fontconfig saat ini, nama file harus ~/.fonts.conf.d/20-no-embedded.conftidak akan dimuat jika tidak diawali dengan angka. Jalankan misalnya FC_DEBUG=1024 gedituntuk melihat apakah konfigurasi Anda dimuat sama sekali jika tampaknya tidak berpengaruh.
pascal
@pasal +1 untuk FC_DEBUG. Dan tidak, nomor sebelum nama tidak diperlukan pada 10,04 LTS, cukup dengan menyebutkan namanya .fonts.configsaja. Versi fontconfig apa yang Anda rujuk?
LAFK mengatakan Reinstate Monica
1

Dalam contoh yang Anda berikan, Anda memiliki atribut "<string>" yang disebutkan dua kali dalam bait "<test>". Ini menyebabkan peringatan di Ubuntu 13.10 dan 14.04. Untuk menghilangkan peringatan, bait dalam file akan terlihat seperti:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="font">
    <test name="family" compare="contains">
       <string>Calibri</string>
    </test>
    <test name="family" compare="contains">
       <string>Cambria</string>
    </test>
    <edit name="embeddedbitmap" mode="assign">
      <bool>false</bool>
    </edit>
  </match>
</fontconfig>
Paul Lemmons
sumber