mirror of
https://github.com/godotengine/godot.git
synced 2026-01-03 18:11:19 +03:00
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.
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user