Bagaimana saya dapat memperbaiki ligatur font TTF (tt, ti, fi, ff, dll) di Firefox?

24

Dengan font Windows tertentu ada masalah tampilan di mana ligature-kerning tampaknya flip keluar dan membuat dua huruf tebal. Berikut screenshot dari email menggunakan Helvetica di Firefox:

masukkan deskripsi gambar di sini

Seperti yang Anda lihat, sepertinya ada sesuatu tentang cara karakter yang disilangkan ( tdan f) terhubung satu sama lain dan seperti huruf i.

Saya sudah memiliki masalah ini untuk waktu yang sangat lama (lebih dari beberapa sistem) dan bertanya-tanya apakah ada yang pernah melihat masalah serupa bermunculan dan menemukan cara untuk memperbaikinya.

Catatan: Saya pikir ini tidak mempengaruhi Firefox. Chrome dan LibreOffice keduanya baik-baik saja.

Oli
sumber

Jawaban:

27

Solusi lain yang akan bekerja dengan semua aplikasi, termasuk Libre Office, diberikan oleh aldeby :

Edit atau buat file ~/.fonts.confdan tempel kode ini di dalamnya:

<match target="font" >
<edit name="embeddedbitmap" mode="assign">
<bool>false</bool>
</edit>
</match>

Pastikan untuk menjaga struktur XML.

Keluar dan masuk lagi, dan Calibri (dan mungkin beberapa font lain) akan terlihat jauh lebih baik (sebenarnya bahkan lebih baik daripada dengan jawaban lain yang diberikan di sini, karena penggantian bitmap yang jelek sepenuhnya dinonaktifkan).

Calimo
sumber
3
Yang ini adalah solusi yang lebih baik daripada yang sebelumnya, karena ini adalah perbaikan global, dan menghilangkan ligatures adalah suatu keharusan. Ada ligatur untuk membuat teks lebih enak dibaca, dan mematikannya untuk mengatasi masalah konfigurasi tidak ideal.
scruss
Siapa pun yang sedikit OCD atau cukup anal untuk peduli tentang memformat dengan benar isi file XML ini (tentu saja Anda orang-orang Linux tidak akan pernah peduli tentang hal-hal seperti itu ;-)):<?xml version="1.0"?><!DOCTYPE fontconfig SYSTEM "fonts.dtd"><fontconfig><match target="font"><edit name="embeddedbitmap" mode="assign"><bool>false</bool></edit></match></fontconfig>
Adam Plocher
Tautan ke aldeby sekarang mengarah ke beberapa situs penipuan phishing
charsi
1
@charsi terima kasih, saya menggantinya dengan tautan ke Arsip Web.
Calimo
Saya bahkan tidak perlu keluar dan masuk lagi. Cukup menyegarkan halaman (di Firefox) dan memulai kembali aplikasi (LibreOffice) sudah cukup.
Marc.2377
9

Menonaktifkan ligatur (lihat jawaban Calimofonts.conf ) adalah arah yang salah! Ini dapat menghapus ligatur yang "alias" terlalu tebal dalam font seperti Calibri , tetapi juga menghilangkan beberapa keindahan tipografi. Itu agak mirip dengan menyusutkan font sampai Anda tidak bisa membedakannya.

Saya memecahkan ini untuk sistem saya dengan menghapus font Calibri, menginstal Carlito , yang " metrik-kompatibel dengan Calibri" dan dikemas dengan "entri pemetaan ke fontconfig (local.conf)," dan menyegarkan cache font saya:

$ rm ~/.fonts/microsoft/CALIBRI*
$ sudo apt install fonts-crosextra-carlito
$ fc-cache

Anda kemudian dapat memverifikasi bahwa Carlito mendukung Calibri:

$ fc-match Calibri
Carlito-Regular.ttf: "Carlito" "Regular"

(Jika ini tidak berhasil, Anda mungkin perlu sesuatu seperti sudo rm /usr/share/fonts/truetype/msttcorefonts/calibri*kasing dan lokasi yang tepat mungkin berbeda.)

Sebelum menghapus Microsoft Calibri, saya menyimpan dokumen uji di LibreOffice yang menggunakan Calibri dan mengambil screenshot. Setelah melakukan itu, saya keluar dari LibreOffice, membukanya lagi, dan kemudian memuat dokumen pengujian saya. Nama font "Calibri" dicetak miring untuk menunjukkan bahwa font tersebut diganti. Saya mengambil cuplikan layar dari versi pengganti ini dan menempelkannya di bawah yang asli:

Tes Calibri

Teks di atas adalah sepasang tangkapan layar Calibri 13pt, dengan Calibri Microsoft di atas Carlito sesuai dengan fontconfig. Tidak ada huruf tebal, tidak ada format, "pair kerning" diaktifkan, seperti yang diberikan oleh LibreOffice 5.0.5.1.

Carlito cukup dekat dengan Calibri, pengikat membuat benar, dan secara keseluruhan jauh lebih cantik.

Anda dapat melakukan hal yang sama dengan Caladea untuk Cambria dengan fonts-crosextra-caladeadan Anda dapat menggunakan Google Croscore font Arimo, Tinos, dan Cousine untuk Arial , Times New Roman , dan Courier New dengan fonts-croscore. Pelajari selengkapnya di wiki Pengganti Calibri dan Cambria Fonts Debian .

Tapi bagaimana dengan Helvetica?

Pertanyaan ini menanyakan tentang font Helvetica , yang merupakan font sans-serif yang disukai Apple . Microsoft lebih suka Arial sebelum diubah menjadi Calibri. Pemetaan Linux default bervariasi berdasarkan distribusi, tetapi biasanya Nimbus Sans L atau Liberation Sans , mis

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

Jika Anda menjalankannya dan mendapatkan Arial, itu alasan yang cukup bagus untuk memiliki masalah ligatur yang dijelaskan di atas - Arial bukan font yang bagus.

Helvetica memiliki cukup budaya di sekitarnya dan saya tidak dapat menemukan font yang sepenuhnya kompatibel dengan metrik dengan Helvetica. Arial (dan font yang kompatibel secara metrik dengan Arial, termasuk Liberation Sans dan fork-nya, Arimo , memiliki lebar karakter yang identik (yang berarti mereka "sebagian besar" kompatibel dengan metrik; teks akan membungkus dengan cara yang sama seperti dengan Helvetica). Di antara font gratis, Liberation Sans dan Nimbus Sans tampaknya memiliki estetika yang paling mirip.

Ada juga IBM Plex , font baru dengan uang besar di belakangnya [ 1 ] [ 2 ] . Plex dirancang untuk menggantikan Helvetica (ini juga telah mengkondensasi font sans dan serif dan monospace) di semua materi IBM, meskipun sama sekali tidak kompatibel dengan metrik untuk Helvetica atau font lain. Font Squirrel memiliki pandangan yang bagus tentang contoh font Plex .

Alias ​​fontconfig

Untuk secara manual alias Helvetica ke font lain (dan karena itu tidak perlu menghapus Calibri dan / atau Arial, meskipun dalam hal ini Anda juga harus secara manual alias itu), edit ~/.config/fontconfig/fonts.conffile Anda (untuk sistem yang lebih lama, itu ~/.fonts.conf. Untuk menghindari kebingungan, saya sambungkan yang terakhir ke yang pertama) seperti yang disebutkan dalam jawaban ini , menambahkan <alias>bagian baru untuk Helvetica (yang ini menggunakan Arimo. Pastikan Anda menginstalnya):

<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>

  <alias>
    <family>Helvetica</family>
    <prefer><family>Arimo</family></prefer>
  </alias>

</fontconfig>
Adam Katz
sumber
1
Ini adalah jawaban yang jauh lebih baik daripada yang diterima. Saya ingin menunjukkan ada file conf yang mudah diakses di arch wiki: wiki.archlinux.org/index.php/Croscore_Fonts
Xananax
baris pertama sekarang harus sudo rm -R / usr / share / font / truetype / calibri
dez93_2000
Jika hasil Helvetica fc-match seseorang IS arial di linux, apakah Anda tahu cara memaksa Liberation Sans? Hapus saja Arial? Terima kasih
dez93_2000
@ dez93_2000 - itu mungkin /usr/share/fonts/truetype/msttcorefonts/callibri*. Saya akan memperbarui jawaban saya ke aliasing font karena tidak cocok dengan komentar.
Adam Katz
Saya hati-hati memeriksa hasil yang diberikan dari jawaban yang diterima (menggunakan font Calibri), dan tidak menemukan perbedaan sama sekali dibandingkan dengan renderer yang dikenal baik. Sama sekali tidak ada keindahan yang hilang.
Marc.2377
6

Jawaban lgarzo ini akan bekerja hanya pada website yang memiliki "noligs" kelas pada teks (website yang paling tidak).

Untuk menonaktifkan ligatur secara global di semua situs web, tambahkan baris berikut ke userChrome.css:

* { -moz-font-feature-settings: "liga" 0; }

Cara termudah untuk melakukannya adalah membuat gaya baru dengan ekstensi Stylish .

Calimo
sumber
+1 untuk saran Gaya. AFAIR Saya sudah mengutip dokumentasi Mozilla (karena saya mengharapkan OP untuk dapat mengubah itu seperti yang dia inginkan :)) Maksud saya adalah memasukkan aturan ke dalam halaman CSS. (Namun, tidak dapat memeriksa sumbernya. Tampaknya sedang turun ATM.)
lgarzo
1
Sintaks itu hanya valid hingga Firefox 14, menurut stackoverflow.com/a/15161336/4464570 , dan sekarang tidak lagi dikenali oleh browser. Saya mengedit posting Anda untuk memperbaruinya dengan sintaks saat ini.
Byte Commander
4

Beberapa komentar muncul di pikiran saya sambil melihat gambar:

  • Ligatur tampaknya anti-alias , sedangkan sisa teks tidak. Oleh karena itu terlihat lebih gemuk daripada teks biasa (walaupun saya tidak dapat menyangkalnya juga terlihat tebal).
  • AFAIK font Helvetica adalah font non-standar , yaitu tidak datang dengan instalasi Windows standar. Apakah Anda sudah menginstalnya, atau font yang berbeda?

Saya pikir masalahnya didasarkan pada font yang tidak mendukung ligatures / kerning dengan benar.

Anda dapat menonaktifkan ligatur di FF dengan aturan CSS di bawah:

/* disable common ligatures, usually on by default */
.noligs { -moz-font-feature-settings: "liga" 0; }

Sumber: Referensi CSS: Mozilla Extensions

lgarzo
sumber
Sintaks itu hanya valid hingga Firefox 14, menurut stackoverflow.com/a/15161336/4464570 , dan sekarang tidak lagi dikenali oleh browser. Saya mengedit posting Anda untuk memperbaruinya dengan sintaks saat ini.
Byte Commander
1

Selain jawaban Calimo, pengguna Archlinux dapat menemukan bantuan https://wiki.archlinux.org/index.php/font_configuration - Nonaktifkan font bitmap

Disarankan untuk membuat file konfigurasi lokal ~ / .config / fontconfig / conf.d / 20-no-embedded.conf, tetapi saya memilih opsi sistem yang luas

sudo touch /etc/fonts/conf.d/20-no-embedded.conf
sudo chmod 777 /etc/fonts/conf.d/20-no-embedded.conf
nano 777 /etc/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>

Kemudian restart aplikasi (dalam kasus saya thunderbird)

Uzumaki D. Ichigo
sumber
Jika tepat di bawah "<match target =" font ">" baris yang Anda tambahkan: <test name = "family"> <string> Calibri </string> </test> Atau apa pun nama fontnya (Helvetica), Anda akan hanya edit pengaturan font untuk font spesifik itu.
zeehio
Izin harus 644, bukan 777, karena Anda meletakkan file (bukan symlink) di sana.
Marc.2377