Comment utiliser Fixedsys dans le terminal Gnome, ou partout où des polices à espacement fixe sont requises

10

Je pense que la police Fixedsys est l'une des polices espacées les plus lisibles pour la programmation. Il n'a aucun anticrénelage, avec des lignes verticales de 2 pixels de large. Près de l'idéal pour les hauteurs de points de moniteur actuelles, à mes yeux (littéralement). Voici un exemple:

Exemple Fixedsys

Après des années de Windows à la maison (pour des raisons familiales) et des serveurs Linux au travail accessibles via Cygwin sur Windows (pour des raisons de politique d'entreprise), avec Fixedsys comme shell et police IDE, j'ai finalement décidé de passer à Ubuntu à la maison.

Eclipse et gedit ne posent aucun problème, ils acceptent une version corrigée de la police Fixedsys Excelsior TTF que vous pouvez trouver ici au commentaire # 16 (nom de fichier: FSEX301-L2.ttf). Mais le terminal Gnome n'accepte que les polices à espacement fixe.

Bien que Fixedsys Excelsior soit essentiellement monospace, il contient des glyphes plus gros (principalement pour les langues orientales), ainsi que quelques ligatures. Comme apparemment TOUS les caractères doivent avoir la même largeur pour qu'une police soit reconnue comme étant à espacement fixe, Fixedsys Excelsior ne peut pas être sélectionné dans tous les contextes où des polices à espacement fixe sont requises, y compris gnome-terminal.

Alors, quelle est la façon la plus simple / la plus propre d'utiliser un clone Fixedsys dans des contextes qui n'acceptent que les polices à espacement fixe?

Walter Tross
la source
BTW, pour utiliser Fixedsys Excelsior dans NetBeans, vous devez ajouter -J-Dswing.aatext=falseà netbeans_default_options dans /etc/netbeans.conf. Sinon, NetBeans le rendra "coloré" et flou - cela s'applique également à Windows
Walter Tross
Mise à jour de mon commentaire précédent: Netbeans 7.4 sur Windows nécessite -J-Dawt.useSystemAAFontSettings=onde se débarrasser de l'anti-aliasing.
Walter Tross
Sur le MacBook Pro, je dois travailler avec l'exemple d'image n'est pas nette. La police Fixedsys semble avoir des pixels de bordure grise. AFAICT c'est à cause de ce que l'on appelle l'affichage "rétine", un affichage haute résolution qui fait que les images au sein du HTML sont redimensionnées par un facteur de deux (oui, ils ont préféré casser le HTML et avoir des images floues ...). La même mise à l'échelle s'applique à la police elle-même, la gâchant. D'un autre côté, les écrans haute résolution améliorent considérablement la lisibilité de toutes les polices, évitant ainsi la nécessité de Fixedsys.
Walter Tross

Réponses:

7

C'est la solution que j'ai trouvée. Je l'ai testé à plusieurs reprises et j'utilise la police résultante à plusieurs endroits depuis plus de 2 ans, mais soyez averti: certaines parties de la procédure peuvent être sous-optimales ou tout simplement erronées.

Avant de demander "pourquoi ne pas rendre la police résultante disponible", la réponse est: "parce que je ne suis pas sûr de pouvoir le faire". Le droit d'auteur sur les polices est une question complexe.


Téléchargez la police Fixedsys Excelsior corrigée (fichier FSEX301-L2.ttf, au commentaire # 16)

Installez FontForge (par exemple, à partir du Centre logiciel Ubuntu)

Faites un clic droit sur le FSEX301-L2.ttffichier et ouvrez-le avec FontForge. Dans la fenêtre Charger les polices bitmap qui apparaît, cliquez sur Non .

Cliquez sur Fichier → Exécuter le script ... et copiez et collez ce qui suit dans la fenêtre qui apparaît:

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()

Sélectionnez ensuite FF et cliquez sur OK (cela prendra un certain temps, vous devrez attendre que la fenêtre Exécuter le script disparaisse)

Cliquez sur Élément → Informations sur la police ... Dans PS Names, modifiez le nom de la police , le nom de famille et le nom pour les humains , par exemple, en ajoutant Mono(les espaces ne sont autorisés que dans la deuxième et la troisième chaîne).

Dans la même fenêtre d' informations sur les polices , sélectionnez OS / 2 .
Dans le Misc. onglet changer la famille PFM en Monospace .
Dans l'onglet Metrics, définissez Win Descent Offset et HHead Descent Offset sur 0 (*) .
Dans l' onglet Panose , remplacez Proportion par Monospaced .

Dans la même fenêtre d' informations sur les polices , sélectionnez Recherches .
Dans l' onglet GSUB et dans l' onglet GPOS , sélectionnez chaque ligne tour à tour et cliquez sur Supprimer .

Dans la même fenêtre d' informations sur les polices , cliquez sur OK , et dans Modifier l'identifiant unique? fenêtre qui apparaît, cliquez sur Modifier .

Si vous le souhaitez, vous pouvez modifier une ou plusieurs fonctionnalités douteuses de Fixedsys. Par exemple, le caractère zéro est décalé d'un pixel vers la droite. Pour le ramener au centre, double-cliquez dessus, puis cliquez sur Métriques → Définir le LBearing ... , définissez le LBearing sur 10et cliquez sur OK . Vous pouvez également modifier la forme des caractères, mais gardez toujours les points de contrôle à des multiples de 10 et la largeur à 80.

Cliquez sur Element → Bitmap Strikes Available ... , puis, dans la fenêtre qui apparaît, définissez Pixel Sizes sur 16et cliquez sur OK .

Cliquez sur Fichier → Générer des polices ... , choisissez un répertoire différent et / ou un nom de fichier différent si nécessaire, assurez-vous que le format de sortie est TrueType et cliquez sur Enregistrer . Dans la fenêtre Taille standard non standard qui apparaît, cliquez sur Oui . Dans la fenêtre Erreurs détectées qui apparaît ensuite, cliquez sur Enregistrer (ne vous inquiétez pas).

Quittez FontForge ( Fichier → Quitter ). Dans la fenêtre Police modifiée qui apparaît, cliquez sur Ne pas enregistrer .


Déplacez le fichier généré dans le .fontssous - répertoire de votre répertoire personnel (créez-le s'il n'existe pas).

Ouvrez le terminal Gnome. Cliquez sur Édition → Profils ... Dans un profil (je vous suggère d'en créer un nouveau) changez la police en Fixedsys Excelsior 3.01-L2 Mono(ou tout ce que vous avez appelé la version mono de Fixedsys Excelsior), à la taille 12(qui est la seule "vraie" taille Fixedsys) . Si vous le souhaitez, vous pouvez également désactiver le texte en gras. Je suggère du texte noir sur fond blanc, mais c'est une question de goût.

La variante en gras de cette police équivaut à répéter le caractère décalé d'un pixel vers la droite (ce qui est différent de celui FSEX301-L2.ttfoù il apparaît lissé). Ce n'est pas très lisible - mais avez-vous vraiment besoin de gras? Je ne. Le problème ne concerne que les contextes où le gras ne peut pas être désactivé (pas même, par exemple, en modifiant la coloration syntaxique), en particulier dans les cas où l'espacement des caractères est également incrémenté d'un pixel, rompant les alignements (ce n'est pas le cas dans gnome -Terminal). Je n'ai pas encore trouvé de solution à cette dernière nuisance. Les suggestions sont les bienvenues.


(*): pas nécessaire depuis la sortie FontForge du 31/07/2012 (en 14.04 LTS - Trusty Tahr)

Walter Tross
la source
À tous ceux qui ont enregistré et / ou appliqué cette recette: veuillez noter qu'elle a peut-être légèrement changé entre-temps afin de résoudre quelques petits problèmes, et qu'elle peut encore changer à l'avenir. Vous pouvez jeter un œil à l'historique des modifications.
Walter Tross
Pour info, fonctionne aussi très bien sur Windows. Aussi avec "Fixedsys Excelsior 2.0" (qui, à mon avis, est bien meilleur pour les terminaux car les caractères sont un peu moins élevés qu'en FSEX3). Grande police pour PuTTY! (le FSEX d'origine et toute police considérée comme non monospace rendent PuTTY très lent lorsque l'écran se rafraîchit très souvent)
ThiefMaster
PhpStorm 7.1 sur 14.04 ne reconnaît pas la police que je décris dans ma réponse comme étant une police à espacement fixe, je ne sais pas pourquoi :-( Heureusement, si vous décochez "afficher uniquement les polices à espacement fixe", vous pouvez toujours l'obtenir. Pour une raison quelconque la taille doit être de 15 ou 16 (ils se ressemblent) au lieu de 12. PhpStorm semble être un peu buggé pour moi ...
Walter Tross
3

Excellente solution de Walter Tross, mais si vous ne voulez pas faire tout le travail, voici le lien de téléchargement:

FixedsysExcelsiorIIIb-L2_Mono.ttf

Borjovsky
la source
1
Merci Rafael, le "pourquoi" est dans le deuxième paragraphe de ma réponse
Walter Tross
Ops! Désolé ... Manque d'attention ... Corrigé maintenant.
Borjovsky