Skip to content

Feature Request: Latin-1 (ISO 8859-1) support in default font and Free* fonts #504

@febles

Description

@febles

Hey there

I ran into an issue when trying to display non-ASCII Latin characters on an SSD1306 OLED using Adafruit_GFX + Adafruit_SSD1306.

What I tried:

  1. Default font with \xA1 (inverted exclamation mark ¡):
   display.print("\xA1Hola fab academy world!");

→ Displays garbage/wrong glyph (|iHola instead of ¡Hola).

  1. Switched to an extended font (FreeSerif9pt7b):
   #include <Fonts/FreeSerif9pt7b.h>
   display.setFont(&FreeSerif9pt7b);
   display.print("\xA1Hola fab academy world!");

→ The ¡ character is silently dropped/not rendered at all.

Expected behavior:

The Free* fonts (FreeSans, FreeSerif, FreeMono) should render the full Latin-1 Supplement range (U+00A0–U+00FF), which includes characters essential for major world languages: ¡, ¿, ñ, á, é, ü, ß, ø, ç, etc.

Hardware & software:

  • Board: Seeed Studio XIAO RP2040
  • Display: SSD1306 128x64 OLED (I2C)
  • Library versions: Adafruit_GFX 1.12.x, Adafruit_SSD1306 latest
  • Arduino IDE 2.3.x on Windows 10

Why this matters:

Spanish, French, German, Portuguese, and many other languages depend on characters in the Latin-1 range. Right now, the only viable option for non-English speakers is to switch to a completely different library (U8g2), which feels like overkill just to display an ¡ or an ñ.

I understand the Prime Directive about backward compatibility, so I'm not asking to change the default font behavior. But it would be great if:

  • The Free* fonts included the full Latin-1 range (they seem to already have the glyphs in the source TTFs, but the conversion may be truncating them).
  • Or alternatively, there was a documented, officially-supported way to display Latin-1 characters without switching libraries entirely.

Workaround I'm using:

For now, I'm just avoiding non-ASCII characters entirely, which works but isn't ideal for documenting projects in languages other than English.

Would love to hear if there's a better approach I'm missing, or if expanding the glyph range in the Free* fonts is feasible. Happy to help test if needed!

Thanks for maintaining this library — it's a staple in the community.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions