À propos

Tom Chen a créé « FontPixel.com : Polices pixel open source », un musée qui réunit dans un même musée toutes les polices bitmap (pixel) sous licence libre que l'on peut trouver dispersées sur le web : les polices sont démontées et chaque glyphe examiné, mesuré encore et encore selon une seule et même règle, la couverture de chaque jeu de caractères étant établie en détail ; vient ensuite un aperçu où vous pouvez saisir votre propre texte, pour voir ce que donnent les différentes écritures d'une police dans un vieux jeu d'arcade ou dans un éditeur à coloration syntaxique ; enfin, le téléchargement est proposé aux formats BDF, PCF, TTF bitmap et même TTF vectorisé, où chaque pixel devient un carré ou un cercle.

Critères d’inclusion

Seules les polices sous licence libre sont retenues, selon des critères stricts : la licence doit autoriser explicitement chacun à utiliser, copier, modifier et redistribuer la police, usage commercial compris, et couvrir de façon vérifiable le fichier précis catalogué ici. « Gratuit », « gratuit pour usage commercial », « freeware », la seule copie autorisée ou la promesse de « passer plus tard en open source » ne suffisent pas. Toutes les polices du site peuvent donc être utilisées commercialement en toute confiance.

Les polices assorties de conditions rédigées sur mesure (« déclaration de l’auteur », « conditions d’usage personnel ») sont rarement retenues. Ce qui compte n’est pas le nom de ces conditions mais leur conformité aux définitions admises du logiciel libre et des polices libres : chacun peut utiliser, étudier, modifier et redistribuer à toute fin ; aucune restriction ne tient à l’usage ni à l’utilisateur ; l’autorisation est irrévocable et se transmet aux dérivés. Qu’il en manque une seule et la police est consignée dans le rapport d’import, pas au catalogue.

La collection ne se limite à aucune écriture : fontes CJK et latines y ont toute leur place. Les formats bitmap se convertissent entre eux sans perte — BDF, PCF, OTB, kbitx — et sont donc traités sur un pied d’égalité. Ce qui compte, c’est de savoir si la fonte est bien un bitmap : lorsqu’un auteur ne publie qu’une police de contours pixelisés vectoriels (TTF/OTF), elle est rastérisée sur sa grille de pixels d’origine, signalée comme « Convertie » sur la page et accompagnée d’une explication de la conversion.

La page détaillée de chaque police indique sa provenance. Si vous repérez une inclusion erronée ou souhaitez faire retirer une police, ouvrez une issue dans le dépôt.

Quelques polices souvent prises pour des polices libres, mais écartées après vérification :

  • HZK / mplus_hzk_12: Aucune licence libre vérifiable n’a été trouvée pour les glyphes HZK utilisés. Leur ancienneté ne prouve pas leur appartenance au domaine public, et l’Unlicense du dépôt dérivé ne règle pas la question des droits sur les glyphes d’origine.
  • Zpix (最像素): Gratuite pour les projets personnels et éducatifs, mais l’usage commercial nécessite une licence payante. La modification et la conversion sont interdites, ce qui ne répond pas à nos critères de licence libre.
  • Guanzhi 8px (观致, FontChinese7x7): La personne ayant ajouté les glyphes chinois est inconnue. Le ticket nº 6 rapporte que Xiaxia (lietxia) a déclaré ne pas les avoir ajoutés. La licence MIT du dépôt couvre uniquement le code des outils, pas la police. Discussion nº 6
  • tewi: L’auteur a retiré la police en raison des droits incertains sur de nombreux glyphes dérivés de Monaco et invite les distributeurs à envisager son retrait. Les mentions GPL des anciennes copies ne clarifient pas les droits sur ces glyphes.
  • Vonwaon Bitmap (凤凰点阵体): Publiée sous CC0 1.0, elle utilise pourtant des polices HZK de droits inconnus rassemblées dans https://github.com/aguegu/BitmapFont et ressemble fortement aux polices de Windows 3.2 ; l’origine des droits sur les glyphes ne peut donc pas être vérifiée. BitmapFont

Méthode de mesure

La taille nominale vient de la déclaration de la police (PIXEL_SIZE, SIZE ou FONTBOUNDINGBOX) et correspond à la hauteur de sa grille de conception en pixels.

L’emprise des sinogrammes est mesurée à partir des pixels réellement allumés. La compilation prend les caractères de niveau 1 de la Table des caractères chinois d’usage général que la police couvre, ou tous les idéogrammes unifiés s’ils sont moins de 100. Elle calcule la boîte englobante des pixels allumés de chaque glyphe, puis indique la largeur et la hauteur médianes. Une police « 16px » dessine généralement ses sinogrammes sur 15×15 ou 14×15 ; cette mesure rend mieux compte de la taille visuelle de la fonte que sa taille nominale. Pour une police sans glyphe Han, la hauteur des capitales et la hauteur d’x sont indiquées à la place.

L’emprise maximale est la plus grande zone allumée relevée parmi tous les glyphes. Les signes combinatoires et les glyphes très larges des zones à usage privé peuvent dépasser le cadre nominal ; c’est normal.

Calcul de la couverture

La couverture est calculée par point de code : chaque point de code de la table d’encodage de la police compte une fois. Les dénominateurs proviennent de fichiers de jeux de caractères versionnés dans le dépôt. La source et la version figurent dans l’en-tête de chaque fichier et s’affichent au survol du nom du jeu.

Pour les blocs Unicode, les dénominateurs utilisent les points de code assignés dans Unicode 17.0, en excluant les substituts et en incluant les zones à usage privé. Les chiffres peuvent donc différer légèrement de ceux des outils fondés sur une ancienne version d’Unicode.

Les idéogrammes de compatibilité sont comptés à part ; douze de ces points de code sont en réalité, selon les annotations d’Unicode, des idéogrammes unifiés, ce que l’aperçu signale en note.

Les trois niveaux de mise en œuvre de GB 18030-2022 sont construits à partir des définitions des sinogrammes et des radicaux du chapitre 9 de la norme, soit 27,584 / 27,780 / 88,115 caractères. Le raisonnement et les extraits cités se trouvent dans docs/research/ dans le dépôt.

Rendu des aperçus

Chaque aperçu est dessiné pixel par pixel sur un canvas du navigateur. Chaque point reste un carré net et rien ne passe par le moteur de rastérisation des polices du système d’exploitation. Le résultat est donc identique sur toutes les plateformes et montre la police telle qu’elle est réellement.

La mise en page aligne simplement les glyphes de gauche à droite, sans façonnage, crénage ni écriture verticale. Les caractères absents sont signalés par des cadres pointillés sur fond rougeâtre.

Ajouter une police

Placez les fichiers BDF ou PCF (éventuellement compressés en .gz) dans un nouveau répertoire sous fonts/, puis lancez la compilation. Un fichier family.toml dans ce répertoire permet d’ajouter les informations saisies à la main. Il reste facultatif : sans lui, la famille est tout de même compilée et porte la mention « Non vérifiée » sur le site.

fonts/my-font/
  my-font-16.bdf
  OFL.txt
  family.toml    # facultatif, par exemple :

name = "My Font"
name_zh = "我的字体"
authors = ["Nom de l’auteur"]
homepage = "https://example.com"
description = "Description en une ligne"
forms = ["gothic", "sans"]          # catégorie : gothic|song|rounded|kai|fangsong|…
vibes = ["retro-game"]   # tags d’ambiance, saisie libre
aliases = ["Ancien nom"] # optionnel : anciens noms / alias, pour la recherche seule

Avertissement

Les informations de licence sont détectées automatiquement par l’outil de compilation ou saisies à la main et sont fournies à titre indicatif. Seul le texte de licence publié en amont par l’auteur régit réellement la police. Vérifiez-le vous-même avant tout usage commercial.

L’inclusion ne se juge ici qu’au regard de la licence de droit d’auteur. Certains noms de fontes contiennent des marques déposées de tiers (IBM VGA, Adobe Helvetica…) : c’est un emploi nominatif, qui indique d’où viennent les glyphes. Elles sont cataloguées sous leur vrai nom, sans approbation ni affiliation des titulaires de marques.

Les sources tierces et les licences des données de jeux de caractères figurent dans le fichier THIRD_PARTY_NOTICES.md du dépôt.

Sources des jeux de caractères

Les jeux de caractères ci-dessous servent au calcul de la couverture et leur source est indiquée. Les références complètes et les licences se trouvent dans le dépôt.

Character set Code points Source
International Ideographs Core (IICore) 9,810 CJK-character-count project data, migrated 2026-08-21
Unihan Core 2020 20,720 https://www.unicode.org/Public/17.0.0/ucd/Unihan.zip kUnihanCore2020; generated 2026-08-21
Windows Glyph List 4 650 Adobe WGL4 table; retrieved 2026-08-21
Basic Latin 95 Unicode block ranges; generated 2026-08-21
Latin-1 Supplement 96 Unicode block ranges; generated 2026-08-21
Latin Extended-A 128 Unicode block ranges; generated 2026-08-21
Latin Extended-B 208 Unicode block ranges; generated 2026-08-21
Cyrillic Everyday Characters 97 ISO/IEC 8859-5 Cyrillic repertoire minus U+2116, plus Ghe-with-upturn (U+0490/0491, restored in Ukrainian orthography in 1990); generated 2026-08-21
Greek Everyday Characters 72 Modern monotonic Greek orthography; matches the ISO/IEC 8859-7 repertoire minus generic punctuation and currency signs; generated 2026-08-21
Arabic Everyday Characters 92 Unicode 17.0 core Arabic/Persian/Urdu letters, marks, digits and punctuation (deliberately not Windows-1256, which omits both digit sets); selection generated 2026-08-31
Thai Everyday Characters 87 TIS-620 (Thai national standard; ISO/IEC 8859-11 is the same table plus NBSP at 0xA0). Derived from Python's tis_620 codec over 0xA1-0xFB and cross-checked against the Unicode 17.0 Thai block's assigned characters; generated 2026-09-03
Vietnamese Latin 186 按 Unicode 越南语用字构成定义;generated 2026-08-21
IBM Code Page 437 255 Python cp437 codec + IBM graphic set; generated 2026-08-21
Box Drawing 128 Unicode block ranges; generated 2026-08-21
Block Elements 32 Unicode block ranges; generated 2026-08-21
Powerline Symbols 41 powerline/fontpatcher 约定;generated 2026-08-21
Braille Patterns 256 Unicode block ranges; generated 2026-08-21
GB/T 2312 Hanzi 6,763 Python codecs; generated 2026-08-21
GB/T 2312 Level 1 Hanzi 3,755 Python codecs; generated 2026-08-21
GB/T 2312 Level 2 Hanzi 3,008 Python codecs; generated 2026-08-21
GBK Hanzi 20,923 Python codecs; generated 2026-08-21
GB/T 12345 Traditional Hanzi 6,866 CJK-character-count project data, migrated 2026-08-21
GB 18030-2022 Implementation Level 1 27,584 GB 18030-2022 第9章实现级别;构造依据 docs/research/gb18030-2022-levels.md; generated 2026-08-21
GB 18030-2022 Implementation Level 2 27,780 GB 18030-2022 第9章实现级别;构造依据 docs/research/gb18030-2022-levels.md; generated 2026-08-21
GB 18030-2022 Implementation Level 3 88,115 GB 18030-2022 第9章实现级别;构造依据 docs/research/gb18030-2022-levels.md; generated 2026-08-21
Table of General Standard Chinese Characters 8,105 CJK-character-count project data, migrated 2026-08-21
General Standard Chinese Characters Level 1 3,500 公开数据集快照(两独立来源交叉核对,并集与 CJK-character-count 8105 整表完全一致); generated 2026-08-21
General Standard Chinese Characters Level 2 3,000 公开数据集快照(两独立来源交叉核对,并集与 CJK-character-count 8105 整表完全一致); generated 2026-08-21
General Standard Chinese Characters Level 3 1,605 公开数据集快照(两独立来源交叉核对,并集与 CJK-character-count 8105 整表完全一致); generated 2026-08-21
List of Frequently Used Characters in Modern Chinese 3,500 CJK-character-count project data, migrated 2026-08-21
Frequently Used Characters in Modern Chinese (2500) 2,500 公开数据集快照(计数与官方口径一致); generated 2026-08-21
Less Frequently Used Characters in Modern Chinese (1000) 1,000 公开数据集快照(计数与官方口径一致); generated 2026-08-21
List of Commonly Used Characters in Modern Chinese 7,000 CJK-character-count project data, migrated 2026-08-21
Compulsory Education Chinese Character List 3,500 CJK-character-count project data, migrated 2026-08-21
Standard Glyph Forms for Ancient Book Printing 14,250 CJK-character-count project data, migrated 2026-08-21
Kangxi Radicals 214 Unicode block ranges; generated 2026-08-21
CJK Radicals Supplement 115 Unicode block ranges; generated 2026-08-21
Hanyi Simplified & Traditional Set 9,169 CJK-character-count project data, migrated 2026-08-21
FounderType Simplified & Traditional Set 9,664 CJK-character-count project data, migrated 2026-08-21
Standard Forms of Common National Characters 4,808 CJK-character-count project data, migrated 2026-08-21
Standard Forms of Less-Common National Characters 6,343 CJK-character-count project data, migrated 2026-08-21
Big5 Frequently Used Hanzi 5,401 Python codecs; generated 2026-08-21
Big5 Less Frequently Used Hanzi 7,652 Python codecs; generated 2026-08-21
Big5 All Hanzi 13,053 Python codecs; generated 2026-08-21
Bopomofo 75 Unicode block ranges; generated 2026-08-21
List of Graphemes of Commonly-Used Chinese Characters 4,762 CJK-character-count project data, migrated 2026-08-21
Hong Kong Supplementary Character Set Hanzi 4,603 CJK-character-count project data, migrated 2026-08-21
Hong Kong Supplementary Characters in Common Use 1,102 CJK-character-count project data, migrated 2026-08-21
JIS X 0208 Non-Kanji 524 Python codecs; generated 2026-08-21
JIS X 0208 Level 1 Kanji 2,965 Python codecs; generated 2026-08-21
JIS X 0208 Level 2 Kanji 3,390 Python codecs; generated 2026-08-21
JIS X 0213 Level 3 Kanji 1,260 Python codecs; generated 2026-08-21
JIS X 0213 Level 4 Kanji 2,397 Python codecs; generated 2026-08-21
Joyo Kanji 2,136 https://raw.githubusercontent.com/vaiorabbit/everyday_use_kanji/master/regular_use_utf8.csv; retrieved 2026-08-21
Kyoiku Kanji 1,026 https://raw.githubusercontent.com/fnshr/kyo-kan/master/kyoiku-kanji-2017.csv; retrieved 2026-08-21
Jinmeiyo Kanji 864 https://ja.wikipedia.org/wiki/人名用漢字一覧;retrieved 2026-08-21
Hiragana 86 Unicode block ranges; generated 2026-08-21
Katakana 90 Unicode block ranges; generated 2026-08-21
Halfwidth Katakana 63 Unicode block ranges; generated 2026-08-21
JIS X 0201 158 Unicode block ranges; generated 2026-08-21
KS X 1001 Hangul Syllables 2,350 Python codecs; generated 2026-08-21
KS X 1001 Hanja 4,888 Python codecs; generated 2026-08-21
KS X 1001 Symbols 987 Python codecs; generated 2026-08-21
Hangul Syllables (All Modern) 11,172 Unicode block ranges; generated 2026-08-21
Hangul Compatibility Jamo 94 Unicode block ranges; generated 2026-08-21
Hangul Jamo 256 Unicode block ranges; generated 2026-08-21