Ir al contenido

Fuentes ​

En Lopaka, las fuentes dependen de la plataforma. Cada biblioteca de destino tiene su propio formato de fuente y su propio conjunto de fuentes integradas: no puedes mezclar libremente fuentes de distintas plataformas. Esta página explica qué formatos de fuente usa cada plataforma, cómo elegir e importar fuentes en el editor y qué pasa con la fuente elegida al generar el código.

Formatos de fuente ​

Internamente, Lopaka trabaja con tres formatos de fuente:

FormatoDescripciónUsado por
BDFBitmap Distribution Format: un estándar de fuentes de mapa de bits en texto planoU8g2, CircuitPython
GFXAdafruit GFX: un encabezado C (.h) con un arreglo de mapa de bits y una tabla de glifosTFT_eSPI, AdafruitGFX, ArduinoGFX, GxEPD2
TTF / OTF / WOFFFuentes vectoriales TrueType y OpenTypeLVGL, ESPHome

Algunas plataformas (Flipper Zero, MicroPython) no usan ninguno de estos formatos: sus fuentes son fijas y vienen compiladas en la propia biblioteca. Se describen en las secciones por plataforma más abajo.

Cuando subes una fuente personalizada, Lopaka la convierte al formato que necesita la plataforma activa, así que nunca tienes que encargarte de la conversión a mano (salvo algunas excepciones que se describen más abajo).

Importar una fuente personalizada ​

Para importar una fuente, selecciona una capa de texto, abre el menú desplegable de fuentes en el inspector y haz clic en Importar fuente…. Elige un archivo de tu sistema de archivos. Lo que pasa después depende del formato del archivo y de la plataforma activa.

Encabezado GFX (.h) ​

Compatible con: TFT_eSPI, AdafruitGFX, ArduinoGFX, GxEPD2

El archivo se usa tal cual, sin conversión. Una vez subida, la fuente aparece en la lista de fuentes y sus datos de mapa de bits se incrustan en el código generado.

Fuente BDF ​

Compatible con: U8g2, TFT_eSPI, AdafruitGFX, ArduinoGFX, GxEPD2

  • En U8g2: el archivo se sube directamente. Los caracteres no admitidos en el título de la fuente se reemplazan cuando Lopaka genera el símbolo C y el nombre del archivo .h.
  • En plataformas basadas en GFX: el archivo BDF se convierte automáticamente a formato GFX antes de subirse. La conversión cubre el rango ASCII imprimible (0x20–0x7E). El resultado se trata exactamente igual que una fuente GFX nativa.

TTF / OTF / WOFF ​

Compatible con: U8g2, TFT_eSPI, AdafruitGFX, ArduinoGFX, GxEPD2

Al subir una fuente vectorial se abre el asistente de fuentes:

  1. Altura de la fuente: define la altura de destino en píxeles. Controla cómo se rasterizan los glifos. Los valores pequeños producen mapas de bits compactos; los grandes, glifos más nítidos a costa de más memoria flash.
  2. Zoom de la vista previa: escala la vista previa (1×–5×) para revisar el resultado. No afecta a la salida.
  3. Haz clic en Importar: la fuente se rasteriza y se guarda en el proyecto.

El asistente solo cubre el ASCII imprimible (del espacio a la tilde, 95 caracteres). Los caracteres extendidos, las letras acentuadas y los glifos CJK no se incluyen en la salida.

Tamaño y escala de la fuente ​

PlataformaControl de tamañoCómo funciona
U8g2Ninguno: elige otra fuenteCada fuente BDF tiene un único tamaño fijo
TFT_eSPI / AdafruitGFX / ArduinoGFX / GxEPD2Escala entera (1×, 2×, …)Duplica los píxeles del mapa de bits
LVGLNinguno: Montserrat fijaEtapa inicial; sin controles de tamaño ni de fuente
ESPHomeValor numérico libre (px)Define el campo size: en el YAML
Flipper ZeroNingunoFuentes fijas del sistema
MicroPython / CircuitPythonNingunoUna única fuente integrada

Qué termina en el código generado ​

Plataformas basadas en GFX ​

Para cada fuente GFX que no sea la fuente adafruit integrada de 5×7, el generador inserta:

cpp
#include <Fonts/FontName.h>
const GFXfont *font_FontName = &FontName;

Si varias capas usan la misma fuente, la declaración no se repite: aparece una sola vez.

U8g2 ​

Solo aparece el identificador de la fuente, en línea:

c
u8g2.setFont(u8g2_font_helvB08_tr);

Sin encabezado ni variable.

Flipper Zero ​

La constante de la fuente se inserta directamente:

c
canvas_set_font(canvas, FontPrimary);

ESPHome ​

Se agrega un bloque font: en la raíz del documento YAML. Si varias capas de texto usan distintos tamaños de la misma fuente, se generan entradas separadas.

LVGL ​

Se hace referencia directa a la fuente Montserrat integrada. No se emite ninguna variable de fuente ni ningún include.

Consejos prácticos ​

  • Tamaño mínimo legible en OLED monocromáticas. Las fuentes BDF de 4–6 px son técnicamente válidas, pero cuesta leerlas en el hardware real. 8 px (p. ej., helvB08) es el mínimo práctico para la mayoría de las pantallas.
  • Presupuesto de memoria para fuentes GFX. Cada fuente GFX que incluyes ocupa memoria flash en el microcontrolador. FreeMono12pt7b ocupa unos 1,7 KB; FreeMonoBold24pt7b, unos 4,5 KB. Revisa las limitaciones de flash de tu dispositivo antes de agregar fuentes grandes.
  • Cobertura de caracteres de las fuentes personalizadas. Los convertidores de Lopaka de BDF a GFX y de fuentes vectoriales solo codifican el rango ASCII imprimible (del espacio 0x20 a la tilde 0x7E, 95 caracteres). Para una cobertura ampliada en U8g2, importa un BDF que contenga esos glifos. En las plataformas GFX, usa un archivo .h ya generado que los incluya.
  • Las fuentes personalizadas deben coincidir con la plataforma del proyecto. Las fuentes subidas se guardan como recursos del proyecto: una fuente GFX .h no funciona en U8g2 y una fuente BDF no funciona en TFT_eSPI.

Fuentes por plataforma ​

U8g2 ​

U8g2 incluye una amplia colección de fuentes derivadas de BDF compiladas directamente en la biblioteca. Lopaka ofrece toda esta colección en el selector de fuentes. Los nombres de las fuentes en el código generado siguen el esquema de nombres de la propia biblioteca:

c
u8g2.setFont(u8g2_font_haxrcorp4089_tr);

No se emiten datos de fuente en tu sketch: basta con el nombre, porque la fuente ya está dentro de la biblioteca U8g2. Las fuentes integradas de U8g2 tampoco aparecen en Ajustes de código → Fuentes, porque no hay ningún archivo adicional que descargar.

El tamaño de la fuente es fijo. Cada fuente BDF tiene una única altura en píxeles predefinida. Para mostrar texto más grande debes elegir otra fuente, no escalar la actual.

Subir fuentes personalizadas: U8g2 acepta archivos .bdf, .ttf, .otf y .woff. Los archivos BDF se importan directamente. Las fuentes vectoriales abren el asistente de fuentes, donde eliges una altura fija en píxeles antes de que Lopaka las convierta a BDF. Lopaka guarda el BDF resultante sin cambios para las vistas previas y la edición. Las fuentes personalizadas aparecen en Ajustes de código → Fuentes, donde puedes descargar cada una como archivo .h de U8g2.

De forma predeterminada, el encabezado descargado contiene todos los glifos del BDF. Activa Incluir solo los glifos usados para incluir solo los caracteres Unicode que usan las capas de texto y de área de texto que hacen referencia a esa fuente. Si alguna de esas capas usa texto variable en tiempo de ejecución, Lopaka exporta la fuente completa para no omitir caracteres desconocidos en tiempo de ejecución.

Con Incluir fuentes activado, el código generado de la pantalla incluye cada encabezado de fuente descargado.

TFT_eSPI, AdafruitGFX, ArduinoGFX, GxEPD2 ​

Todas estas plataformas usan el formato de fuente de Adafruit GFX: un archivo de encabezado C que incrusta directamente los datos del mapa de bits. El conjunto integrado incluye la fuente Adafruit de 5×7 y decenas de fuentes de la familia Free en varios tamaños (FreeMono, FreeSans y FreeSerif en regular, negrita, cursiva y negrita cursiva a 9, 12, 18 y 24 pt, y más).

La fuente de 5×7 es la predeterminada de la biblioteca. No requiere ninguna declaración de encabezado. Para las demás fuentes, lo que el generador antepone depende del origen de los datos de la fuente:

PlataformaFuentes incluidas en la bibliotecaOtras fuentes (subidas o que no están en la biblioteca)
TFT_eSPIFreeMono/FreeSans/FreeSerif a 9, 12, 18 y 24 pt: sin #include, TFT_eSPI las compila con LOAD_GFXFF; no aparecen en la lista de descargas#include "FontName.h"
AdafruitGFX, GxEPD2, InkplateLa familia Free, Org_01, Picopixel, Tiny3x3a2pt7b y TomThumb: #include <Fonts/FontName.h> desde la biblioteca Adafruit GFX#include "FontName.h"
ArduinoGFX—#include "FontName.h" para cada fuente

Después, la llamada de texto hace referencia directa al símbolo de la fuente:

cpp
#include <Fonts/FreeMono12pt7b.h>
// ...
display.setFont(&FreeMono12pt7b);

Por cada #include "FontName.h", descarga el encabezado desde Ajustes de código → Fuentes y colócalo junto a tu sketch.

El tamaño de la fuente es escalable. Las fuentes GFX admiten un multiplicador de escala entero. Con 1 se dibujan a su tamaño nativo en píxeles; con 2 se duplican ambas dimensiones.

Ajuste de la posición Y. Las fuentes GFX usan una línea base descendente: la coordenada Y indica la línea base, no la parte superior del glifo. Lopaka lo compensa automáticamente cuando arrastras texto en el lienzo y emite la coordenada corregida en el código generado.

Subir fuentes personalizadas. Acepta archivos .h (encabezado GFX ya generado), .bdf, .ttf, .otf y .woff.

  • .h: se usa tal cual, sin conversión.
  • .bdf: se convierte automáticamente a formato GFX antes de subirse.
  • .ttf / .otf / .woff: abre el asistente de fuentes (ver arriba).

LVGL ​

La compatibilidad con LVGL en Lopaka está en una etapa inicial. Por ahora solo hay una fuente disponible, la Montserrat integrada, con un tamaño fijo. No hay controles para elegir la fuente ni el tamaño. Esto se ampliará en una versión futura.

ESPHome ​

ESPHome obtiene las fuentes de Google Fonts al compilar. El YAML generado contiene un bloque font: que descarga la fuente por su nombre cuando flasheas el dispositivo:

yaml
font:
    - file: gfonts://Roboto
      id: font_roboto
      size: 16

El tamaño de la fuente se puede configurar. Las fuentes disponibles son las fuentes TTF del conjunto integrado de Lopaka (Roboto, Montserrat, Ubuntu y otras). ESPHome no admite subir fuentes personalizadas.

Flipper Zero y Flipper One ​

Flipper ofrece exactamente cuatro fuentes del sistema:

Nombre en LopakaConstante de FlipperUso habitual
PrimaryFontPrimaryTexto normal de la interfaz
SecondaryFontSecondaryEtiquetas secundarias pequeñas
KeyboardFontKeyboardTeclado en pantalla
Big NumbersFontBigNumbersVisualización de dígitos grandes

No hay controles de tamaño ni se pueden subir fuentes personalizadas.

MicroPython ​

MicroPython usa una única fuente integrada fija (Petme 8×8). Todas las capas de texto la usan automáticamente.

CircuitPython ​

CircuitPython usa la fuente BDF Terminus. No se pueden subir fuentes personalizadas.