Come utilizzare Fixedsys nel Terminale Gnome o ovunque siano richiesti caratteri a spaziatura fissa


10

Penso che il carattere Fixedsys sia uno dei caratteri monospaziati più leggibili per la programmazione. Non ha antialiasing zero, con linee verticali larghe principalmente 2 pixel. Vicino all'ideale per i pitch dot monitor attuali, ai miei occhi (letteralmente). Ecco un esempio:

Esempio di Fixedsys

Dopo anni di Windows a casa (per motivi familiari) e di server Linux al lavoro accessibili tramite Cygwin su Windows (per motivi di politica aziendale), con Fixedsys come shell e font IDE, ho finalmente deciso di passare a Ubuntu a casa.

Eclipse e gedit non sono un problema, accettano una versione corretta del font TTF Fixedsys Excelsior che puoi trovare qui al commento # 16 (nome file: FSEX301-L2.ttf). Ma il Terminale Gnome accetta solo caratteri a spaziatura fissa.

Sebbene Fixedsys Excelsior sia essenzialmente monospaziato, contiene glifi più grandi (principalmente per le lingue orientali) e anche alcune legature. Poiché apparentemente TUTTI i caratteri devono avere la stessa larghezza per riconoscere un carattere come monospaziato, Fixedsys Excelsior non può essere selezionato in tutti quei contesti in cui sono richiesti caratteri monospaziati, incluso gnome-terminal.

Quindi qual è il modo più semplice / pulito per usare un clone Fixedsys in contesti che accettano solo caratteri a spaziatura fissa?


A proposito, per usare Fixedsys Excelsior in NetBeans, devi aggiungere -J-Dswing.aatext=falsea netbeans_default_options in /etc/netbeans.conf. Altrimenti NetBeans lo renderà "colorato" e sfocato - questo vale anche per Windows
Walter Tross,

Aggiornamento al mio commento precedente: Netbeans 7.4 su Windows richiede -J-Dawt.useSystemAAFontSettings=ondi eliminare l'antialiasing.
Walter Tross,

Su MacBook Pro devo lavorare con l'immagine di esempio non è nitida. Il carattere Fixedsys sembra avere pixel di bordo grigio. AFAICT questo è dovuto al cosiddetto display "retina", un display ad alta risoluzione che fa ridimensionare le immagini all'interno dell'HTML di un fattore due (sì, hanno preferito interrompere l'HTML e avere immagini sfocate ...). Lo stesso ridimensionamento si applica al carattere stesso, rovinandolo. D'altra parte, i display ad alta risoluzione migliorano notevolmente la leggibilità di tutti i caratteri, ovviando alla necessità di Fixedsys.
Walter Tross,

Risposte:


7

Questa è la soluzione che ho trovato. L'ho testato a fondo diverse volte e sto usando il carattere risultante in diversi punti da oltre 2 anni ormai, ma attenzione: alcune parti della procedura possono andare ovunque da subottimali a chiaramente sbagliate.

Prima di chiedere "perché non rendi disponibile il carattere risultante", la risposta è: "perché non sono sicuro di poterlo fare". Il copyright dei caratteri è una questione complessa.


Scarica il font Fixedsys Excelsior corretto (file FSEX301-L2.ttf, al commento # 16)

Installa FontForge (ad es. Dal Ubuntu Software Center)

Fare clic con il tasto destro sul FSEX301-L2.ttffile e aprirlo con FontForge. Nel Bitmap Carica tipi di carattere finestra visualizzata, fare clic su No .

Fai clic su File → Esegui script ... e copia e incolla quanto segue nella finestra che appare:

SelectAll()
foreach
   if (GlyphInfo("Width") != 80)
      DetachAndRemoveGlyphs()
   else
      b = GlyphInfo("BBox")
      if (b[0] < 0 || b[1] < -30 || b[2] > 80 || b[3] > 130)
         DetachAndRemoveGlyphs()
      endif
   endif
endloop
SelectNone()

Quindi seleziona FF e fai clic su OK (ci vorrà un po ', dovrai attendere fino alla scomparsa della finestra Esegui script )

Clicca Elemento → Font Info ... In PS Nomi cambiare il Fontname , Cognome e Nome per gli esseri umani , per esempio, aggiungendo Mono(gli spazi sono ammessi solo nella seconda e terza corda).

Nella stessa finestra Informazioni carattere , selezionare OS / 2 .
Nel misc. scheda cambia la famiglia PFM in Monospace .
Nella scheda Metriche, imposta Offset di discesa Win e Offset di discesa HHead entrambi su 0 (*) .
Nella scheda Panose , cambia Proporzione in Monospaziato .

Nella stessa finestra Informazioni carattere , selezionare Ricerche .
Nella scheda GSUB e nella scheda GPOS , selezionare ciascuna riga a turno e fare clic su Elimina .

Nella stessa finestra Informazioni carattere , fai clic su OK e nella Cambia UniqueID? finestra che appare fare clic su Cambia .

Se lo desideri, puoi modificare una o più funzionalità discutibili di Fixedsys. Ad esempio, il carattere zero viene spostato di un pixel a destra. Per riportarlo al centro, fai doppio clic su di esso, quindi fai clic su Metriche → Imposta LBearing ... , imposta LBearing su 10e fai clic su OK . Puoi anche cambiare la forma dei personaggi, ma mantieni sempre i punti di controllo a multipli di 10 e la larghezza a 80.

Fai clic su Elemento → Bitmap disponibili ... , quindi, nella finestra visualizzata, imposta Dimensioni pixel su 16e fai clic su OK .

Fai clic su File → Genera caratteri ... , scegli una directory diversa e / o un nome file diverso, se necessario, assicurati che il formato di output sia TrueType e fai clic su Salva . Nella finestra Dimensioni em non standard visualizzata, fai clic su . Nella finestra Errori rilevati che appare dopo fai clic su Salva (non preoccuparti).

Esci da FontForge ( File → Esci ). Nella finestra Modifica carattere visualizzata, fai clic su Non salvare .


Sposta il file generato nella .fontssottodirectory della tua home directory (crealo se non esiste).

Apri il Terminale Gnome. Fai clic su Modifica → Profili ... In un profilo (ti suggerisco di crearne uno nuovo) cambia il carattere in Fixedsys Excelsior 3.01-L2 Mono(o come hai chiamato la versione mono di Fixedsys Excelsior), a dimensione 12(che è l'unica "vera" dimensione Fixedsys) . Se lo desideri, puoi anche disabilitare il testo in grassetto. Suggerisco testo nero su sfondo bianco, ma è una questione di gusti.

La variante in grassetto di questo carattere equivale a ripetere il carattere spostato di un pixel a destra (questo è diverso da FSEX301-L2.ttfdove appare levigato). Non è molto leggibile, ma hai davvero bisogno di grassetto? Io non. Il problema è solo con quei contesti in cui il grassetto non può essere disabilitato (nemmeno, ad esempio, modificando l'evidenziazione della sintassi), specialmente in quei casi in cui la spaziatura dei caratteri viene incrementata anche di un pixel, interrompendo gli allineamenti (questo non è il caso di Gnome -terminale). Non ho ancora trovato una soluzione a quest'ultima seccatura. Suggerimenti sono ben accetti


(*): non necessario dall'uscita FontForge del 2012-07-31 (in 14.04 LTS - Trusty Tahr)


A tutti coloro che hanno salvato e / o applicato questa ricetta: si noti che nel frattempo potrebbe essere leggermente cambiata al fine di risolvere alcuni piccoli problemi e che potrebbe ancora cambiare in futuro. Puoi dare un'occhiata alla cronologia delle modifiche.
Walter Tross,

Cordiali saluti, funziona bene anche su Windows. Anche con "Fixedsys Excelsior 2.0" (che, secondo me, è molto meglio per i terminali poiché i caratteri sono un po 'meno alti rispetto a quelli in FSEX3). Grande carattere per PuTTY! (il file FSEX originale e qualsiasi carattere considerato non monospaziale rendono PuTTY molto lento quando lo schermo si aggiorna molto spesso)
ThiefMaster il

PhpStorm 7.1 su 14.04 non riconosce il carattere che descrivo nella mia risposta come un carattere a spaziatura fissa, non so perché :-( Fortunatamente, se deselezioni "mostra solo caratteri a spaziatura fissa", puoi ancora ottenerlo. Per qualche motivo la dimensione deve essere di 15 o 16 (sembrano uguali) invece di 12. PhpStorm sembra essere un po 'difettoso per me ...
Walter Tross

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.