From e420db2896ec89210b076d832c56869c1f6d949e Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Sat, 30 May 2026 11:19:41 +0200 Subject: [PATCH] =?UTF-8?q?fix(text):=20fallback=20de=20min=C3=BAscules=20?= =?UTF-8?q?a=20maj=C3=BAscules=20i=20glif=20de=20barra=20baixa=20(=5F)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/shapes/font/char_underscore.shp | 9 +++++++++ source/core/graphics/vector_text.cpp | 16 +++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 data/shapes/font/char_underscore.shp diff --git a/data/shapes/font/char_underscore.shp b/data/shapes/font/char_underscore.shp new file mode 100644 index 0000000..86db05e --- /dev/null +++ b/data/shapes/font/char_underscore.shp @@ -0,0 +1,9 @@ +# char_underscore.shp - Símbolo _ (barra baja) +# Dimensiones: 20×40 (blocky display) + +name: char_underscore +scale: 1.0 +center: 10, 20 + +# Línea horizontal abajo (bajo la baseline de las letras) +line: 3,33 17,33 diff --git a/source/core/graphics/vector_text.cpp b/source/core/graphics/vector_text.cpp index 1f6f59f..e730987 100644 --- a/source/core/graphics/vector_text.cpp +++ b/source/core/graphics/vector_text.cpp @@ -48,7 +48,7 @@ namespace Graphics { } // Cargar símbolos - const std::string SYMBOLS[] = {".", ",", "-", ":", "!", "?", "/", "(", ")"}; + const std::string SYMBOLS[] = {".", ",", "-", ":", "!", "?", "/", "(", ")", "_"}; for (const auto& sym : SYMBOLS) { char c = sym[0]; std::string filename = getShapeFilename(c); @@ -171,6 +171,8 @@ namespace Graphics { return "font/char_lparen.shp"; case ')': return "font/char_rparen.shp"; + case '_': + return "font/char_underscore.shp"; case ' ': return ""; // Espai es maneja sin load shape @@ -183,6 +185,10 @@ namespace Graphics { } auto VectorText::isSupported(char c) const -> bool { + // Mateix fallback que render(): a-z es resol al glif A-Z. + if (c >= 'a' && c <= 'z') { + c -= 32; + } return chars_.contains(c); } @@ -221,6 +227,14 @@ namespace Graphics { continue; } + // Fallback de la font (només tenim glifs en majúscula): tractem + // les minúscules a-z com les seves majúscules A-Z. Mentre no hi + // haja glifs de minúscula, això evita que el text en minúscules + // (p. ex. rutes de fitxer) desaparega. + if (c >= 'a' && c <= 'z') { + c -= 32; + } + // Verificar si el carácter está soportado auto it = chars_.find(c); if (it != chars_.end()) {