web-dev-qa-db-fra.com

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

À 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 bad fonts
  • xterm good fonts

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 at-il des idées que je peux essayer de résoudre ce problème?

32
casey

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 en /etc/fonts/conf.d/70-no-bitmap-fonts et 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.d et mes polices s'affichent à nouveau correctement dans urxvt.

6
casey

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

-lotsp numéro
Compiler les froufrous: quantité permettant d'ajuster la largeur de caractère calculée 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, ainsi:

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 xfontsel pour 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.

16
jasonwryan

Veuillez noter qu'il y a rapport de bogue concernant l'espacement des lettres.

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

4
balu

Ma solution était simple:

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

Maintenant ça marche parfaitement.

3
b3h3m0th

Cela peut provenir d'un fichier de police réel (Monospace dans mon cas) plus probable que de n'importe quoi dans l'urxvt. Si la police déclare (de manière erronée) certains glyphes trop larges, urxvt est également forcé d'élargir la grille.

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

2
exa