Problema di rendering dei caratteri in urxvt - troppo spazio tra i caratteri


27

A partire da oggi sto riscontrando problemi di rendering dei caratteri con rxvt-unicode. In particolare con molti caratteri ottengo un sacco di spazio in più tra i personaggi. In altri caratteri rxvt rifiuta di cambiare dimensione.

Ecco un esempio del problema di spaziatura tra urxvt e xterm.

Le risorse dei caratteri:

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

E i rendering

  • urxvt caratteri errati
  • xterm buoni caratteri

Ho provato tutte le permutazioni di accenni e antialiasing. La modifica della dimensione o della dimensione del pixel ridimensiona il carattere in urxvt ma ciò aumenta anche la spaziatura aggiuntiva.

Qualcuno ha idee che posso provare a risolvere questo?


1
Non penso che xtermstia effettivamente usando lo stesso carattere. Il Je il 0sono nettamente diversi. È possibile confermare ciò utilizzando un carattere inesistente nel file di risorse ( xterm*faceName: xft:Nosuchfont:medium:size=10). Se sembra ancora lo stesso, ovviamente non è Terminus.
Riccioli d'oro

@goldilocks Sembra che tu abbia ragione. Urxvt sta scegliendo il carattere sbagliato e lo rende terribilmente.
Casey,

1
L'ho notato prima gvimdurante l'uso della mia configurazione su un sistema in cui il carattere desiderato non era installato. xfto qualcosa ricade su un carattere non monospace ed è così che appaiono.
Riccioli d'oro

2
@goldilocks Si scopre che una brutta regola fontconfig è stata inserita durante un aggiornamento e stava bloccando la disponibilità di tutti i font bitmap. L'ho ammazzato e sono tornato alla normalità.
Casey

Risposte:


15

Urxvt ha un'opzione per la crenatura base: letterSpace. Vedi man urxvt:

-letsp number
Compila frills: importo per regolare la larghezza del carattere calcolato per controllare la spaziatura complessiva delle lettere. I valori negativi restringono la spaziatura delle lettere, i valori positivi distanziano maggiormente le lettere. Utile per aggirare metriche di caratteri dispari; risorsa letterSpace.

Quindi puoi regolare la spaziatura aggiungendo una linea alla tua ~/.Xresources, in questo modo:

URxvt.letterSpace: -1

Nota: è difficile dirlo dal primo screenshot, ma sembra che Urxvt stia ricadendo sul carattere predefinito in quanto non riesce a trovare o caricare Terminus, da cui la grande spaziatura. Terminus è un carattere bitmap (che è probabilmente disabilitato di default), quindi dovresti usare xfontselper copiare la stringa di caratteri corretta nella tua definizione.

Vedi la pagina Arch Wiki su X Logical Font Description per una descrizione dettagliata di come funziona questo sistema.


3
Ho avuto anche questo problema e ho scoperto che urxvt -letsp -2era necessario per me. L'uso -1era migliore, ma inizialmente non mi rendevo conto che non era abbastanza.
Adam Katz,

Inoltre puoi usare fc-match <font-name>invece di xfontselse non è installato ( font-name è l'espressione data nel URxvt*fontnome del font della tua linea). Se viene visualizzato con un valore corrispondente all'espressione, il carattere verrà caricato correttamente. ad esempio, se fc-match "Noto Mono"DejaVuSans.ttf: "DejaVu Sans" "Book"allora può essere considerata un'espressione di carattere errata.
Avinash R

6

Si scopre che una regola è stata abilitata sul mio sistema che ha bloccato i caratteri bitmap come Terminus.

Questa regola (sul mio sistema) era /etc/fonts/conf.d/70-no-bitmap-fontse conteneva:

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

L'ho rimosso dalla conf.ddirectory e i miei caratteri vengono nuovamente visualizzati correttamente urxvt.


3

Si noti che esiste una segnalazione di bug relativa alla spaziatura delle lettere.

Ho avuto problemi simili. Seguendo le raccomandazioni della discussione sui bug, ho impostato Xft.rgba: nonee Xft.hintstyle: hintfullin ~/.Xdefaults(invece di Xft.rgba: rgbe Xft.hintstyle: hintslight). Ciò ha risolto il problema per me - ho usato Ubuntu Mono come font, però.


3

La mia soluzione era semplice:

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

Ora funziona perfettamente.


0

Ciò potrebbe derivare dall'effettivo file di caratteri (Monospace nel mio caso) più probabile che da qualsiasi cosa nell'urxvt. Se il carattere (erroneamente) dichiara che alcuni glifi sono troppo larghi, urxvt è costretto a allargare anche la griglia.

Nel mio caso, il carattere "OK" che ho trovato era Bitstream Vera Sans Mono.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.