Add options to embolden and transform font outlines to simulate bold and italic typefaces.

This commit is contained in:
bruvzg 2022-03-11 09:31:16 +02:00
parent 1e099afc8a
commit b32e8d63d8
No known key found for this signature in database
GPG key ID: 7960FCF39844EC38
17 changed files with 364 additions and 25 deletions

View file

@ -88,6 +88,12 @@ void TextServerExtension::_bind_methods() {
GDVIRTUAL_BIND(_font_set_subpixel_positioning, "font_rid", "subpixel_positioning");
GDVIRTUAL_BIND(_font_get_subpixel_positioning, "font_rid");
GDVIRTUAL_BIND(_font_set_embolden, "font_rid", "strength");
GDVIRTUAL_BIND(_font_get_embolden, "font_rid");
GDVIRTUAL_BIND(_font_set_transform, "font_rid", "transform");
GDVIRTUAL_BIND(_font_get_transform, "font_rid");
GDVIRTUAL_BIND(_font_set_variation_coordinates, "font_rid", "variation_coordinates");
GDVIRTUAL_BIND(_font_get_variation_coordinates, "font_rid");
@ -527,6 +533,30 @@ TextServer::SubpixelPositioning TextServerExtension::font_get_subpixel_positioni
return TextServer::SubpixelPositioning::SUBPIXEL_POSITIONING_DISABLED;
}
void TextServerExtension::font_set_embolden(RID p_font_rid, float p_strength) {
GDVIRTUAL_CALL(_font_set_embolden, p_font_rid, p_strength);
}
float TextServerExtension::font_get_embolden(RID p_font_rid) const {
float ret;
if (GDVIRTUAL_CALL(_font_get_embolden, p_font_rid, ret)) {
return ret;
}
return 0.f;
}
void TextServerExtension::font_set_transform(RID p_font_rid, Transform2D p_transform) {
GDVIRTUAL_CALL(_font_set_transform, p_font_rid, p_transform);
}
Transform2D TextServerExtension::font_get_transform(RID p_font_rid) const {
Transform2D ret;
if (GDVIRTUAL_CALL(_font_get_transform, p_font_rid, ret)) {
return ret;
}
return Transform2D();
}
void TextServerExtension::font_set_variation_coordinates(RID p_font_rid, const Dictionary &p_variation_coordinates) {
GDVIRTUAL_CALL(_font_set_variation_coordinates, p_font_rid, p_variation_coordinates);
}

View file

@ -139,6 +139,16 @@ public:
GDVIRTUAL2(_font_set_subpixel_positioning, RID, SubpixelPositioning);
GDVIRTUAL1RC(SubpixelPositioning, _font_get_subpixel_positioning, RID);
virtual void font_set_embolden(RID p_font_rid, float p_strength) override;
virtual float font_get_embolden(RID p_font_rid) const override;
GDVIRTUAL2(_font_set_embolden, RID, float);
GDVIRTUAL1RC(float, _font_get_embolden, RID);
virtual void font_set_transform(RID p_font_rid, Transform2D p_transform) override;
virtual Transform2D font_get_transform(RID p_font_rid) const override;
GDVIRTUAL2(_font_set_transform, RID, Transform2D);
GDVIRTUAL1RC(Transform2D, _font_get_transform, RID);
virtual void font_set_variation_coordinates(RID p_font_rid, const Dictionary &p_variation_coordinates) override;
virtual Dictionary font_get_variation_coordinates(RID p_font_rid) const override;
GDVIRTUAL2(_font_set_variation_coordinates, RID, Dictionary);