diff options
author | Ruslan Mustakov <r.mustakov@gmail.com> | 2018-03-17 15:44:34 +0700 |
---|---|---|
committer | Ruslan Mustakov <r.mustakov@gmail.com> | 2018-05-08 13:45:24 +0700 |
commit | 5cd12f6649387f91d08fd17bf3c70e732798ab58 (patch) | |
tree | cc0e4fd2ce69997c67df9aa36b7390cb52c0534c /editor | |
parent | 6e8e401359ba86d33253fb3d3241cf09a742c8e4 (diff) |
Perfect FreeType-based outlines for DynamicFonts
- Implement outlines based on FreeType Stroker API. This allows
artifact-free results, similar to what you will see in Web or any text
editing tools. Outline is a part of DynamicFont rather than Label,
because outlines have to be baked into the font's atlas. Font has a
default outline_color and a Label can specify font_outline_modulator
that will be multiplied with the Font's color to get the final result.
- draw_char now has to be called twice to fully render a text - first
with p_outline == true for each character and then with
p_outline == false for each character.
- Number of draw-calls is reduced from 5 to 2 per outlined character.
- Overall cleanup of DynamicFont code, extracted duplicated code pieces
into separate methods.
- The change is backward-compatible - Labels still have outline
properties that work exactly as they worked before.
Closes #16279.
Diffstat (limited to 'editor')
-rw-r--r-- | editor/output_strings.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/editor/output_strings.cpp b/editor/output_strings.cpp index b0b72510a9..e6cadee3e3 100644 --- a/editor/output_strings.cpp +++ b/editor/output_strings.cpp @@ -87,6 +87,7 @@ void OutputStrings::_notification(int p_what) { float h_ofs = (int)h_scroll->get_value(); Point2 icon_ofs = Point2(0, (font_height - (int)icon_error->get_height()) / 2); + FontDrawer drawer(font, Color(1, 1, 1)); while (E && ofs.y < (size_height - (int)margin.y)) { String str = E->get().text; |