About
Tom Chen’s FontPixel.com open-source pixel font museum gathers every freely licensed bitmap (pixel) font that can be found scattered across the web into a single museum: the fonts are taken apart and every glyph inspected, measured again and again against one ruler, with the coverage of each character set worked out in detail; then you get a preview you can type into, to see how a font's various scripts look inside an old arcade game or a syntax-highlighting editor; and finally there are downloads as BDF, PCF, bitmap TTF, and even vectorised TTF, in which every pixel becomes a square or a circle.
Inclusion criteria
Only freely licensed fonts make it in, and the bar is strict: the license must clearly allow anyone to use, copy, modify and redistribute the font, commercial use included, and it must verifiably cover the exact file catalogued here. “Free”, “free for commercial use”, “freeware”, copying-only terms, or a promise to “switch to an open-source license later” do not qualify. Everything on the site is therefore safe to use commercially.
Fonts under bespoke terms such as an “author’s statement” or a “personal use license” rarely make it in. What matters is not what the terms are called but whether they meet the accepted definitions of free software and libre fonts: anyone may use, study, modify and redistribute for any purpose; no restriction may turn on the use or the user; the grant cannot be revoked after the fact; and it must carry over to derivatives. Miss any one of those and the font goes into the import report, not the catalogue.
The collection is not limited to any one script; CJK and Latin faces are both welcome. Bitmap formats convert losslessly between one another - BDF, PCF, OTB, kbitx - so they are all treated alike. The line that matters is whether the font is a bitmap at all: where an author publishes only a vectorised pixel outline (TTF/OTF), it is rasterised back to a bitmap on its native grid and the page marks it as “converted”, with the derivation shown.
Each font's detail page records its provenance. If you spot something included in error, or you would like a font taken down, please open an issue in the repository.
Some fonts that are easily mistaken for open source but were excluded after review:
- HZK / mplus_hzk_12: No verifiable libre license was found for the HZK glyphs used. Age does not establish public-domain status, and a derivative repository’s Unlicense does not resolve the original glyphs’ licensing.
- Zpix (最像素): Free for personal and educational projects, but commercial use requires a paid license, and modification and conversion are prohibited. These terms do not meet our libre-font criteria.
- Guanzhi 8px (FontChinese7x7): The Chinese glyph contributor is unknown. Issue #6 reports that Xiaxia (lietxia) said they had not added those glyphs. The repository’s MIT license covers the tool code only, not the font. Discussion #6
- tewi: The author removed the font over unclear licensing of glyphs heavily derived from Monaco and asked distributors to consider removing it. GPL labels on older copies do not resolve that provenance issue.
- Vonwaon Bitmap (凤凰点阵体): Released under CC0 1.0, but it uses HZK fonts of unknown copyright collected in https://github.com/aguegu/BitmapFont and is highly similar to the Windows 3.2 fonts, so the glyphs’ copyright provenance cannot be verified. BitmapFont
How metrics are measured
Nominal size comes from the font's own declaration (PIXEL_SIZE, SIZE, or FONTBOUNDINGBOX), which is the height of the design pixel grid.
The Han ink box is measured from the pixels that are actually lit. The build takes the Level 1 characters of the Table of General Standard Chinese Characters that the font covers (falling back to all unified ideographs when fewer than 100 are present), computes the bounding box of the lit pixels for each glyph, and reports the median width and the median height. A “16px” font usually draws its Han characters at 15×15 or 14×15, which tells you more about the visual size of the face than the nominal figure does. Fonts without Han glyphs report cap height and x-height instead.
Max ink extents is the largest lit area found across all glyphs. Combining marks and extra-wide Private Use Area glyphs may extend beyond the nominal box; that is normal.
How coverage is counted
Coverage is counted by code point: every code point in the font's encoding table counts once. Denominators come from versioned character set data files kept in the repository; each file carries its source and version in its header, which you can see by hovering over the set name.
Denominators for Unicode blocks use the code points assigned in Unicode 17.0, excluding surrogates and including the Private Use Areas. Figures may therefore differ slightly from tools that count against an older version of Unicode.
Compatibility ideographs are counted separately; twelve of those code points are, per Unicode’s own annotations, actually unified ideographs, and the overview footnotes them.
The three implementation levels of GB 18030-2022 are constructed from the Han character and radical definitions in Clause 9 of the standard, giving 27,584 / 27,780 / 88,115 characters. The reasoning and the quoted passages are in docs/research/ in the repository.
How the previews are rendered
Every preview is drawn pixel by pixel on a browser canvas. Each dot is always a crisp square, and nothing goes through the operating system's font rasterizer, so what you see is the same on every platform: the font as it truly is.
Layout is a plain left-to-right run of glyphs, with no shaping, no kerning, and no vertical writing. Missing characters are marked with red-tinted dotted placeholder boxes.
Adding a font
Put the BDF or PCF files (.gz-compressed is fine) into a new directory under fonts/ and run the build. A family.toml in that directory adds the hand-entered details; it is optional, and a family without one still builds, marked “Uncurated” on the site:
fonts/my-font/ my-font-16.bdf OFL.txt family.toml # optional, for example: name = "My Font" name_zh = "我的字体" authors = ["Author name"] homepage = "https://example.com" description = "One-line description" forms = ["gothic", "sans"] # category: gothic|song|rounded|kai|fangsong|… vibes = ["retro-game"] # vibe tags, free-form aliases = ["Former Name"] # optional former names / aliases, used for search only
Disclaimer
License information is either detected automatically by the builder or entered by hand, and is offered for reference only. What actually governs a font is the license text its author publishes upstream. Check it yourself before any commercial use.
Inclusion here is judged on copyright licensing alone. Some font names contain third-party registered trademarks (IBM VGA or Adobe Helvetica, say) — nominative use that identifies where the glyphs come from. They are catalogued under their real names, implying no endorsement by or affiliation with any trademark owner.
Third-party sources and licensing for the character set data are listed in THIRD_PARTY_NOTICES.md in the repository.
Character set data sources
The character sets below drive the coverage figures, each with its data source noted. Full citations and licensing are in the repository.
| 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 |