Bagaimana mencegah font huruf “otomatis” menjadi lebih lebar dari biasanya dengan ukuran pt yang sama?

10

Saya memiliki font monospaced ( PT Mono) yang saya lebih suka gunakan dalam pemrograman IDE. Hanya font Regular, yang lainnya Bolddan Italicditurunkan dengan miring dan "tebal" dari Regular. Masalahnya adalah bahwa karakter "tebal" lebih lebar daripada yang biasa, sehingga string kode sumber di jendela IDE sekarang terdiri dari karakter yang tidak monospace.

Bagaimana cara mengontrol "tebal" font agar tidak menjadi lebih luas dari biasanya?

Masalahnya diilustrasikan pada tangkapan layar di bawah ( PT Mono, tidak ada huruf tebal khusus). Lihat bagaimana kata "unsigned char" dan "sizeof" keluar dari posisi semestinya.

boldification otomatis mengubah lebar

Berikut ini contoh lain, Droid Sans Mono(tidak ada huruf tebal khusus). masukkan deskripsi gambar di sini

Dan di sini contoh ketika font telah mendedikasikan versi tebal ( Liberation Mono). Berani dan teratur disejajarkan dengan sempurna. masukkan deskripsi gambar di sini

Jadi, masalah ini pasti dalam rendering boldifikasi sembrono dalam situasi di mana bold tidak disediakan. Mesin font yang harus disalahkan.

UPD: Ada file /etc/fonts/conf.avail/90-synthetic.confyang jika direferensikan dari /etc/fonts/conf.d/lagu mesin font untuk melakukan penggalangan sintetik font yang tidak memiliki versi tebal. Jika tautan simbolis ke file ini dihapus dari /etc/fonts/conf.d/, emboldening menghilang. Ini bukan apa yang sebenarnya diinginkan, tetapi setidaknya ini menyembuhkan kasus font monospace yang bukan monospace (lihat di bawah, PT Mono). Penyempurnaan emboldening masih diinginkan (baik dengan file konfigurasi, atau dengan freetype2patch.

masukkan deskripsi gambar di sini

mbaitoff
sumber
Anda tidak bisa mengendalikan itu. Desain font akan hancur. Bahkan jika Anda secara tepat mengurangi ukuran (yang tidak bisa Anda) agar sesuai dengan jarak font biasa, maka huruf tebal akan terlihat lebih kecil. Jika Anda ingin font dengan spasi seragam, jangan gunakan huruf tebal ... atau coba terminal
zetah
Itu tidak benar. Font yang memiliki tipografi biasa dan tebal yang disediakan dalam file terpisah memiliki lebar karakter yang sama dalam huruf biasa dan tebal. Misalnya, LetterGothic.
mbaitoff
Saya berdiri dikoreksi. Saya perhatikan hal yang sama menggunakan SciTE (dan mungkin Anda juga menggunakan editor berbasis Scintilla - mungkin Geany?) Sementara font saya adalah Droid Sans Mono, tapi saya menganggapnya sudah sepantasnya, dan saya tidak punya ide bahwa font berbobot dapat memiliki jarak yang berbeda bahkan untuk font monospace, sedangkan huruf tebal menggunakan spasi yang sama seperti biasa. Terlebih lagi tampaknya font proporsional juga memiliki "fitur" ini, Anda perhatikan, tidak semuanya. Maaf untuk balasan pertama saya yang berani, saya harus memeriksa dulu
zetah
@ Zetah: Saya melihat melalui file font yang berbeda dan sepertinya memang perubahan lebar hanya terjadi ketika tidak ada versi berani font yang didedikasikan. Saya akan memperbarui pertanyaan dengan tangkapan layar lebih banyak.
mbaitoff

Jawaban:

8

mbaitoff , saya memposting ini sebagai tambahan untuk pembaruan Anda, bukan sebagai jawaban

Jika pengguna membuat file bernama ~/.fonts.conf:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <match target="font">
        <test name="spacing" compare="eq">
            <const>mono</const>
        </test>
        <edit name="embolden" mode="assign">
            <bool>false</bool>
        </edit>
    </match>
</fontconfig>

kemudian, aplikasi dapat menggunakan font monospace tebal jika tersedia, dan menonaktifkan "boldification sintetik" jika font yang digunakan tidak memiliki jenis huruf tebal.

Itu hanya alternatif, dan pendekatan yang sedikit berbeda dengan hasil yang berbeda

zetah
sumber
Jika symlink /etc/conf.d/50-user.confdiubah namanya menjadi dieksekusi setelah 90-synthetic.conf, Anda tidak harus menghapus embolden sepenuhnya. 99-user.confbekerja dengan baik. Kalau tidak, 90-synthetic.confaktifkan lagi.
musiKk