From 7c20a9154608b91cc60f92e68c3c75e4bc72d783 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Sat, 4 Feb 2023 18:59:45 +0300 Subject: [PATCH] Make kerned_font shape glyphs along the Y=0 baseline --- libs/ui/source/bmfont.cpp | 2 +- libs/ui/source/kerned_font.cpp | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/libs/ui/source/bmfont.cpp b/libs/ui/source/bmfont.cpp index 42e2cd6b..9e6b55e7 100644 --- a/libs/ui/source/bmfont.cpp +++ b/libs/ui/source/bmfont.cpp @@ -92,7 +92,7 @@ namespace psemek::ui data.offset_y = charInfo["yoffset"].GetFloat(); data.advance = charInfo["xadvance"].GetFloat(); - data.offset_y = - data.offset_y - data.size_y; + data.offset_y = - data.offset_y - data.size_y + result.size[1]; } } diff --git a/libs/ui/source/kerned_font.cpp b/libs/ui/source/kerned_font.cpp index 9c59a164..d685b0d4 100644 --- a/libs/ui/source/kerned_font.cpp +++ b/libs/ui/source/kerned_font.cpp @@ -64,7 +64,6 @@ namespace psemek::ui std::vector result; - float const offset_to_baseline = (data_.size[1] - data_.baseline) * options.scale; for (char32_t c : str) { if (!supports_character(c)) @@ -79,9 +78,9 @@ namespace psemek::ui glyph g; g.character = c; g.position[0].min = pen[0] + data.offset_x * options.scale; - g.position[1].min = pen[1] + offset_to_baseline - (data.offset_y + data.size_y) * options.scale; + g.position[1].min = pen[1] - (data.offset_y + data.size_y) * options.scale; g.position[0].max = pen[0] + (data.offset_x + data.size_x) * options.scale; - g.position[1].max = pen[1] + offset_to_baseline - data.offset_y * options.scale; + g.position[1].max = pen[1] - data.offset_y * options.scale; result.push_back(g); geom::vector advance{data.advance * options.scale, data_.size[1] * options.scale};