aboutsummaryrefslogtreecommitdiff
path: root/src/Text.cpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2021-09-03 02:37:37 +0200
committerdec05eba <dec05eba@protonmail.com>2021-09-03 02:37:37 +0200
commit1ee7d3a84e3bc880abd7226b7dc1336b19d9211d (patch)
treeff4f7b9466f3c61ae7648b04663ad50dde94530a /src/Text.cpp
parent53d23bbaf257c588409825ff50857c02b43dd407 (diff)
Consistently calculate font height for different fonts
Diffstat (limited to 'src/Text.cpp')
-rw-r--r--src/Text.cpp16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/Text.cpp b/src/Text.cpp
index e012af5..421de8c 100644
--- a/src/Text.cpp
+++ b/src/Text.cpp
@@ -305,6 +305,10 @@ namespace QuickMedia
}
}
+ float Text::font_get_real_height(sf::Font *font) {
+ return font->getGlyph('|', characterSize, false).bounds.height + std::floor(4.0f * ((float)characterSize / (float)14.0f));
+ }
+
float Text::get_text_quad_left_side(const VertexRef &vertex_ref) const {
return vertices[vertex_ref.vertices_index][vertex_ref.index + 1].position.x;
}
@@ -392,7 +396,7 @@ namespace QuickMedia
float latin_font_height = latin_font->getGlyph(' ', characterSize, false).advance;
float hspace = latin_font_height + characterSpacing;
- float vspace = latin_font->getLineSpacing(characterSize); // TODO: What about japanese font???
+ const float vspace = font_get_real_height(latin_font);
const sf::Color url_color = get_current_theme().url_text_color;
@@ -650,9 +654,11 @@ namespace QuickMedia
else
latin_font = FontLoader::get_font(FontLoader::FontType::LATIN);
+ const float vspace = font_get_real_height(latin_font);
+
if(vertices_linear.empty()) {
caretIndex = 0;
- caretPosition = sf::Vector2f(0.0f, floor(latin_font->getLineSpacing(characterSize)));
+ caretPosition = sf::Vector2f(0.0f, floor(vspace));
caret_offset_x = 0.0f;
return;
}
@@ -708,10 +714,10 @@ namespace QuickMedia
caretPosition.x = 0.0f;
else
caretPosition.x = get_text_quad_right_side(last_vertex);
- caretPosition.y = (1 + get_vertex_line(caretIndex)) * floor(latin_font->getLineSpacing(characterSize) + lineSpacing);
+ caretPosition.y = (1 + get_vertex_line(caretIndex)) * floor(vspace + lineSpacing);
} else {
caretPosition.x = get_caret_offset_by_caret_index(caretIndex);
- caretPosition.y = (1 + get_vertex_line(caretIndex)) * floor(latin_font->getLineSpacing(characterSize) + lineSpacing);
+ caretPosition.y = (1 + get_vertex_line(caretIndex)) * floor(vspace + lineSpacing);
}
}
@@ -933,7 +939,7 @@ namespace QuickMedia
latin_font_type = FontLoader::FontType::LATIN;
sf::Font *latin_font = FontLoader::get_font(latin_font_type);
- const float vspace = latin_font->getLineSpacing(characterSize);
+ const float vspace = font_get_real_height(latin_font);
pos.y += floor(vspace); // Origin is at bottom left, we want it to be at top left
const FontLoader::FontType font_types[] = { latin_font_type, FontLoader::FontType::CJK, FontLoader::FontType::SYMBOLS };