Masalah rendering font di urxvt - terlalu banyak ruang antar karakter


27

Mulai lebih awal hari ini saya mendapatkan masalah rendering font dengan rxvt-unicode. Khususnya dengan banyak font saya mendapatkan banyak ruang ekstra antar karakter. Di font lain rxvt menolak untuk mengubah ukuran.

Berikut adalah contoh masalah jarak antara urxvt dan xterm.

Sumber daya font:

URxvt*font:     xft:Terminus:medium:size=10
xterm*faceName: xft:Terminus:medium:size=10

Dan rendering

  • urxvt font yang buruk
  • xterm font yang bagus

Saya telah mencoba semua permutasi dari isyarat dan antialiasing. Mengubah ukuran atau pixelsize memang mengubah ukuran font di urxvt tetapi ini juga meningkatkan jarak ekstra.

Adakah yang punya ide yang bisa saya coba perbaiki ini?


1
Saya tidak berpikir xtermsebenarnya menggunakan font yang sama. The Jdan 0yang jelas berbeda. Anda dapat mengonfirmasi ini dengan menggunakan font yang tidak ada di file sumber daya ( xterm*faceName: xft:Nosuchfont:medium:size=10). Jika masih terlihat sama, itu jelas bukan Terminus.
goldilocks

@goldilocks Tampaknya Anda benar. Urxvt memilih font yang salah dan membuatnya dengan sangat buruk.
Casey

1
Saya perhatikan ini sebelumnya gvimketika menggunakan konfigurasi saya pada sistem di mana font yang saya inginkan tidak diinstal. xftatau sesuatu jatuh kembali pada font non-monospace dan itulah yang muncul.
goldilocks

2
@goldilocks Ternyata aturan fontconfig yang buruk dimasukkan selama pembaruan dan memblokir semua font yang dipetakan agar tidak tersedia. Saya nuked itu dan saya kembali normal.
Casey

Jawaban:


15

Urxvt memiliki opsi untuk kerning dasar: letterSpace. Lihat man urxvt:

-letsp number
Kompilasi embel-embel: Jumlah untuk menyesuaikan lebar karakter yang dikomputasi dengan untuk mengendalikan spasi huruf secara keseluruhan. Nilai-nilai negatif akan memperketat jarak huruf, nilai-nilai positif akan lebih banyak spasi huruf. Berguna untuk mengatasi metrik font aneh; resource letterSpace.

Jadi Anda dapat menyesuaikan jarak dengan menambahkan garis ke Anda ~/.Xresources, seperti:

URxvt.letterSpace: -1

Catatan: sulit untuk mengetahui dari tangkapan layar pertama Anda, tetapi sepertinya Urxvt kembali ke font default karena tidak dapat menemukan atau memuat Terminus, karenanya jarak yang lebar. Terminus adalah font bitmap (yang kemungkinan dinonaktifkan secara default), jadi Anda harus menggunakan xfontseluntuk menyalin string font yang benar ke dalam definisi Anda.

Lihat halaman Arch Wiki pada X Deskripsi Font Logis untuk deskripsi terperinci tentang bagaimana sistem ini bekerja.


3
Saya memiliki masalah ini juga dan menemukan bahwa urxvt -letsp -2itu perlu bagi saya. Menggunakan -1itu lebih baik, tetapi pada awalnya saya tidak menyadari karena itu tidak cukup.
Adam Katz

Anda juga dapat menggunakan fc-match <font-name>alih - alih xfontseljika tidak diinstal ( font-name adalah ekspresi yang diberikan dalam URxvt*fontnama font baris Anda ). Jika ini muncul dengan nilai yang cocok dengan ekspresi, font akan dimuat dengan benar. misalnya, jika fc-match "Noto Mono"memberi DejaVuSans.ttf: "DejaVu Sans" "Book"maka dapat dianggap sebagai ekspresi font yang salah.
Avinash R

6

Ternyata aturan diaktifkan di sistem saya yang memblokir font yang dipetakan seperti Terminus.

Aturan ini (di sistem saya) ada di /etc/fonts/conf.d/70-no-bitmap-fontsdan terkandung:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<!-- Reject bitmap fonts -->
 <selectfont>
  <rejectfont>
   <pattern>
     <patelt name="scalable"><bool>false</bool></patelt>
   </pattern>
  </rejectfont>
 </selectfont>
</fontconfig>

Saya menghapus ini dari conf.ddirektori dan font saya sekali lagi merender dengan benar urxvt.


3

Harap perhatikan bahwa ada laporan bug tentang spasi surat.

Saya memiliki masalah serupa. Mengikuti rekomendasi dari diskusi bug, saya atur Xft.rgba: nonedan Xft.hintstyle: hintfulldalam ~/.Xdefaults(bukan Xft.rgba: rgbdan Xft.hintstyle: hintslight). Ini memperbaikinya untuk saya - saya menggunakan Ubuntu Mono sebagai font, meskipun.


3

Solusi saya sederhana:

URxvt*font:     xft:mono:medium:size=10
xterm*faceName: xft:mono:medium:size=10

Sekarang ini berfungsi dengan baik.


0

Ini mungkin muncul dari file font yang sebenarnya (Monospace dalam kasus saya) lebih mungkin daripada dari apa pun di urxvt. Jika font (salah) menyatakan beberapa mesin terbang terlalu lebar, urxvt terpaksa membuat grid juga lebar.

Dalam kasus saya, font "OK" yang saya temukan adalah Bitstream Vera Sans Mono.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.