Sous ce titre familier, c'est un peu le test improvisé que j'ai fais quand je suis tombé sur la font (police de caractère) MonoLisa.

Auparavant j'utilisais les polices de caractère Jetbrains Mono et surtout Cascadia Code PL (en italique) sur mes différents terminaux et mes IDE.

Pourquoi changer de police de caractère ?

Déjà la première question qui va venir c'est pourquoi changer de font ? En tant que développeur, écrire du code c'est ce qu'on fait une bonne partie de la journée (quand on travaille, et parfois sur notre temps libre), donc autant avoir une font qui soit lisible, surtout quand on parle de lire des dizaines/centaines de lignes en peu de temps, et qui ne nous fatigue pas les yeux. De plus les fonts peuvent avoir des fonctionnalités supplémentaires qui peuvent être bien utiles comme les ligatures qui est le fait d'associer des caractères ensemble pour former un nouveau caractère comme par exemple (après il y a les pro et les anti-ligatures) :

Exemple de font avec ligatures activées (gauche) ou non (droite)

Une font peut également incorporer des milliers de symboles (ou encore appelés glyphes), qui sont souvent utilisés dans les terminaux (bash, Windows Terminal, Gnome Terminal, Konsole, Tabby, etc...). Souvent on les appelles les fonts Powerline (c'est le nom du pack de symboles le plus utilisé) et du coup cela peut permettre les shells suivant :

Powerline permet le support des barres anguleuses, les icônes et certains symboles, powered by Fish Shell

Et sans surtout oublier la principale importance d'une font, sa lisibilité, dans le cas présent cela veut dire la hauteur de chaque caractère, l'espace entre eux, la forme des caractères et d'autres paramètres. Il suffit par exemple de voir la différence entre la font Arial (que tout le monde connait) et JetBrains Mono :

Arial
JetBrains Mono

Ou encore une comparaison que fait JetBrains entre sa font et d'autres qui sont également populaires chez les développeurs :

Comme vous pouvez le constater, des polices pour être très différentes les unes des autres. De plus, et particulièrement pour les fonts pour développeurs, elles sont conçues (pour la plupart) avec le support (en terme de caractères, de ligatures et/ou de symboles) d'un nombre important de langues (parlées ou de programmation). De même que des mots clés peuvent avoir des stylisations spécifiques (comme function, public, static, etc...) pour mieux les repérer dans le code.

En passant, vous pouvez tester une centaines de fonts gratuitement sur le site ProgrammingFonts où vous pouvez mettre le code que vous souhaitez avec la font que vous souhaitez parmi la liste proposée.

La page d'accueil de ProgrammingFonts

Et les fonts payantes dans tout ça ?

Et là c'est la question qui pique. S'il existe déjà des fonts pour développeurs disponibles gratuitement (JetBrains Mono, Fira/FuraCode, Cascadia Code PL, IBM Plex Mono, Source Code Pro, Hack, Iosevka, Monoid, etc...), pourquoi utiliser une font payante, surtout quand les prix vont d'environ 50€ à plusieurs centaines d'euros (dans ce dernier cas pour les utilisations commerciales ou tous les membres d'une équipe) ?

Exemple de blocs de code écrit avec FiraCode

Comme vous avez pu le voir, les fonts peuvent être très différentes les unes des autres et donc il est tout à fait possible d'apprécier certaines fonts mais que certains points font que vous n'arrivez pourtant pas à vous y faire complètement comme le style de certains caractères ou le manques de certains glyphes par exemple.

Donc quel est "l'avantage" d'une font payante par rapport à une gratuite ? La plupart de ces fonts permettent d'avoir plusieurs alternatives sur plusieurs caractères, le support de plus de langues, plus de ligatures, plus de symboles/glyphes, et évidemment, un style qui peut plus vous sied.

Pourquoi mon choix ?

Et donc pourquoi avoir choisi MonoLisa ? Au début (il y a quelques années), j'avais commencé par utiliser Source Code Pro. Elle était pas mal pour l'époque mais au final elle a commencé à me fatiguer dans le sens où je la trouve personnellement trop inconsistante dans l'espacement des caractères, ce qui donne un rendu pas très homogène. Je peux ajouter également le peu de ligatures disponibles et l'existence d'aucune glyphe (ce qui nécessitait d'avoir une autre font sur le côté pour les gérer).

Puis je suis passé sur FiraCode, puis sur sa variante Powerline nommé FuraCode (ou encore Fira Code Nerd Fonts, l'un ou l'autre des noms est utilisé). Bon pas en avant puisque cette font a plus de ligatures (oui j'aime les ligatures) et dans sa version Powerline il y a pas mal de glyphes. Sauf que si je n'y suis pas resté, c'est que je n'étais pas fan du style global de la font, donc j'y restais plus pour des raisons fonctionnelles qu'esthétiques (au lieu d'avoir un équilibre des deux à mon sens).

Prochain arrêt, JetBrains Mono, que je trouve pas mal du tout personnellement pour plusieurs raisons :

  • Bonne épaisseur des caractères
  • Espacement consistant entre les caractères
  • Pas mal de ligatures
  • Pas mal de ligatures spécifiques à plusieurs langages de programmation
  • Différenciation facile de plusieurs caractères similaires (et sont difficilement différenciables d'un simple coup d’œil avec la plupart des fonts comme o/O/0 (o minuscule, o majuscule, zéro), 1/l/i/L/I)

Malheureusement il n'y a aucun glyphes dans cette font (donc il faut la patcher manuellement). Reste que l'expérience globale est positive.

Je suis quand même passé rapidement sur Cascadia Code PL Italic, afin de voir comment rendait une écriture cursive par défaut sur du code. En terme de style je la trouvait pas mal bien qu'un peu trop fine et un peu trop marqué. Son principal problème étant qu'elle a moins de ligatures spécifiques aux langages de programmation.

C'est peu après que j'ai commencé à regarder les fonts payantes et que je suis tombé donc sur MonoLisa et elle semblait cocher toutes mes cases :

  • Taille et espacement consistante entre les caractères
  • Distinction aisée des caractères pouvant être similaires
  • Facile à lire et bonne épaisseur de la font
  • Possibilité d'activer des styles alternatifs pour certains caractères (comme le zéro, f, g, @ par exemple)
  • Support d'un très grand nombre de langues et de langages
  • Quelques symboles inclus (dont une partie de Powerline, mais vaut mieux la patcher avec Nerd Font)
  • Les mots clés de certains langages ont un style spécifique (et je pense que c'est spécifique à la font parce que ça ne me le faisait pas systématiquement)
Exemple de code PHP avec MonoLisa

Ça fait maintenant un peu plus de six mois que je l'utilise désormais et j'en suis toujours content. Si vous souhaitez la tester, il y a un playground sur le site de MonoLisa qui permet d'écrire du code (ou juste utiliser le code mis en exemple) et permet de faire la comparaison avec d'autres fonts de ce même code.

J'en ai remarqué d'autres qui semblent sympa comme Danke Mono (environ 30€) ou encore Gintronic (minimum 50€, mais elle me semble vraiment pas mal du tout à première vue).

Tout ça pour dire au final que c'est un choix complètement subjectif, personnellement je ne regrette pas mon choix puisque je considère, dans mon cas, que ça rends la lecture du code plus confortable et donc que c'est d'autant plus agréable de coder. À vous ensuite de voir si déjà vous souhaitez changer de font, et si oui, si vous trouvez déjà votre bonheur dans les fonts gratuites (et ce sera très bien, ne soyez pas un pigeon comme moi).