4 points par GN⁺ 2025-12-14 | 2 commentaires | Partager sur WhatsApp
  • Police libre contenant des glyphes (formes de caractères) pour les caractères Unicode du monde entier, maintenue dans le cadre du projet GNU
  • À partir de la version 15.1.01, un nouvel encodage combinatoire (méthode 6/3/1) a été introduit grâce aux contributions de Minseo Lee et Ho-seok Ee, avec un système de glyphes hangul amélioré
  • Dans la version la plus récente, 17.0.03, de nombreux glyphes ont été corrigés ou ajoutés, notamment des sinogrammes chinois et japonais ainsi que des symboles arabes et musicaux
  • Prend en charge l’intégralité des 65 536 points de code du BMP (Basic Multilingual Plane), et étend progressivement aussi les zones SMP (Supplementary Multilingual Plane) et CSUR (ConScript Unicode Registry)
  • Distribuée sous double licence avec GNU GPLv2+ avec exception d’intégration de police et SIL Open Font License 1.1, ce qui permet une utilisation libre même dans des logiciels commerciaux
  • Projet de police Unicode open source emblématique visant une couverture complète des systèmes d’écriture du monde entier

Présentation de GNU Unifont

  • GNU Unifont est une police qui contient des glyphes pour tous les points de code Unicode imprimables, maintenue comme partie intégrante du projet GNU
    • Prise en charge complète du plan multilingue de base (BMP, U+0000~U+FFFF)
    • Extension continue du plan multilingue supplémentaire (SMP, U+010000~U+01FFFF) ainsi que des zones CSUR/Under-CSUR
  • Utilisable aussi dans des logiciels commerciaux, mais les polices dérivées doivent être publiées sous la même licence
    • Les licences sont GNU GPLv2+ (avec exception d’intégration de police) et SIL Open Font License 1.1
    • La publication des polices dérivées garantit l’intérêt public

Droit d’auteur et licence

  • Les milliers de glyphes sont des créations de contributeurs individuels, protégées par les lois nationales sur le droit d’auteur
    • Certains reprennent des formes de caractères existantes, d’autres sont des icônes ou symboles conçus, bénéficiant d’une protection internationale encore plus forte
  • Un mémorandum relatif au droit d’auteur allemand est publié
  • Depuis Unifont 13.0.04, le projet est distribué sous double licence GPL 2+ / SIL OFL 1.1
    • L’intégration (embed) de la police dans un document ne constitue pas une violation de la GPL

Téléchargement et formats de police

  • Fournit une version standard ainsi qu’une version incluant les glyphes PUA CSUR/Under-CSUR
    • Prise en charge de nombreux formats comme OpenType (.otf), PCF, BDF, PSF, HEX, etc.
    • Installation possible sur Windows et macOS ; dans le terminal macOS, il faut activer l’option Antialias pour une bonne lisibilité
  • Certains moteurs de rendu ignorent les informations d’espacement des glyphes, ce qui peut entraîner des erreurs d’affichage dans les moteurs strictement monospace

Limites d’Unifont

  • Un seul glyphe est stocké par point de code imprimable
    • Les écritures indiennes (devanagari, bengali, tamoul, etc.) ou les caractères dont la forme varie selon la position (comme l’arabe) ne sont donc pas rendus avec exactitude
    • Pour les écritures complexes, l’usage de polices OpenType spécialisées est recommandé

Contribution de nouveaux glyphes

  • Pour ajouter de nouveaux glyphes, un contact préalable par e-mail est nécessaire
    • Cela permet de participer après concertation afin d’éviter les doublons
  • Les glyphes hanzi 15×16 pixels (Plans 2 et 3) dont le gouvernement chinois détient les droits d’auteur ne peuvent pas être inclus dans une police libre

Dernières versions — Unifont 17.0

  • Version 17.0.03 du 1er novembre 2025
    • Correction de plus de 100 sinogrammes contenant les clés chinoises de ‘馬’ (cheval) et ‘鳥’ (oiseau)
    • Intégration des listes normatives de caractères simplifiés chinois publiées entre 1935 et 2013
    • Inclusion de la norme moderne des clés de caractères d’usage courant publiée en 2009
  • Version 17.0.02 du 18 octobre 2025
    • Nombreuses contributions de Paul Hardy, David Corbett, 晓晓Akatsuki, Boris Zhang et d’autres sur les plans 0 à 3
    • Nombreuses corrections sur l’arabe, les symboles d’échecs, les extensions CJK, etc.
  • Version 17.0.01 du 9 septembre 2025
    • Ajout de l’Arabic Extended-B, de symboles monétaires, de caractères télougou et kannada, etc.
    • Ajout, sur les plans 1 à 3, de nombreuses écritures comme Arabic Extended-C, Sidetic, Tolong Siki, Beria Erfe, Adlam, etc.

Principales versions précédentes

  • Unifont 16.0 (premier semestre 2025)
    • Nombreuses corrections en arabe, grec, hangul, symboles musicaux, etc.
    • Ajout d’écritures CSUR comme Sitelen Pona et Zbalermorna
  • Unifont 15.1 (2024)
    • Introduction du codage Johab 6/3/1 pour le hangul combinatoire proposé par Ho-seok Ee
    • Passage de la construction par défaut à OpenType au lieu de TrueType
    • Améliorations majeures du hangul, des extensions CJK et des glyphes Wen Quan Yi

Couverture des glyphes

  • Large prise en charge des plans Unicode jusqu’aux plans 0 à 3, 14 et 15
    • Plan 0 : plan multilingue de base (couverture complète de tous les caractères majeurs)
    • Plan 1 : plan multilingue supplémentaire (symboles musicaux, hiéroglyphes, écritures anciennes, etc.)
    • Plans 2 à 3 : sinogrammes CJK étendus
    • Plan 14 : tags et sélecteurs de variante
    • Plan 15 : zone privée CSUR/Under-CSUR

Écritures CSUR et UCSUR

  • Tengwar, Cirth, Aurebesh, Klingon, Sitelen Pona, Sadalian, etc.
    • Inclut diverses écritures construites (conlang scripts)
    • Certaines sont encore indiquées comme inachevées

Variantes japonaise et chinoise

  • Une version unifont_jp prenant entièrement en charge la norme JIS X 0213 est proposée
    • Elle utilisait d’abord Jiskan16, puis l’a remplacé par les glyphes libres Izumi16
  • La version chinoise couvre intégralement le Tableau normatif général des caractères chinois d’usage courant
    • Elle s’appuie sur les glyphes libres du projet Wen Quan Yi (文泉驛)

Détails techniques

  • La conversion TrueType repose sur des scripts de Luis Alejandro González Miranda
    • Automatisation de la conversion .hex.sfd.ttf
  • La base repose sur une grille de 16×16 pixels, avec une prise en charge future prévue pour des glyphes de 32×32 pixels

Feuille de route

  • Tous les glyphes SMP en 16×16 pixels sont terminés
  • Les écritures complexes comme le tangoute (Tangut) seront produites plus tard en 32×32 pixels
  • L’ajout d’écritures CSUR se poursuit
  • Toutes les nouvelles contributions doivent être publiées sous GPL 2+ / SIL OFL 1.1

Importance du projet

  • GNU Unifont est une police libre majeure visant à garantir l’accessibilité numérique des systèmes d’écriture du monde entier
  • Elle joue un rôle d’infrastructure clé dans l’écosystème open source, l’internationalisation (i18n) et l’ingénierie typographique
  • C’est un projet qui améliore continuellement la complétude visuelle du standard Unicode grâce aux contributions de la communauté

Page de la police hangul d’Unifont - Hangul (Hangeul) Font

Origine et structure du hangul

  • Le hangul a été créé par le roi Sejong entre 1443 et 1446, puis promulgué en 1446 dans le Hunminjeongeum Haeryebon
    • L’objectif déclaré de sa création était de permettre au peuple de “l’apprendre facilement et de l’utiliser commodément au quotidien”
    • Le Haeryebon est un commentaire expliquant les principes de création, dont l’unique exemplaire redécouvert pendant la Seconde Guerre mondiale est conservé
  • Le hangul repose sur une structure en blocs syllabiques composée de trois éléments : consonne initiale, voyelle médiane et consonne finale
    • Exemple : “hangul” se compose des combinaisons ‘h + a + n’ et ‘g + eu + l’
    • Les voyelles et semi-voyelles (y, w) sont placées à droite ou en dessous de la consonne initiale

Principe de composition des consonnes

  • Les consonnes partent de cinq consonnes de base inspirées de la forme des organes de la parole (giyeok, nieun, mieum, siot, ieung)
    • En y ajoutant des traits, les 17 consonnes originelles ont été formées
    • Certaines consonnes utilisent des formes doublées pour marquer l’emphase
  • Les jamo de compatibilité (Compatibility Jamo) sont aussi inclus dans Unicode, et certains jamo anciens ne sont plus utilisés aujourd’hui

Principe de composition des voyelles

  • Les voyelles dérivent du concept des trois éléments cosmiques : ciel (yang), humain (milieu), terre (yin)
    • Éléments de base : point (arae-a), ligne horizontale (eu), ligne verticale (i)
  • Il existait à l’origine 11 voyelles, et arae-a a disparu du coréen standard moderne, mais subsiste dans le dialecte de Jeju
  • La combinaison de voyelles forme des diphtongues, dont certaines ne sont plus utilisées en hangul moderne
  • Le jeu de jamo hangul d’Unifont prend en charge toutes les voyelles et diphtongues, anciennes comme modernes

Zones hangul dans Unicode

  • Le hangul figure dans les plages Unicode suivantes
    • U+1100–U+11FF: Hangul Jamo
    • U+3130–U+318F: Hangul Compatibility Jamo
    • U+A960–U+A97F: Hangul Jamo Extended–A
    • U+AC00–U+D7A3: Hangul Syllables
    • U+D7B0–U+D7FF: Hangul Jamo Extended–B
    • U+FFA0–U+FFDF: Half-width Compatibility Jamo
  • L’ajustement de la position combinatoire des consonnes initiales, voyelles médianes et consonnes finales est au cœur du design typographique, et même une police bitmap peut représenter des syllabes combinatoires

Polices combinatoires (Johab) X11 et Unifont

  • Les polices encodées en Johab génèrent des glyphes syllabiques en combinant consonne initiale, voyelle médiane et consonne finale
    • Elles étaient utilisées dans le terminal Hanterm de l’environnement Unix X11
  • Les polices libres pour Hanterm n’étant pas compatibles GPL, Unifont a donc créé directement de nouveaux glyphes syllabiques hangul
    • Processus de conversion : script Perl johab2ucs2.pl → conversion .hex.bdf
    • Les polices existantes (iyagi16, johabg16, etc.) étaient limitées par des licences réservées à Hanterm
  • Un nouveau jeu de Hangul Syllables a ensuite été créé au fil des années puis intégré à Unifont

Contributions récentes et amélioration de l’encodage

  • Minseo Lee : en 2023, a fourni des glyphes modernes basés sur l’ordre Hanterm ainsi que des versions corrigées de glyphes anciens
    • Amélioration de scripts Perl et correction de la cohérence des jamo dans les plages Unicode
  • Ho-Seok Ee : a proposé l’encodage Johab 6/3/1
    • Avec une structure combinatoire de 6 initiales, 3 médianes et 1 finale, la génération des glyphes est simplifiée par rapport à l’ancien système
    • Proposition de déplacer les points de code vers la Private Use Area (U+E000–U+E8FF)
    • Cette méthode d’encodage a été adoptée à partir d’Unifont 15.1.01

Blocs syllabiques hangul Unicode (U+AC00–U+D7A3)

  • Ils se composent au total de 11 172 glyphes syllabiques
    • 19 consonnes initiales (ou 1 caractère de remplissage), 21 voyelles médianes, 27 consonnes finales (ou aucune)
    • Formule combinatoire : (19×21)×28 = 11 172
  • Les mots commençant par une voyelle utilisent la consonne initiale ‘ieung’ comme caractère de remplissage
  • À partir d’Unifont 5.1, le nouveau processus de génération des blocs syllabiques est décrit en détail dans le document distinct Generating Hangul Syllables

2 commentaires

 
joyfui 2025-12-14

C’est donc ça, l’identité de l’affreuse police coréenne de Minecraft...

 
GN⁺ 2025-12-14
Avis sur Hacker News
  • Nous utilisons GNU Unifont dans la fenêtre de texte et le navigateur de propriétés de Solvespace
    Le fait qu’il soit intégré directement dans l’exécutable a été très utile. Certains utilisateurs incluent des caractères CJK dans leurs conceptions, et cela fonctionne simplement sur toutes les plateformes
    En regardant les annotations de trous en CAO, j’ai été surpris de voir que les symboles de counter-bore et counter-sink étaient déjà inclus dans Unifont
    Une version web expérimentale est visible ici
    • La simplicité de la version web est vraiment chouette. Solvespace est mon programme de MCAD préféré, et c’est toujours le premier outil que j’ouvre pour fabriquer rapidement des gabarits de test pour PCB
      Quand la géométrie est simple, son utilisation est très agréable
    • C’est fascinant qu’un simple choix de police produise un effet aussi cool. Bien sûr, Unifont et l’ensemble d’Unicode représentent une énorme somme de temps humain, mais j’aime l’idée qu’un ingénieur CAO de l’âge du bronze puisse écrire son nom en linéaire A sans problème
    • La version web est vraiment propre. Solvespace est limité en fonctionnalités, mais sa souplesse et le plaisir qu’il procure pour exprimer des contraintes sont incomparables
      Un jour, j’aimerais me plonger dans le code pour remplacer cette boîte de dialogue modale « impossible de créer une contrainte »
  • Pour résumer pour les autres, GNU Unifont est une police bitmap
    Elle fournit un glyphe fixe pour tous les points de code du BMP, ainsi que pour certains points de code d’autres plans
    C’est utile pour un éditeur capable de modifier du texte Unicode sans connaissance du rendu propre à chaque langue
    En revanche, pour des écritures complexes comme le devanagari, l’absence de shaping fait que le rendu ne ressemble pas au texte réel
    • Ici, BMP ne signifie pas BitMap mais Unicode Basic Multilingual Plane. Autrement dit, la zone des 65 536 premiers points de code
    • Du coup, je me demande s’il existe un fichier distinct pour chaque taille en points. Ça me rappelle à quel point je connais peu le sujet des polices
  • La première phrase de ce site web devrait peut-être expliquer ce qu’est GNU Unifont. J’imagine qu’il s’agit d’une police copyleft unique contenant presque tous les points de code Unicode
    • En réalité, les deuxième et troisième phrases l’expliquent déjà correctement. Elle inclut des glyphes pour tous les points de code imprimables du BMP et convient bien comme police de dernier recours
      Elle sert à afficher un caractère quand aucune autre police ne contient le glyphe
    • « Presque tous » ne veut pas dire « tous ». J’ai un projet où je dois afficher des caractères CJK rares, et Unifont ne les rend pas correctement
      J’ai utilisé à la place la police Jigmo, qui était la plus complète pour les glyphes CJK
    • Moi aussi j’ai été confus au début, puis en cliquant sur « Home », j’ai compris que ce lien n’était pas la page d’accueil
    • Il y a vraiment beaucoup de projets open source qui manquent d’explication dès la première phrase
    • Je trouve que la phrase « GNU Unifont fait partie du projet GNU et contient des glyphes pour tous les points de code imprimables du BMP » est déjà assez claire
  • C’est vraiment magnifique une fois imprimé. Je l’ai transformé en poster en spirale et accroché au mur
    The Mostly Complete Unicode Spiral
    • Superbe ! Je me demande dans quel format il a été imprimé. Les sinogrammes épars autour de la spirale principale correspondent-ils à la disposition naturelle d’Unicode, ou est-ce une mise en scène ?
      L’ensemble faisait penser à une galaxie, et l’alignement des emoji sur le bord extérieur m’a marqué. C’était aussi amusant de chercher l’emoji de la Terre
  • Unifont ne stocke qu’un seul glyphe par point de code
    C’est pourquoi les écritures complexes (indic, arabe, etc.) ne sont pas rendues correctement
    Dans ce cas, il faut utiliser une police OpenType, et Unifont convient surtout comme police de fallback
  • Les sites de polices affichent souvent une image d’aperçu de type specimen, comme « Hello World ». Ce serait bien d’ajouter quelque chose du genre à la page d’Unifont
  • Quand je vois le nom GNU, j’ai l’impression que, même si ce n’est pas le meilleur en tout, c’est presque le meilleur en matière de respect de l’utilisateur
  • J’applique Unifont à tout le système et je force Firefox à l’utiliser comme police unique
    J’ai aussi désactivé le téléchargement des web fonts, et j’ai même des caractères que j’ai créés dans la CSUR (ConScript Unicode Registry)
    Sous Qt, le réglage du DPI est délicat, mais QT_FONT_DPI=128 règle le problème. J’aimerais aussi forcer des jeux comme RimWorld à n’utiliser qu’Unifont
    • Je suis curieux de savoir pourquoi tu l’utilises comme ça
    • Je l’ai installé moi aussi, mais j’ai dû zoomer HN à 200 % pour pouvoir lire. Sous XFCE, c’était à peu près correct
  • J’ai dû retirer Unifont pour utiliser de jolies polices CJK dans Firefox
    Le fallback des polices donnait bizarrement la priorité à Unifont
    • Pour corriger ça, il faut aller dans Langue et apparence → Polices → Avancé dans les réglages de Firefox et définir les polices pour chaque écriture
      Sinon, il est impossible de prévoir quelle police sera choisie
    • J’ai aussi eu un problème où les glyphes d’Unifont ne s’affichaient pas dans Firefox et Chrome. Il y a des signalements à ce sujet dans l’issue tracker de nixpkgs
      J’ai vu un phénomène similaire avec Noto Color Emoji. Le monde des polices est vraiment subtil
  • J’ai créé une police pour Playdate à partir d’Unifont
    https://github.com/remysucre/cuniform