summaryrefslogtreecommitdiff
path: root/scene
diff options
context:
space:
mode:
authorRuslan Mustakov <r.mustakov@gmail.com>2018-03-14 19:38:34 +0700
committerRuslan Mustakov <r.mustakov@gmail.com>2018-03-14 19:53:44 +0700
commitaa8561ded403020f0292450e7a7af75eaf001e94 (patch)
tree770407401bd19888eff20858b2f119c52551b5b7 /scene
parenta8bbb708a8751e4bcd98de9b1bb94adef5bd4a17 (diff)
Ceil dynamic font glyph size
Fixes #15459. When oversampling is enabled, glyphs may have fractional size, but they are still rendered into integral pixels, which results in them taking more space than was anticiped by autowrapping algorithm. The solution here is to return ceiled width, which makes autowrapper consider characters a bit larger than they are, but it doesn't hurt the actual rendering and ensures there is enough space for the characters.
Diffstat (limited to 'scene')
-rw-r--r--scene/resources/dynamic_font.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/scene/resources/dynamic_font.cpp b/scene/resources/dynamic_font.cpp
index 26e29b3ccb..3d825b5a27 100644
--- a/scene/resources/dynamic_font.cpp
+++ b/scene/resources/dynamic_font.cpp
@@ -308,6 +308,9 @@ Size2 DynamicFontAtSize::get_char_size(CharType p_char, CharType p_next, const V
ret.x += (delta.x >> 6) / oversampling;
}
}
+
+ // ensures oversampled glyphs will have enough space when this value is used by clipping/wrapping algorithms
+ ret.x = Math::ceil(ret.x);
return ret;
}