À 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 |