PixelFonts README

The project's README from github.com/mcer12/PixelFonts. As one markdown file: README.md.

PixelFonts - Pixel fonts for tiny displays

PixelFont is a family of AdafruitGFX & u8g2 compatible fonts, hand crafted for tiny low-res displays. The fonts are designed to be slender and condensed to fit as much text on a line as possible. And to also look awesome.

You can also use AI to scale the fonts up, add spacing between pixels, makes pixels larger, rounded etc. So it’s a great way to make a faux-low-res display or a retro arcade kind of look.

Language support

Supported languages are: English, Spanish, French, Italian, Czech and more.

NOTE 1: Accented characters are available for lowercase letters only - capital letters with accents are not included as this requires modification of the letters.

NOTE 2: I have personally hand-crafted only the Czech special characters. Other extended Latin glyphs are AI generated, so PRs with corrections from native speakers are welcome!

Usage

AdafruitGFX

There are two options for each font - english version, which works with basic AdafruitGFX library and extended latin version which requires UTF-8 fork of AdafruitGFX.

Using extended latin version with standard library still works for english glyphs but because of extra data, it's taking more memory space, so it's recommended to use english version with it.

#include <Adafruit_GFX.h>
#include <PixelFonts.h>   // every font; the ones you do not use take no flash

// This is required to make extended latin work, using forked Adafruit-GFX is required:
// https://github.com/DoomHammer/Adafruit-GFX-Library/tree/enable-utf-8
// Remove this line with stock AdafruitGFX and english font variants
display.utf8(true);

display.setFont(&pixelfont_extended_latin_13x7_semibold);
display.setTextColor(BLACK);
display.setCursor(10, 30);
display.print("Temperature 23.5");

Scaling up for a low-res look: setTextSize() draws every font pixel as a square block, so a small font turns into big, chunky pixel text with no extra flash:

display.setFont(&pixelfont_9x5_thin);
display.setTextSize(3);   // each font pixel becomes a 3x3 block: 27 px tall capitals
display.setCursor(0, 40);
display.print("23.5");

setTextSize(x, y) scales width and height separately; the line height scales with it.

u8g2

The same fonts in u8g2 format: the font name + _u8g2. You can use english fonts or extended latin fonts with no limitations.

#include <U8g2lib.h>
#include <PixelFontsU8g2.h>   // every u8g2 font; the ones you do not use take no flash

U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);

u8g2.begin();
u8g2.setFontMode(1);
u8g2.setFont(pixelfont_13x7_semibold_u8g2);
u8g2.drawStr(0, 20, "Temperature 23.5");
u8g2.setFont(pixelfont_extended_latin_13x7_semibold_u8g2);
u8g2.drawUTF8(0, 20 + PIXELFONT_EXTENDED_LATIN_13X7_SEMIBOLD_U8G2_LINE_HEIGHT, "Příliš žluťoučký kůň");
u8g2.sendBuffer();

Each u8g2 font comes with its line height, e.g. PIXELFONT_13X7_SEMIBOLD_U8G2_LINE_HEIGHT.

BDF

The bdf/ folder has every font as a BDF file (Unicode encoded), for u8g2's bdfconv, FontForge, the LVGL font converter and other tools. FONT_ASCENT + FONT_DESCENT is the line height.

Fonts

Names follow pixelfont[_3d | _3d_condensed][_extended_latin]_ROWSxCOLS_WEIGHT:

In the table: Height = pixel height of the capitals (3D versions include the outline and shadow), Weight = stroke width, English = ASCII only, Extended Latin = ASCII + accented letters.

Basic fonts

Height Weight English Extended Latin
5 px 1px pixelfont_5x5_thin -
7 px 1px pixelfont_7x5_thin pixelfont_extended_latin_7x5_thin
9 px 1px pixelfont_9x5_thin pixelfont_extended_latin_9x5_thin
11 px 1px pixelfont_11x5_thin pixelfont_extended_latin_11x5_thin
13 px 1px pixelfont_13x5_thin pixelfont_extended_latin_13x5_thin
13 px 1px pixelfont_13x7_thin pixelfont_extended_latin_13x7_thin
13 px 2px pixelfont_13x7_semibold pixelfont_extended_latin_13x7_semibold
15 px 1px pixelfont_15x5_thin pixelfont_extended_latin_15x5_thin
15 px 2px pixelfont_15x5_semibold pixelfont_extended_latin_15x5_semibold
15 px 1px pixelfont_15x7_thin pixelfont_extended_latin_15x7_thin
15 px 2px pixelfont_15x7_semibold pixelfont_extended_latin_15x7_semibold
17 px 1px pixelfont_17x5_thin pixelfont_extended_latin_17x5_thin
17 px 2px pixelfont_17x5_semibold pixelfont_extended_latin_17x5_semibold
17 px 1px pixelfont_17x7_thin pixelfont_extended_latin_17x7_thin
17 px 2px pixelfont_17x7_semibold pixelfont_extended_latin_17x7_semibold
17 px 3px pixelfont_17x7_bold pixelfont_extended_latin_17x7_bold
21 px 1px pixelfont_21x11_thin pixelfont_extended_latin_21x11_thin
21 px 3px pixelfont_21x11_bold pixelfont_extended_latin_21x11_bold

3D fonts

Height Weight English Extended Latin
8 px 1px pixelfont_3d_5x5_thin -
8 px 1px pixelfont_3d_condensed_5x5_thin -
10 px 1px pixelfont_3d_7x5_thin pixelfont_3d_extended_latin_7x5_thin
10 px 1px pixelfont_3d_condensed_7x5_thin pixelfont_3d_condensed_extended_latin_7x5_thin
12 px 1px pixelfont_3d_9x5_thin pixelfont_3d_extended_latin_9x5_thin
12 px 1px pixelfont_3d_condensed_9x5_thin pixelfont_3d_condensed_extended_latin_9x5_thin
14 px 1px pixelfont_3d_11x5_thin pixelfont_3d_extended_latin_11x5_thin
14 px 1px pixelfont_3d_condensed_11x5_thin pixelfont_3d_condensed_extended_latin_11x5_thin
16 px 1px pixelfont_3d_13x5_thin pixelfont_3d_extended_latin_13x5_thin
16 px 1px pixelfont_3d_condensed_13x5_thin pixelfont_3d_condensed_extended_latin_13x5_thin
16 px 1px pixelfont_3d_13x7_thin pixelfont_3d_extended_latin_13x7_thin
16 px 1px pixelfont_3d_condensed_13x7_thin pixelfont_3d_condensed_extended_latin_13x7_thin
16 px 2px pixelfont_3d_13x7_semibold pixelfont_3d_extended_latin_13x7_semibold
16 px 2px pixelfont_3d_condensed_13x7_semibold pixelfont_3d_condensed_extended_latin_13x7_semibold
18 px 1px pixelfont_3d_15x5_thin pixelfont_3d_extended_latin_15x5_thin
18 px 1px pixelfont_3d_condensed_15x5_thin pixelfont_3d_condensed_extended_latin_15x5_thin
18 px 2px pixelfont_3d_15x5_semibold pixelfont_3d_extended_latin_15x5_semibold
18 px 2px pixelfont_3d_condensed_15x5_semibold pixelfont_3d_condensed_extended_latin_15x5_semibold
18 px 1px pixelfont_3d_15x7_thin pixelfont_3d_extended_latin_15x7_thin
18 px 1px pixelfont_3d_condensed_15x7_thin pixelfont_3d_condensed_extended_latin_15x7_thin
18 px 2px pixelfont_3d_15x7_semibold pixelfont_3d_extended_latin_15x7_semibold
18 px 2px pixelfont_3d_condensed_15x7_semibold pixelfont_3d_condensed_extended_latin_15x7_semibold
20 px 1px pixelfont_3d_17x5_thin pixelfont_3d_extended_latin_17x5_thin
20 px 1px pixelfont_3d_condensed_17x5_thin pixelfont_3d_condensed_extended_latin_17x5_thin
20 px 2px pixelfont_3d_17x5_semibold pixelfont_3d_extended_latin_17x5_semibold
20 px 2px pixelfont_3d_condensed_17x5_semibold pixelfont_3d_condensed_extended_latin_17x5_semibold
20 px 1px pixelfont_3d_17x7_thin pixelfont_3d_extended_latin_17x7_thin
20 px 1px pixelfont_3d_condensed_17x7_thin pixelfont_3d_condensed_extended_latin_17x7_thin
20 px 2px pixelfont_3d_17x7_semibold pixelfont_3d_extended_latin_17x7_semibold
20 px 2px pixelfont_3d_condensed_17x7_semibold pixelfont_3d_condensed_extended_latin_17x7_semibold
20 px 3px pixelfont_3d_17x7_bold pixelfont_3d_extended_latin_17x7_bold
20 px 3px pixelfont_3d_condensed_17x7_bold pixelfont_3d_condensed_extended_latin_17x7_bold
24 px 1px pixelfont_3d_21x11_thin pixelfont_3d_extended_latin_21x11_thin
24 px 1px pixelfont_3d_condensed_21x11_thin pixelfont_3d_condensed_extended_latin_21x11_thin
24 px 3px pixelfont_3d_21x11_bold pixelfont_3d_extended_latin_21x11_bold
24 px 3px pixelfont_3d_condensed_21x11_bold pixelfont_3d_condensed_extended_latin_21x11_bold

Notes

Glyph data in a simple txt form is included, so you can use AI to generate any bitmap / font format.

PixelFonts (mcer12/PixelFonts)

Searching Database…

这是什么?PixelFonts 是一套面向 AdafruitGFX 和 u8g2 的像素级精确位图字体合集,专为 OLED 和电子纸屏幕等小型低分辨率显示器手工打造。
这是字体库,还是单纯的设计素材集合?它是一个基于 C 头文件的字体库:每种字体都以 AdafruitGFX .h 文件、u8g2 字体数据和原始 BDF 文件的形式提供,供其他工具使用。
怎么把字体添加到我的 Arduino 项目?使用 AdafruitGFX 时,包含相应的字体头文件;使用 u8g2 库时,引用带“u8g2”后缀的对应字体名;BDF 文件可供 FontForge 或 LVGL 等其他转换器使用。
使用这些字体需要 AdafruitGFX 的特殊分支吗?只有当你想要扩展拉丁(带重音)字符时才需要:那要求使用 AdafruitGFX 的 UTF-8 分支。纯英文字体在标准 AdafruitGFX 库上即可使用。
支持带重音的大写字母吗?不支持,带重音的字符只有小写字母;不包含带重音的大写字母,因为那需要修改字母形状。
它适用于哪些类型的显示器?SSD1306 等 OLED 显示屏和电子纸/电子墨水屏,基本上任何通过 AdafruitGFX 或 u8g2 驱动的显示器都可以。
字体文件是怎么命名的?命名遵循 pixelfont[3d][extendedlatin]ROWSxCOLSWEIGHT 模式,其中 ROWSxCOLS 是大写字母的网格尺寸,WEIGHT 是笔画粗细(thin、semibold、bold)。
“3D”字体变体是什么?它是每种字体的轮廓加阴影版本,比基础版本高 3 像素,还有一个“condensed”变体,去除了字符与行之间的间隙。
支持哪些语言?英语、西班牙语、法语、意大利语、捷克语等,不过只有捷克语特殊字符是作者手工打造的;其他扩展拉丁字形由 AI 生成,可能需要母语者修正。
能让字体看起来像更大的复古显示器吗?可以,AdafruitGFX 的 setTextSize(x, y) 会把每个字体像素放大成粗大的方块,营造出低分辨率的复古街机效果,而且不占用额外的闪存。
Creator
mcer12
Size
1.5 MB
Stars
257
Updated
CommitOct 04
Age
17d
Commits · 90 Days