Fuentes BDF para pantallas OLED, e-paper y LCD
Si alguna vez quisiste mostrar texto en una pantallita OLED de 128 × 64, en una de tinta electrónica o en un LCD monocromo, seguro te topaste con el mismo problema. A resoluciones tan bajas, las fuentes vectoriales se ven borrosas o de plano ilegibles. La solución de toda la vida son las fuentes de mapa de bits, y el formato clásico para distribuirlas es el BDF.
En este artículo te presento las fuentes BDF de una colección que mantengo en mi fork del repositorio bdf-fonts. El original es de IT-Studio-Rech, que lo publicó en 2022. Mi fork no tiene cambios respecto a él, pero me sirve para tener las fuentes a la mano en mis proyectos. Así que te cuento qué trae, de quién es cada fuente y cómo convertirlas para usarlas en tu firmware.

| Lo básico | |
|---|---|
| Qué es | Una colección de 45 fuentes BDF distintas |
| Para qué | Pantallas OLED, e-paper, LCD monocromos y matrices LED |
| Tamaños | De 4 × 6 píxeles hasta dígitos de 66 píxeles de alto |
| Licencias | Varían según la fuente (ve la tabla más abajo) |
| Repositorio | xe1e/bdf-fonts, fork de IT-Studio-Rech/bdf-fonts |
Qué son las fuentes BDF
BDF quiere decir Glyph Bitmap Distribution Format. Es un formato de texto plano creado por Adobe y usado por años en el sistema X Window (X11). En lugar de describir las letras con curvas, un archivo BDF define cada carácter como una rejilla de píxeles encendidos y apagados.
En electrónica eso es una ventaja enorme. Lo que ves en el archivo es exactamente lo que se dibuja en la pantalla, píxel por píxel. Además, no hay suavizado ni grises, que en una pantalla de un solo color solo se ven como manchas.
Al ser texto plano, las fuentes BDF se pueden leer y editar con cualquier editor. También existen herramientas para convertirlas a los arreglos de C que usan las bibliotecas de pantallas.
Qué trae la colección
El repositorio tiene 46 archivos .bdf. Sin embargo, helvR12 copy.bdf es una copia idéntica de helvR12.bdf, así que son 45 fuentes distintas:
- Las clásicas misc-fixed de X11 en 13 tamaños: 4×6, 5×7, 5×8, 6×9, 6×10, 6×12, 6×13, 7×13, 7×14, 8×13, 9×15, 9×18 y 10×20. Son las fuentes de terminal de xterm y Emacs. Además, tienen cobertura Unicode extendida (latín, griego, cirílico y muchos símbolos) gracias al trabajo de Markus Kuhn. Solo algunos tamaños tienen variantes: negrita (B) en 6×13, 7×13, 7×14, 8×13, 9×15 y 9×18, e itálica (O) en 6×13, 7×13 y 8×13.
- La familia spleen en cinco tamaños: 5×8, 8×16, 12×24, 16×32 y 32×64. Este último es ideal para números grandes.
- Fuentes de estilo terminal: Haxor (Medium en cuatro tamaños y Narrow en tres), scientifica (normal, negrita e itálica), creep, knxt y peep-10×20.
- tom-thumb, una fuente diminuta. Sus letras miden 3 × 5 píxeles dentro de una celda de 4 × 6, para exprimir hasta el último píxel.
- Otras: logisoso46 (dígitos grandes, de 66 píxeles de alto) y PsevdoAzbuka, con codificación ISO 8859-2, es decir, latín de Europa central y no cirílico. Por último, clR6x12 y helvR12 (una Helvetica de 12 píxeles).
De quién es cada una de las fuentes BDF
Aquí hay que tener cuidado: no todas las fuentes son de dominio público. El README del repositorio dice que sí, salvo tom-thumb, pero eso solo aplica a las misc-fixed. Además, el repositorio no tiene archivo LICENSE. Por eso revisé las cabeceras COPYRIGHT y los comentarios de cada archivo:
| Fuente | Tamaños | Licencia o aviso en el archivo |
|---|---|---|
| misc-fixed (4×6 a 10×20, B y O) | 13 tamaños y 9 variantes | Dominio público |
| tom-thumb | 3 × 5 en celda de 4 × 6 | MIT (creada por Robey Pointer) |
| spleen | 5×8 a 32×64 | © Frederic Cambus, licencia BSD de 2 cláusulas |
| scientifica (3 estilos) | 11 px | © romeovs |
| creep | 16 px | © romeovs |
| knxt | 20 px | © Konstantin Bytensky |
| peep-10×20 | 10 × 20 | © Zevv |
| logisoso46 | 66 px | Creada por Mathieu Gabiot (convertida de TrueType) |
| helvR12 | 12 px | © Adobe y Digital Equipment Corporation, uso permitido conservando el aviso |
| clR6x12 | 6 × 12 | © Dale Schumacher y Robert Brady, uso permitido conservando el aviso |
| Haxor y PsevdoAzbuka | 10 a 17 px | Sin aviso de licencia en el archivo |
Mi recomendación: revisa la licencia de cada fuente antes de usarla en un proyecto comercial. En cambio, para algo personal o de pasatiempo, las misc-fixed, tom-thumb y spleen son las fuentes BDF más tranquilas.
Para qué sirven
- Pantallas OLED SSD1306 o SH1106 con ESP32, ESP8266 o Arduino. Por ejemplo, una 4×6 o una 5×8 te deja meter varias líneas de telemetría. En cambio, una spleen grande se ve muy bien para una frecuencia o la lectura de un sensor.
- Tinta electrónica: la nitidez de los mapas de bits evita el aspecto deslavado de las fuentes suavizadas. Es justo el tipo de pantalla de mi indicativo en tinta electrónica y de mi estación meteorológica con WeatherAPI.
- LCD monocromos y matrices LED, donde cada píxel cuenta.
- Proyectos de radio y de clima: menús, S-meters, relojes y lecturas de sensores.
Cómo usar fuentes BDF en tu proyecto
Normalmente no se carga el BDF tal cual en el microcontrolador. Primero se convierte a un arreglo de C en tu computadora y luego se incluye en el firmware. La herramienta depende de la biblioteca que uses.
Con U8g2
U8g2 trae bdfconv, que convierte un .bdf directamente a una fuente de U8g2. Por ejemplo, para spleen de 8 × 16 con los caracteres del 32 al 255:
bdfconv -f 1 -m '32-255' -n u8g2_font_spleen_8x16 -o spleen_8x16.h spleen-8x16.bdf
Luego incluyes spleen_8x16.h en tu proyecto y la activas con u8g2.setFont(u8g2_font_spleen_8x16);. Con -m eliges qué caracteres incluir. Así puedes dejar solo números y unos cuantos símbolos para ahorrar memoria.
Con Adafruit GFX
La utilidad fontconvert de Adafruit GFX está pensada para TrueType. Aun así, abre las fuentes con la biblioteca FreeType, que también lee BDF, así que puede convertirlas. Eso sí, con fuentes de mapa de bits el tamaño que pidas tiene que corresponder a alguno de los que trae la fuente. Por eso conviene hacer pruebas.
Lo que no sirve para esto
Hay dos herramientas que a veces se recomiendan y no generan arreglos de C. Por un lado, bdftopcf convierte BDF al formato PCF que usa el servidor X11. Por otro lado, otf2bdf hace lo contrario de lo que necesitas aquí: convierte una fuente TrueType u OpenType a BDF (así se creó logisoso46).
Lo bueno y lo que hay que saber de estas fuentes BDF
- Lo bueno: muchos tamaños y estilos en un solo lugar, desde fuentes diminutas hasta dígitos enormes. Además, vienen en un formato que se convierte fácilmente.
- Las licencias varían. Usa la tabla de arriba y, si tu proyecto es comercial, confirma con el autor de cada fuente.
- No todas cubren lo mismo. Las misc-fixed tienen miles de caracteres. En cambio, spleen y otras solo traen unos 190, y algunas no tienen símbolos como el punto medio. Por lo tanto, si necesitas acentos o el símbolo de grado, revisa que estén en las fuentes BDF antes de elegir.
Conclusión
Las fuentes de mapa de bits siguen siendo insustituibles en las pantallas de baja resolución. Tener a la mano una colección variada de fuentes BDF te ahorra horas de búsqueda. Además, saber de quién es cada fuente te evita sorpresas. Gracias a IT-Studio-Rech por reunirlas y a cada uno de sus autores por compartirlas. Al final, lo mejor es clonar el repositorio, probar distintos tamaños en tu pantalla y quedarte con las que mejor se lean.
73 y DX de XE1E
Enrique
Recibe los artículos nuevos por correo
Te aviso cada vez que publique un artículo en el XE1E Radio Blog. Puedes darte de baja cuando quieras.


