Urxvt'de font oluşturma sorunu - karakterler arasında çok fazla boşluk var


27

Bugünden başlayarak, rxvt-unicode ile yazı tipi oluşturma sorunlarını alıyorum. Spesifik olarak birçok fontla karakterler arasında fazladan boşluk var. Diğer fontlarda rxvt boyutları değiştirmeyi reddeder.

Urxvt ve xterm arasındaki boşluk sorununa bir örnek.

Yazı tipleri kaynakları:

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

Ve render

  • urxvt Kötü yazı tipleri
  • xterm iyi yazı tipleri

Tüm ipucu ve antialiasing permütasyonlarını denedim. Boyut veya piksel boyutunun değiştirilmesi fontu urxvt cinsinden yeniden boyutlandırır, ancak bu aynı zamanda fazladan boşluğu da arttırır.

Bunu düzeltmek için deneyebileceğim bir fikri olan var mı?


1
xtermAynı yazı tipini kullandığını sanmıyorum . JVe 0bir şekilde farklıdır. Bunu kaynak dosyasında ( xterm*faceName: xft:Nosuchfont:medium:size=10) olmayan bir font kullanarak onaylayabilirsiniz . Hala aynı görünüyorsa, açıkça Terminus değil.
goldilocks

@goldilocks Haklı görünüyorsun. Urxvt yanlış yazı tipini seçiyor ve çok fazla oluşturuyor.
casey

1
gvimYapılandırmamı istediğim yazı tipinin yüklü olmadığı bir sistemde kullanmadan önce bunu farkettim . xftya da bir şey monospace olmayan bir yazı tipine geri döner ve bu şekilde görünürler.
goldilocks

2
@goldilocks Güncelleme sırasında kaybolan kötü bir fontconfig kuralının ortaya çıktığı ve tüm bitmaplanan yazı tiplerinin kullanılabilmesini engelliyordu. Nükleer bombaladım ve normale döndüm.
casey

Yanıtlar:


15

Urxvt temel karakter aralığı için bir seçenek vardır: letterSpace. Bakınız man urxvt:

-letsp number
Derleme fırfırları: Toplam harf aralığını kontrol etmek için hesaplanan karakter genişliğini ayarlamak için kullanılan miktar. Negatif değerler harf aralığını sıkılaştırır, pozitif değerler harfleri daha fazla harcar. Tek font metrikleri etrafında çalışmak için kullanışlıdır; kaynak letterSpace.

Dolayısıyla bunu bir satır ekleyerek aralığını ayarlayabilirsiniz ~/.Xresourcesşöyle:

URxvt.letterSpace: -1

Not: İlk ekran görüntüsünden söylemek zordur, ancak Urxvt Terminus'u bulamadığı veya yükleyemediği için varsayılan yazı tipine geri dönüyor gibi görünür, bu nedenle geniş aralık. Terminus (muhtemelen varsayılan olarak devre dışı bırakılmış olan) bir bitmap fontudur, bu nedenle xfontseldoğru font dizesini tanımınıza kopyalamak için kullanmanız gerekir .

Bu sistemin nasıl çalıştığına dair ayrıntılı bir açıklama için X Mantıksal Yazı Tipi Açıklaması'ndaki Arch Wiki sayfasına bakın .


3
Ben de bu sorunu yaşadım ve bunun urxvt -letsp -2benim için gerekli olduğunu gördüm . Kullanımı -1daha iyiydi, ama başlangıçta yeterli olmadığı için farkında değildim.
Adam Katz

Ayrıca, yüklü değilse bunun fc-match <font-name>yerine kullanabilirsiniz xfontsel( font-adı , URxvt*fontsatırınızın font adında verilen ifadedir ). Bu ifade ile eşleşen bir değer gösterirse, yazı tipi doğru yüklenecektir. eğer örneğin fc-match "Noto Mono"verir DejaVuSans.ttf: "DejaVu Sans" "Book"o zaman yanlış bir yazı ifadesi olarak kabul edilebilir.
Avinash R

6

Sistemimde Terminus gibi bitmaplanmış fontları engelleyen bir kuralın etkin olduğu ortaya çıktı.

Bu kural (sistemimde) /etc/fonts/conf.d/70-no-bitmap-fontsiçeriyordu ve içeriyordu:

<?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>

Bunu dizinden kaldırdım conf.dve yazı tiplerim bir kez daha düzgün biçimde görüntüleniyor urxvt.


3

Lütfen harf aralığıyla ilgili bir hata raporu bulunduğunu unutmayın .

Ben de benzer sorunlar yaşadım. Böcek tartışma tavsiyeler ardından, set Xft.rgba: noneve Xft.hintstyle: hintfulliçinde ~/.Xdefaults(yerine Xft.rgba: rgbve Xft.hintstyle: hintslight). Bu benim için düzeltti - Yine de, yazı tipi olarak Ubuntu Mono kullandım.


3

Benim çözümüm basitti:

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

Şimdi mükemmel çalışıyor.


0

Bu, gerçek font dosyasından (benim durumumdaki Monospace), urxvt içindeki herhangi bir şeyden daha muhtemel olabilir. Yazı tipi (yanlışlıkla) bazı glifleri çok geniş olarak bildirirse, urxvt ızgarayı da geniş yapmak zorunda kalır.

Benim durumumda, bulduğum "Tamam" yazı tipi Bitstream Vera Sans Mono idi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.