Skip to content

Text and Fonts

piggei edited this page Oct 3, 2026 · 4 revisions

The official application sends glyph bitmaps; the Usermod does not substitute a local system font.

Supported logical font sizes

The 0.9.x renderer supports the captured 16, 32 and 64-pixel font families appropriate to the selected logical matrix profile.

Availability by logical profile

Logical profile Available font heights
16x16 16 px
32x32 16 px, 32 px
64x64 16 px, 32 px, 64 px

The 64-pixel path uses a 32x64 glyph bitmap, 256 bitmap bytes per glyph plus 4 bytes of record metadata.

Maximum 64-pixel TEXT object

The original 64x64 path can carry up to 64 glyph records:

14-byte global header
+ 64 × (4-byte metadata + 256-byte bitmap)
= 16654 bytes

0.9.2 accepts this complete size end-to-end for:

  • live Bulk TEXT;
  • Carousel TEXT;
  • Preset TEXT.

Large buffers are temporary. On ESP32-S3, allocation prefers PSRAM when available rather than reserving permanent 16 KiB arrays.

Static/non-scrolling layout

Non-scrolling TEXT effects can use multiple rows.

Logical 64x64

Font height Visible rows
64 1
32 2
16 4

Logical 32x32

Font height Visible rows
32 1
16 2

Logical 16x16

Only one 16-pixel row is shown.

The renderer centers the used block of rows vertically. A partial final page is therefore centered rather than forced to the top of the matrix.

Scrolling effects

The multi-row rule applies only to effects that do not scroll.

Scrolling effects preserve their single-stream/single-row behavior so that horizontal and vertical animation semantics remain compatible with the original device behavior.

Paging and duration

For static/page-like presentation, page capacity accounts for both horizontal glyph capacity and visible row count. The final static portion retains its normal hold before a playlist advances.

Horizontal-scrolling TEXT duration is derived from the full scroll path; no artificial extra static page is inserted.

Ownership

A live TEXT command from the app takes display ownership and suspends an active Preset or Carousel. TEXT rendered internally as part of a Preset/Carousel uses the same parser but does not suspend its own player.

Clone this wiki locally