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 и электронных чернил (e-paper).
Это библиотека шрифтов или просто набор дизайн-ассетов?Это библиотека шрифтов на основе заголовочных файлов C: каждый шрифт поставляется как файлы .h для AdafruitGFX, данные шрифтов u8g2 и исходные BDF-файлы для других инструментов.
Как добавить шрифт в свой проект Arduino?Подключите заголовочный файл шрифта для AdafruitGFX либо укажите соответствующее имя шрифта с суффиксом «u8g2», если пользуетесь библиотекой u8g2; BDF-файлы доступны для других конвертеров вроде FontForge или LVGL.
Нужен ли специальный форк AdafruitGFX для этих шрифтов?Только если вам нужны расширенные латинские (с диакритикой) символы: для этого требуется форк AdafruitGFX с поддержкой UTF-8. Обычные английские шрифты работают со стандартной библиотекой AdafruitGFX.
Поддерживаются ли заглавные буквы с диакритикой?Нет, символы с диакритикой есть только у строчных букв; заглавных букв с диакритикой нет, потому что для них пришлось бы менять начертания букв.
С какими дисплеями это работает?С OLED-дисплеями вроде SSD1306 и экранами на электронных чернилах (e-paper/e-ink) — в общем, с любым дисплеем, который управляется через AdafruitGFX или u8g2.
Как называются файлы шрифтов?Имена следуют шаблону pixelfont[3d][extendedlatin]ROWSxCOLSWEIGHT, где ROWSxCOLS — размер сетки заглавных букв, а WEIGHT — толщина штриха (thin, semibold, bold).
Что такое вариант шрифта «3D»?Это версия каждого шрифта с контуром и тенью, на 3px выше базовой, плюс вариант «condensed», который убирает зазор между символами и строками.
Какие языки поддерживаются?Английский, испанский, французский, итальянский, чешский и другие, но специальные чешские символы автор делал вручную; остальные расширенные латинские глифы сгенерированы ИИ и могут нуждаться в правках от носителей языка.
Можно ли сделать шрифт похожим на более крупный ретро-дисплей?Да, setTextSize(x, y) в AdafruitGFX масштабирует каждый пиксель шрифта в крупный квадратный блок, создавая псевдонизкое разрешение в аркадном стиле, и без расхода дополнительной flash-памяти.
Creator
mcer12
Size
1.5 MB
Stars
252
Updated
CommitOct 04
Age
15d
Commits · 90 Days