2 points par GN⁺ 2025-11-09 | 2 commentaires | Partager sur WhatsApp
  • Une police monospace qui traite les symboles aussi important que l’alphabet fréquemment utilisé dans les langages de programmation, avec pour objectif une harmonie visuelle dans l’éditeur de code
  • Une conception centrée sur les symboles ASCII qui améliore l’alignement des symboles à plusieurs caractères comme ->, ::, =~, et offre une épaisseur équilibrée ainsi qu’une distinction claire
  • En tenant compte de la lisibilité selon le langage, elle représente clairement les symboles et opérateurs dans Perl, Haskell, C, etc.
  • Actuellement proposée en graisse unique et sans ligatures, avec prise en charge du faux gras dans les environnements Linux utilisant fontconfig·pango
  • Distribuée sous SIL Open Font License 1.1, elle peut être librement utilisée et modifiée

Aperçu de Myna

  • Myna est une police monospace qui traite les symboles comme des glyphes de première classe, axée sur l’amélioration de la cohérence visuelle des symboles dans les langages de programmation
    • Elle corrige le problème des symboles comme ->, $, @, % qui paraissent maladroits dans les polices existantes
    • Elle conserve la simplicité de l’ASCII tout en imitant l’effet esthétique des ligatures

Caractéristiques principales

  • Symbol-First Design : conçue autour des symboles ASCII utilisés dans l’ensemble des langages de programmation
  • Précision de l’alignement : améliore la précision d’alignement des symboles multi-caractères comme ->, >>=, ::, pour renforcer la lisibilité du code
  • Épaisseur équilibrée (Weight) : le contraste entre symboles et lettres reste harmonieux
  • Formes minimalistes : les guillemets, virgules, etc. sont simplifiés en formes géométriques
  • Distinction claire : meilleure différenciation entre des caractères souvent confondus comme 1, l, I, |, 0, O, o
  • Design sensible au langage : les sigils de Perl, les opérateurs de Haskell et la notation symbolique du C sont chacun rendus de manière claire

Contexte de développement et état actuel

  • Une police créée directement par son auteur, insatisfait des détails des glyphes des polices monospace existantes
  • Publiée après avoir été utilisée longuement par le développeur dans ses projets professionnels et personnels
  • Actuellement proposée en épaisseur unique, version sans ligatures, avec possibilité d’extension selon la demande
    • Sous Linux, prise en charge du faux gras via fontconfig et pango
  • Sous licence SIL Open Font License 1.1
  • La première version est partie de Hera (une personnalisation basée sur Source Code Pro)
  • Son évolution s’est appuyée sur les qualités de diverses polices comme Fira Mono, Inconsolata, Plex Mono, Office Code Pro, Anonymous Pro

Projets à venir

  • Vise un usage universel dans les terminaux et éditeurs
  • Inclut certains glyphes non ASCII (symboles géométriques et mathématiques, etc.)
  • Extension des glyphes et ajout de fonctionnalités prévus selon les retours de la communauté

2 commentaires

 
bobross0 2025-11-11

J’utilise la police JetBrains, donc c’est intéressant.

 
GN⁺ 2025-11-09
Avis Hacker News
  • J’ai récemment adopté Iosevka (prononcé Joseph) précisément pour ce côté minimaliste.
    Lien GitHub d’Iosevka
    Ce qui est amusant, c’est que la structure du code source de cette police est assez claire pour qu’on puisse réellement la lire.

    • Iosevka est vraiment une très belle police. L’aspect condensé de Myna s’en inspire d’ailleurs.
      La version précédente, Hera, était une version non condensée personnalisée à partir de Source Code Pro.
    • Iosevka prend en charge les builds personnalisés, ce qui permet de choisir différentes variantes de glyphes et des ligatures. C’est assez impressionnant.
    • Je découvre seulement maintenant qu’Iosevka est une variante de Joseph. Je l’utilise depuis des années sans même savoir comment ça se prononçait. C’était pourtant dans le README.
    • Pragmasevka vaut aussi le détour. J’ai quitté Iosevka pour celle-ci, que je trouve un peu plus lisible.
    • J’utilise Iosevka Orw. Sa largeur se situe idéalement entre celle d’Iosevka standard et celle d’une monospace classique.
  • Honnêtement, je ne comprends pas très bien la description « police pour langages riches en symboles ». Les symboles ont l’air assez ordinaires. Peut-être qu’ils sont juste un peu plus espacés ?

    • Le premier point mis en avant sur la page GitHub est « Near-Perfect Alignment ». Autrement dit, les symboles composés de plusieurs caractères comme ->, >>= ou :: sont parfaitement alignés.
    • Je suis le designer. Ici, « langages riches en symboles » désigne des langages comme Perl ou Haskell, qui utilisent beaucoup de symboles. Je voulais créer une police avec un alignement propre sans utiliser de ligatures.
    • Pour expliquer une différence de design, il faut des exemples de comparaison concrets. Sans image comparative, la confusion est inévitable.
  • La police est plutôt jolie. En revanche, il semble manquer le caractère tiret cadratin (—) dans les exemples. J’écris souvent en Markdown, et beaucoup de polices de programmation rendent mal ce caractère.
    Les captures d’écran sont bien plus utiles pour l’évaluation que celles de nombreuses autres polices.

    • Oui, le tiret cadratin est plus qu’un simple caractère. C’est un élément essentiel d’une bonne écriture, à moitié en plaisantant, à moitié sérieusement.
    • Merci pour le retour. Dans cette police, le tiret demi-cadratin est assez large, ce qui le rend difficile à distinguer du tiret cadratin. Je n’utilise presque jamais le tiret cadratin, donc je n’avais pas ressenti le besoin de les différencier.
      Mais s’il y a une demande, je regarderai ce qu’il est possible d’améliorer.
  • Comme beaucoup de polices, celle-ci a aussi un alignement un peu étrange des flèches verticales (↑↓).
    Le caractère ^ était à l’origine destiné à l’accent circonflexe à l’époque des machines à écrire. Sa hauteur est donc asymétrique. Je pense qu’il serait bien que le bas du caret soit symétrique avec v.

    • Je n’ai jamais vu le caret utilisé comme flèche verticale. Je ne pense pas que la symétrie soit vraiment nécessaire.
    • Utiliser le caret comme flèche verticale n’est pas réaliste. Il faudrait le taper sur deux lignes. Je me demande même s’il existe des langages qui font réellement ça.
    • Vous essayez de créer une ligature qui passe d’une ligne à l’autre ? Autant utiliser directement le Unicode, non ?
    • Je suis le designer. Ce type de combinaison est difficile à détecter, et le caret est à l’origine un symbole d’opérateur ; il ne faut pas en casser le sens programmatique. La comparaison avec v n’est pas vraiment équitable.
    • Les raisons historiques du caret importent peu. Aujourd’hui, tout le monde est habitué à cette forme. Modifier la police pour ce genre de cas très particulier créerait au contraire de la confusion.
      Une police doit conserver des formes prévisibles.
  • À propos de la plainte disant que « -> ne ressemble pas à une flèche », la vraie solution serait d’utiliser de vraies flèches comme ←→. J’espère qu’un jour les langages offriront une meilleure qualité typographique.

    • Je suis le designer. Il est impossible d’avoir à la fois élégance et cohérence. Nous essayons de faire en sorte que du code basé sur l’ASCII reste agréable à lire même sans ligatures.
    • Les ligatures existent.
  • JuliaMono est une police conçue pour la prise en charge complète d’Unicode du langage Julia.

    • Merci pour le lien. Les glyphes ont l’air très riches. Il est aussi intéressant de voir l’usage d’un système de fallback comme JuliaMono2, 3 et 4 pour dépasser les limites d’une seule police.
    • Je suis le designer. Je travaille surtout dans la plage ASCII, mais on peut définir JuliaMono comme police secondaire de Myna pour étendre la couverture Unicode.
  • La police est belle, mais l’espacement du mot « Lorem » en haut paraît trop large, ce qui donne une impression étrange de crénage. Personnellement, ça me gêne.

    • Je suis le designer. À force de l’utiliser tous les jours, je me suis habitué à ses défauts. Mais la remarque est pertinente. Je réfléchirai à une correction du crénage pour la prochaine version. S’il y a des exemples précis, n’hésitez pas à ouvrir une issue.
  • Les ligatures sont un sujet assez polémique chez les développeurs.
    Certains trouvent qu’elles rendent le code plus beau et plus lisible, tandis que d’autres estiment que « masquer les symboles » est inutile, voire malhonnête.
    D’autres encore disent que si les langages prenaient correctement en charge Unicode, les ligatures ne seraient pas nécessaires.
    Au final, ce projet a réussi à titiller les trois camps à la fois, et c’est ce qui le rend encore plus intéressant. J’ai mis une étoile sur GitHub.

    • Dans la plupart des éditeurs, les ligatures peuvent être activées ou désactivées en option. Donc personne n’est exclu.
  • Les symboles semblent placés trop haut à côté des minuscules. On dirait un effet secondaire d’un alignement pensé pour les parenthèses. Il manque un peu de sens de l’équilibre.

    • Je suis le designer. Les polices classiques sont centrées sur le texte et suivent un alignement traditionnel, mais le code n’est pas du texte.
      Rompre avec la tradition peut au contraire améliorer la lisibilité. Le tiret a été conçu pour s’aligner avec > afin de former une forme de flèche.
  • Il existe déjà une police d’icônes appelée Myna UI. Cela risque de prêter à confusion.

    • Je suis le designer. Merci de me l’avoir signalé. Cela dit, je ne pense pas que cela créera beaucoup de confusion.