Come impedire che la versione in grassetto "automatica" di un carattere sia più larga del normale con la stessa dimensione in pt?


10

Ho un carattere a spaziatura fissa ( PT Mono) che preferisco usare nella programmazione di IDE. Il carattere ha solo Regular, tutti gli altri Bolde Italicsono derivati ​​da inclinazione e "grassetto" di Regular. Il problema è che i caratteri "in grassetto" sono più ampi di quelli normali, quindi le stringhe del codice sorgente nella finestra IDE sono ora composte da caratteri non monospaziati.

Come posso controllare la "grassetto" del carattere in modo che non diventi più largo del normale?

Il problema è illustrato nello screenshot seguente ( PT Mono, nessun grassetto dedicato). Guarda come le parole "unsigned char" e "sizeof" si stanno allontanando dalle loro posizioni corrette.

il grassetto automatico cambia la larghezza

Ecco un altro esempio, Droid Sans Mono(nessun grassetto dedicato). inserisci qui la descrizione dell'immagine

Ed ecco un esempio in cui il font ha dedicato la versione in grassetto ( Liberation Mono). Il grassetto e il regolare sono allineati perfettamente. inserisci qui la descrizione dell'immagine

Quindi, il problema è sicuramente il rendering frivoloso di grassetto in situazioni in cui non viene fornito il grassetto. La colpa è del motore dei caratteri.

UPD: Esiste un file /etc/fonts/conf.avail/90-synthetic.confche, se viene referenziato dalla messa a punto /etc/fonts/conf.d/del motore dei caratteri, esegue un accorciamento sintetico dei caratteri che non hanno la versione in grassetto. Se il collegamento simbolico a questo file viene rimosso da /etc/fonts/conf.d/, l'incorporamento scompare. Questo non è esattamente ciò che si desidera, ma almeno questo cura il caso dei caratteri monospace che non sono monospace (vedi sotto PT Mono). La messa a punto dell'emboldening è ancora desiderata (o dal file di configurazione o dalla freetype2patch).

inserisci qui la descrizione dell'immagine


Non puoi controllarlo. Il design del carattere sarebbe rovinato. Anche se riduci con precisione le dimensioni (che non puoi) per abbinare la normale spaziatura dei caratteri, il carattere in grassetto sembrerebbe più piccolo. Se vuoi un carattere uniformemente spaziato, non usare il carattere grassetto ... o prova il terminale
zetah

Non è vero. I caratteri con caratteri tipografici regolari e in grassetto forniti in file separati hanno la stessa larghezza di caratteri in normale e in grassetto. Ad esempio, LetterGothic.
mbaitoff,

Sono corretto. Ho notato lo stesso usando SciTE (e forse anche tu usi l'editor basato su Scintilla - forse Geany?) Mentre il mio carattere è Droid Sans Mono, ma l'ho preso per scontato e non avevo idea che il carattere ponderato potesse avere spaziature diverse anche per i caratteri a spaziatura fissa, mentre il carattere in grassetto utilizza la stessa spaziatura del normale. Ancora di più sembra che anche i caratteri proporzionali abbiano questa "caratteristica" che hai notato, non tutto. Ci scusiamo per la mia audace prima risposta, avrei dovuto controllare prima
zetah

@zetah: ho guardato attraverso diversi file di font e sembra proprio che il cambiamento della larghezza avvenga solo quando non c'è una versione in grassetto dedicata del font. Ho intenzione di aggiornare la domanda con più schermate.
mbaitoff,

Risposte:


8

mbaitoff , sto pubblicando questo come aggiunta al tuo aggiornamento, non come risposta

Se l'utente crea il file denominato ~/.fonts.conf:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <match target="font">
        <test name="spacing" compare="eq">
            <const>mono</const>
        </test>
        <edit name="embolden" mode="assign">
            <bool>false</bool>
        </edit>
    </match>
</fontconfig>

quindi, le applicazioni possono utilizzare il carattere in grassetto monospaziato se disponibile e disabilitare "grassetto sintetico" se il carattere utilizzato non ha un carattere in grassetto.

È solo un approccio alternativo e leggermente diverso con risultati diversi


Se il collegamento simbolico /etc/conf.d/50-user.confviene rinominato per essere eseguito dopo 90-synthetic.conf, non è necessario rimuovere embolden completamente. 99-user.conffunziona bene. Altrimenti, lo 90-synthetic.confabilita di nuovo.
musiKk
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.