Problème de rendu des polices dans urxvt - trop d'espace entre les caractères

27

À partir d'aujourd'hui, je rencontre des problèmes de rendu de police avec rxvt-unicode. Plus précisément, avec de nombreuses polices, j'obtiens une abondance d'espace supplémentaire entre les caractères. Dans d'autres polices, rxvt refuse de modifier les tailles.

Voici un exemple du problème d'espacement entre urxvt et xterm.

Les ressources des polices:

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

Et les rendus

  • urxvt mauvaises polices
  • xterm bonnes polices

J'ai essayé toutes les permutations d'indices et d'anticrénelage. La modification de la taille ou de la taille des pixels redimensionne la police dans urxvt, mais cela augmente également l'espacement supplémentaire.

Quelqu'un a-t-il des idées que je peux essayer de résoudre ce problème?

casey
la source
1
Je ne pense pas xtermutiliser réellement la même police. Le Jet le 0sont nettement différents. Vous pouvez le confirmer en utilisant une police inexistante dans le fichier de ressources ( xterm*faceName: xft:Nosuchfont:medium:size=10). S'il a toujours la même apparence, ce n'est évidemment pas Terminus.
goldilocks
@goldilocks Il semble que vous ayez raison. Urxvt choisit la mauvaise police et la rend terriblement.
casey
1
J'ai remarqué cela avant w / gvimlors de l'utilisation de ma configuration sur un système où la police que je voulais n'était pas installée. xftou quelque chose retombe sur une police non monospace et c'est ainsi qu'ils apparaissent.
goldilocks
2
@goldilocks Il s'avère qu'une mauvaise règle fontconfig s'est glissée lors d'une mise à jour et empêchait la disponibilité de toutes les polices bitmap. Je l'ai détruit et je suis revenu à la normale.
casey

Réponses:

15

Urxvt a une option pour crénage de base: letterSpace. Voir man urxvt:

-letsp number
Compile frills: quantité permettant d'ajuster la largeur de caractère calculée par pour contrôler l'espacement général des lettres. Les valeurs négatives resserreront l'espacement des lettres, les valeurs positives espaceront davantage les lettres. Utile pour contourner les mesures de police impaires; letterSpace de ressource.

Vous pouvez donc ajuster l'espacement en ajoutant une ligne à votre ~/.Xresources, comme ceci:

URxvt.letterSpace: -1

Remarque: il est difficile de le dire à partir de votre première capture d'écran, mais il semble que Urxvt retombe dans la police par défaut car il ne peut pas trouver ou charger Terminus, d'où le grand espacement. Terminus est une police bitmap (qui est probablement désactivée par défaut), vous devez donc utiliser xfontselpour copier la chaîne de police correcte dans votre définition.

Voir la page Arch Wiki sur X Logical Font Description pour une description détaillée du fonctionnement de ce système.

jasonwryan
la source
3
J'avais aussi ce problème et j'ai trouvé que urxvt -letsp -2c'était nécessaire pour moi. L'utilisation -1était meilleure, mais je ne m'en étais pas rendu compte au départ car cela ne suffisait pas.
Adam Katz
Vous pouvez également utiliser le fc-match <font-name>au lieu de xfontsels'il n'est pas installé ( nom-police est l'expression donnée dans URxvt*fontle nom de police de votre ligne). Si cela apparaît avec une valeur correspondant à l'expression, la police sera chargée correctement. par exemple, si fc-match "Noto Mono"donne DejaVuSans.ttf: "DejaVu Sans" "Book"alors il peut être considéré comme une expression de police incorrecte.
Avinash R
6

Il s'avère qu'une règle a été activée sur mon système qui bloquait les polices bitmap telles que Terminus.

Cette règle (sur mon système) était /etc/fonts/conf.d/70-no-bitmap-fontset contenait:

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

J'ai supprimé cela du conf.drépertoire et mes polices s'affichent à nouveau correctement urxvt.

casey
la source
3

Veuillez noter qu'il existe un rapport de bogue concernant l'espacement des lettres.

J'ai eu des problèmes similaires. En suivant les recommandations de la discussion de bug, j'ai défini Xft.rgba: noneet Xft.hintstyle: hintfulldans ~/.Xdefaults(au lieu de Xft.rgba: rgbet Xft.hintstyle: hintslight). Cela m'a corrigé - j'ai utilisé Ubuntu Mono comme police, cependant.

balu
la source
3

Ma solution était simple:

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

Maintenant ça marche parfaitement.

b3h3m0th
la source
0

Cela peut provenir du fichier de police réel (Monospace dans mon cas) plus probablement que de quoi que ce soit dans l'urxvt. Si la police déclare (par erreur) certains glyphes trop larges, urxvt est également obligé de rendre la grille plus large.

Dans mon cas, la police "OK" que j'ai trouvée était Bitstream Vera Sans Mono.

exa
la source