Ini sangat menjengkelkan ...
Ketika teks pada garis diubah wajahnya sehingga teks menjadi tebal, ketinggian garis meningkat dengan (saya berasumsi) satu piksel. Paling baik ditunjukkan dengan gambar:
Kenapa ini? Bagaimana saya mencegahnya?
Seperti yang diminta, info di platform:
- Debian GNU / Linux sid (tidak stabil) di amd64
- Emacs menggunakan libgtk-3.so.0 (gtk 3.14.5), di XFCE 4.12
Saya sudah mencoba font berikut di 8pt, 9pt, 10pt dan 11pt:
- DejaVu Sans Mono
- DejaVu Sans
- DejaVu Serif
- Droid Sans Mono
- Mono pembebasan
Masalahnya hanya terjadi pada DejaVu Sans Mono dan DejaVu Sans, dan hanya pada 9pt dan 10pt. (Gambar di atas menunjukkan DejaVu Sans Mono-9
.)
C-u C-x =
. Anda mungkin akan menemukan bahwa baik wajah yang mempengaruhi pertahanan atau wajah yang mempengaruhi contoh memiliki atribut berbeda yang bertanggung jawab atas perilaku yang Anda lihat - misalnya, selain hanya warna dasar latar depan. Atribut wajah dapat dikustomisasi oleh pengguna.:height 90
(9pt).:weight bold
darifont-lock-function-name-face
(dan menjalankan kembalicustom-theme-set-faces
perintah tema ), saya dapat melihat ketinggiandefun
baris berubah sebesar 1px! Itu pasti atribut berani yang menyebabkannya, saya pikir.Jawaban:
Perubahan tinggi font di DejaVu pada ukuran titik itu karena informasi ketinggian font antara dua huruf normal dan tebal berbeda ketika harus sama.
Font DejaVu Sans Mono 10 yang saya gunakan tidak mengubah ketinggian font antara bobot normal dan tebal. Saya mengaturnya di .emacs saya dengan
(set-frame-font "DejaVu Sans Mono-10")
Jadi Anda memiliki sesuatu untuk dibandingkan, info untuk font "DejaVu Sans 10" melalui (font-info on Emacs 25):
EDIT berdasarkan info selanjutnya:
Dalam informasi font di atas, saya menunjukkan ketinggian font 17 dan Anda melaporkan ketinggian 15 (normal) atau 16 (tebal). Di emacs 25 ada informasi font tambahan setelah 3 0 itu, khususnya font yang turun adalah 4.
Walaupun saya tidak memiliki masalah pada Emacs 24 atau 25 dengan DejaVu Sans Mono dan varian Bold, hal paling sederhana adalah menggunakan font dan ukuran yang tidak berubah lebar (seperti yang ditunjukkan oleh font-info) antara normal dan tebal atau sesuatu selain DejaVu.
Adapun apa yang menyebabkan ini, mungkin salah satu perpustakaan Anda, (gtk saya adalah libgtk-x11-2.0.so.0), tapi saya ragu itu akan menjadi perpustakaan khusus ini. Juga diragukan itu adalah file atau paket ttf. Lebih mungkin adalah rendering freetype (saya punya libfreetype.so.6). Karena DejaVu diskalakan seperti halnya font lain yang berfungsi untuk Anda, kesalahan perhitungan yang digelitik oleh cara DejaVu ditulis akan menjelaskan mengapa ini bekerja pada beberapa ukuran tetapi tidak pada yang lain.
Untuk memverifikasi apakah masalahnya khusus Emacs atau tidak, Anda mungkin dapat memunculkan dua jendela terminal, satu dengan prompt tebal dan satu tanpa dan membandingkan spasi jarak pada mereka. Jika berbeda seperti Emacs, maka ini ada hubungannya dengan rendering dan / atau font.
Jika Anda mengkompilasi emacs, mungkin ada sesuatu yang terjadi di sana.
sumber
DejaVu Sans Mono-9
BTW). Saya akan memperbarui uraian di atas ...(font-info "DejaVu Sans Mono-10")
memberi saya["-unknown-DejaVu Sans Mono-normal-normal-normal-*-13-*-*-*-m-0-iso10646-1" "DejaVu Sans Mono:pixelsize=13:foundry=unknown:weight=normal:slant=normal:width=normal:spacing=100:scalable=true" 13 15 0 0 0]
. Saya juga telahfonts-dejavu-core
menginstal, dan jugattf-dejavu-core
. Keduanya menyediakanDejaVuSansMono.ttf
(dalam direktori yang berbeda, tetapi mereka adalah file yang identik, jadi saya tidak melihat bahwa ini penting). Saya juga dapatkanHeight: 98
dari wajah (saat menggunakan DajaVu Sans Mono-10, yang menunjukkan masalah di atas). Saya terbuka untuk saran lagi! :)