Interlinea eccessiva con determinati caratteri


13

Per molto tempo ho usato DejaVu Sans Mono come font di programmazione. Devo ancora trovare un carattere migliore.

Ma poco fa ho scoperto la Fira di Mozilla , che sembra molto carina per il codice . Quindi ho deciso di provarlo in Emacs.

Sfortunatamente, quando lo uso in Emacs, la spaziatura tra le linee esplode e riduce il numero di righe che posso vedere di circa 10.

Ho provato (setq line-spacing 0)e diverse combinazioni di cose come (set-frame-font (font-spec :name "Fira Mono" :width 'normal :height 100)), ma non importa quello che faccio, la spaziatura eccessiva della linea rimane. ( line-spacingPurtroppo non è possibile utilizzare valori negativi in Emacs, che sembrerebbe la soluzione ovvia.)

Tuttavia, non sembra essere un bug nel font, perché quando uso Fira Mono in Kate alla stessa dimensione, la spaziatura della linea è quella che considererei normale e apparentemente uguale alla spaziatura della linea Emacs con DejaVu Sans .

È un bug in Emacs? C'è un modo per risolvere questo problema?

Grazie per qualsiasi consiglio

Sinistra: Emacs Fira Mono Destra: Emacs DejaVu Sans Mono Emacs Fira Mono vs. Emacs DejaVu Sans Mono

Sinistra: Emacs Fira Mono Destra: Kate Fira Mono Emacs Fira Mono vs. Kate Fira Mono


1
Potresti provare --line-spacing=PIXELSdalla riga di comando con emacs, ma la mia ipotesi è che non sarà di aiuto. La mia sfera di cristallo mi dice che la spaziatura tra le linee non sta inserendo pixel extra e che il problema è con la visualizzazione del carattere di Emacs. La modalità buffer fa differenza? (Suppongo che tu abbia controllato frame-parametersper vedere che tipo di carattere è ecc.)
Ha

2
Ad essere sincero, a me sembra che DejaVu non abbia abbastanza spaziatura, e se guardi l'ultimo screenshot con Fira, puoi anche vedere quei personaggi che hanno elementi discendenti come ge y sono ritagliati. A parte questo, penso che l'altezza minima della linea sarebbe calcolata sulla base di alcuni parametri TTF, quindi se vuoi davvero cambiarlo, cercherei di modificare il file TTF (o è OTF?) Per cambiare il carattere metrica per consentire meno lead.
wvxvw,

1
Cosa succede se si aggiunge minspace=truealla definizione del font FontConfig? Ad esempio qualcosa del genere emacs -fn 'Fira Mono:minspace=true', o qualunque sia il nome del carattere.
jch

3
Non è quello che vuoi sentire, ma ho rinunciato alla spaziatura in linea circa un anno fa. Invece, scelgo un font con cui mi trovo a mio agio e ho impostato il :heighte basta. Emacs non ha davvero un buon controllo della distanza tra le linee e la regolazione causa solo più problemi. Forse una richiesta di funzionalità sarebbe appropriata, ad esempio per impostare la distanza tra le linee in pixel e farla funzionare con tutti i caratteri.
elenco delle leggi

1
L'altezza della linea è una proprietà del carattere, il rendering di Emacs rispetta il valore dato. Se forzi una certa altezza indipendentemente dalla proprietà del carattere, potresti ritrovarti con caratteri ritagliati, come nello screenshot di Fira Mono in Kate (come già indicato da wvxvw). Quando si tratta di caratteri proporzionali, trovo che Lucida Grande Mono sia la più efficiente in termini di spazio mentre è ancora molto leggibile a piccole dimensioni (Droid Sans Mono si avvicina, ma è meno denso).
paprika

Risposte:


2

Fira Mono v3.2 ha regolato l'altezza della linea del carattere, che lo ha reso utilizzabile da me in Emacs:

https://github.com/mozilla/Fira/issues/67


Grazie per l'aggiornamento. Sembra un po 'meglio, ma ho ancora 4 righe in meno in Emacs con Fira Mono 3.2 rispetto a DejaVu Sans Mono. Quindi, sfortunatamente, è ancora inutile. Non ho bisogno di più spazio tra le linee; non mi guadagna nulla. Tutto ciò che fa è ridurre quanto posso vedere sullo schermo e farmi scorrere di più, riducendo la mia efficienza e sprecando il mio tempo. :( Peccato che Mozilla sia più interessato a rendere un carattere arioso che a renderlo utile.
Blujay

... e puoi ottenere altre 4 righe sullo schermo con Consolas (ad esempio) rispetto a DejaVu Sans Mono. I singoli caratteri hanno altezze intrinseche diverse (e larghezze, nel caso delle varianti monospaziali), che non hanno nulla a che fare con l'interlinea. Imputare una sorta di malizia a Mozilla o Carrois (il tipo di fonderia che sembra guidare il progetto di Fira) è semplicemente stupido.
cemerick,

Chi ha detto qualcosa sulla malizia? O da quando "arioso" = malizia? Il fatto è che attualmente esiste una tendenza ad aumentare gli spazi bianchi, fondamentalmente in tutte le cose relative all'interfaccia utente. Praticamente ogni grande sito web che fa una riprogettazione ultimamente aumenta notevolmente la spaziatura delle linee. È ciò che è attualmente popolare. Queste stesse tendenze si riversano negli strumenti creati per realizzare queste cose. "Più spazio nel sito web = buono, quindi più spazio nell'editor = buono." Questo dogmatismo non è malevolo, è solo inutile. Cerca di capire prima di difenderti dai non-attacchi.
Blujay,

1
Oh, e FYI, c'è un codice Fira nelle opere con meno interlinea. Spero che scompaia.
Blujay,

Al momento, tuttavia, sembra avere un grave problema in Emacs. ("I commenti possono essere modificati solo per 5 minuti." Sospiro.)
blujay
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.