Probleme beim Rendern von Schriftarten in urxvt - zu viel Platz zwischen den Zeichen

27

Ab heute habe ich Probleme beim Rendern von Schriftarten mit rxvt-unicode. Insbesondere mit vielen Schriftarten erhalte ich eine Fülle von zusätzlichen Leerzeichen zwischen den Zeichen. In anderen Schriftarten weigert sich rxvt, die Größe zu ändern.

Hier ist ein Beispiel für das Abstandsproblem zwischen urxvt und xterm.

Die Schriften-Ressourcen:

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

Und die Renderings

  • urxvt schlechte Schriften
  • xterm gute Schriften

Ich habe alle Permutationen von Andeutungen und Antialiasing ausprobiert. Durch Ändern der Größe oder der Pixelgröße wird die Schriftgröße in urxvt geändert, der zusätzliche Abstand wird jedoch ebenfalls vergrößert.

Hat jemand Ideen, mit denen ich versuchen kann, das zu beheben?

casey
quelle
1
Ich glaube nicht, dass xtermtatsächlich dieselbe Schriftart verwendet wird. Das Jund das 0sind deutlich unterschiedlich. Sie können dies bestätigen, indem Sie eine nicht vorhandene Schriftart in der Ressourcendatei verwenden ( xterm*faceName: xft:Nosuchfont:medium:size=10). Wenn es immer noch so aussieht, ist es offensichtlich nicht Terminus.
Goldlöckchen
@goldilocks Es scheint, dass Sie Recht haben. Urxvt wählt die falsche Schriftart aus und rendert sie fürchterlich.
Casey
1
Ich habe dies bereits bemerkt, gvimals ich meine Konfiguration auf einem System verwendete, auf dem die gewünschte Schriftart nicht installiert war. xftoder etwas greift auf eine Nicht-Monospace- Schrift zurück und so erscheinen sie.
Goldlöckchen
2
@goldilocks Es stellte sich heraus, dass während eines Updates eine ungültige fontconfig-Regel eingefügt wurde, die die Verfügbarkeit aller Bitmap-Schriftarten blockierte. Ich habe es geschafft und bin wieder normal.
Casey

Antworten:

15

Urxvt hat eine Option für die grundlegende Kerning: letterSpace. Siehe man urxvt:

-letsp number
Compile frills: Betrag zum Anpassen der berechneten Zeichenbreite, um den gesamten Buchstabenabstand zu steuern. Negative Werte verringern den Buchstabenabstand, positive Werte vergrößern den Buchstabenabstand. Nützlich, um ungerade Fontmetriken zu umgehen; resource letterSpace.

So können Sie den Abstand anpassen, indem Sie eine Linie ~/.Xresourceswie folgt zu Ihrer hinzufügen :

URxvt.letterSpace: -1

Hinweis: Es ist schwierig, dies anhand Ihres ersten Screenshots zu erkennen, aber es sieht so aus, als würde Urxvt auf die Standardschrift zurückgreifen, da Terminus nicht gefunden oder geladen werden kann, daher der große Abstand. Da Terminus eine Bitmap-Schriftart ist (die wahrscheinlich standardmäßig deaktiviert ist), sollten Sie xfontseldie richtige Zeichenfolge in Ihre Definition kopieren.

Auf der Arch Wiki-Seite zu X Logical Font Description finden Sie eine detaillierte Beschreibung der Funktionsweise dieses Systems.

jasonwryan
quelle
3
Ich hatte auch dieses Problem und fand, dass urxvt -letsp -2es für mich notwendig war. Verwenden -1war besser, aber das habe ich anfangs nicht gemerkt, da es nicht genug war.
Adam Katz
Sie können auch das fc-match <font-name>verwenden, xfontselwenn es nicht installiert ist ( Schriftname ist der Ausdruck, der im URxvt*fontSchriftnamen Ihrer Zeile angegeben ist). Wenn dies mit einem Wert angezeigt wird, der mit dem Ausdruck übereinstimmt, wird die Schriftart korrekt geladen. Wenn zum Beispiel fc-match "Noto Mono"ergibt DejaVuSans.ttf: "DejaVu Sans" "Book", kann dies als falscher Schriftausdruck angesehen werden.
Avinash R
6

Es stellte sich heraus, dass auf meinem System eine Regel aktiviert war, die Bitmap-Schriftarten wie Terminus blockierte.

Diese Regel (auf meinem System) war in /etc/fonts/conf.d/70-no-bitmap-fontsund enthielt:

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

Ich habe dies aus dem conf.dVerzeichnis entfernt und meine Schriften werden in wieder richtig gerendert urxvt.

casey
quelle
3

Bitte beachten Sie, dass es einen Fehlerbericht bezüglich des Buchstabenabstands gibt.

Ich hatte ähnliche Probleme. Im Anschluss an die Empfehlungen der Bug Diskussion, ich gesetzt Xft.rgba: noneund Xft.hintstyle: hintfullin ~/.Xdefaults(statt Xft.rgba: rgbund Xft.hintstyle: hintslight). Dies hat es für mich behoben - ich habe allerdings Ubuntu Mono als Schriftart verwendet.

balu
quelle
3

Meine Lösung war einfach:

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

Jetzt funktioniert es einwandfrei.

b3h3m0th
quelle
0

Dies kann eher von der tatsächlichen Schriftartdatei (in meinem Fall von Monospace) als von irgendetwas im urxvt herrühren. Wenn die Schriftart (fälschlicherweise) einige Glyphen als zu breit deklariert, muss urxvt das Raster ebenfalls breit machen.

In meinem Fall war die "OK" -Schrift, die ich gefunden habe, Bitstream Vera Sans Mono.

exa
quelle