mirror of
https://github.com/Redot-Engine/redot-engine.git
synced 2025-12-06 07:17:42 -05:00
Use system fonts as fallback and improve system font handling.
Add support for font weight and stretch selection when using system fonts. Add function to get system fallback font from a font name, style, text, and language code. Implement system font support for Android. Use system fonts as a last resort fallback.
This commit is contained in:
@@ -69,6 +69,12 @@ void TextServerExtension::_bind_methods() {
|
||||
GDVIRTUAL_BIND(_font_set_style_name, "font_rid", "name_style");
|
||||
GDVIRTUAL_BIND(_font_get_style_name, "font_rid");
|
||||
|
||||
GDVIRTUAL_BIND(_font_set_weight, "font_rid", "weight");
|
||||
GDVIRTUAL_BIND(_font_get_weight, "font_rid");
|
||||
|
||||
GDVIRTUAL_BIND(_font_set_stretch, "font_rid", "stretch");
|
||||
GDVIRTUAL_BIND(_font_get_stretch, "font_rid");
|
||||
|
||||
GDVIRTUAL_BIND(_font_set_antialiasing, "font_rid", "antialiasing");
|
||||
GDVIRTUAL_BIND(_font_get_antialiasing, "font_rid");
|
||||
|
||||
@@ -87,6 +93,9 @@ void TextServerExtension::_bind_methods() {
|
||||
GDVIRTUAL_BIND(_font_set_fixed_size, "font_rid", "fixed_size");
|
||||
GDVIRTUAL_BIND(_font_get_fixed_size, "font_rid");
|
||||
|
||||
GDVIRTUAL_BIND(_font_set_allow_system_fallback, "font_rid", "allow_system_fallback");
|
||||
GDVIRTUAL_BIND(_font_is_allow_system_fallback, "font_rid");
|
||||
|
||||
GDVIRTUAL_BIND(_font_set_force_autohinter, "font_rid", "force_autohinter");
|
||||
GDVIRTUAL_BIND(_font_is_force_autohinter, "font_rid");
|
||||
|
||||
@@ -308,6 +317,8 @@ void TextServerExtension::_bind_methods() {
|
||||
GDVIRTUAL_BIND(_string_to_lower, "string", "language");
|
||||
|
||||
GDVIRTUAL_BIND(_parse_structured_text, "parser_type", "args", "text");
|
||||
|
||||
GDVIRTUAL_BIND(_cleanup);
|
||||
}
|
||||
|
||||
bool TextServerExtension::has_feature(Feature p_feature) const {
|
||||
@@ -434,6 +445,26 @@ String TextServerExtension::font_get_style_name(const RID &p_font_rid) const {
|
||||
return ret;
|
||||
}
|
||||
|
||||
void TextServerExtension::font_set_weight(const RID &p_font_rid, int64_t p_weight) {
|
||||
GDVIRTUAL_CALL(_font_set_weight, p_font_rid, p_weight);
|
||||
}
|
||||
|
||||
int64_t TextServerExtension::font_get_weight(const RID &p_font_rid) const {
|
||||
int64_t ret = 400;
|
||||
GDVIRTUAL_CALL(_font_get_weight, p_font_rid, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
void TextServerExtension::font_set_stretch(const RID &p_font_rid, int64_t p_stretch) {
|
||||
GDVIRTUAL_CALL(_font_set_stretch, p_font_rid, p_stretch);
|
||||
}
|
||||
|
||||
int64_t TextServerExtension::font_get_stretch(const RID &p_font_rid) const {
|
||||
int64_t ret = 100;
|
||||
GDVIRTUAL_CALL(_font_get_stretch, p_font_rid, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
void TextServerExtension::font_set_name(const RID &p_font_rid, const String &p_name) {
|
||||
GDVIRTUAL_CALL(_font_set_name, p_font_rid, p_name);
|
||||
}
|
||||
@@ -504,6 +535,16 @@ int64_t TextServerExtension::font_get_fixed_size(const RID &p_font_rid) const {
|
||||
return ret;
|
||||
}
|
||||
|
||||
void TextServerExtension::font_set_allow_system_fallback(const RID &p_font_rid, bool p_allow_system_fallback) {
|
||||
GDVIRTUAL_CALL(_font_set_allow_system_fallback, p_font_rid, p_allow_system_fallback);
|
||||
}
|
||||
|
||||
bool TextServerExtension::font_is_allow_system_fallback(const RID &p_font_rid) const {
|
||||
bool ret = false;
|
||||
GDVIRTUAL_CALL(_font_is_allow_system_fallback, p_font_rid, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
void TextServerExtension::font_set_force_autohinter(const RID &p_font_rid, bool p_force_autohinter) {
|
||||
GDVIRTUAL_CALL(_font_set_force_autohinter, p_font_rid, p_force_autohinter);
|
||||
}
|
||||
@@ -1360,6 +1401,10 @@ bool TextServerExtension::spoof_check(const String &p_string) const {
|
||||
return TextServer::spoof_check(p_string);
|
||||
}
|
||||
|
||||
void TextServerExtension::cleanup() {
|
||||
GDVIRTUAL_CALL(_cleanup);
|
||||
}
|
||||
|
||||
TextServerExtension::TextServerExtension() {
|
||||
//NOP
|
||||
}
|
||||
|
||||
@@ -109,6 +109,16 @@ public:
|
||||
GDVIRTUAL2(_font_set_style_name, RID, const String &);
|
||||
GDVIRTUAL1RC(String, _font_get_style_name, RID);
|
||||
|
||||
virtual void font_set_weight(const RID &p_font_rid, int64_t p_weight) override;
|
||||
virtual int64_t font_get_weight(const RID &p_font_rid) const override;
|
||||
GDVIRTUAL2(_font_set_weight, RID, int);
|
||||
GDVIRTUAL1RC(int64_t, _font_get_weight, RID);
|
||||
|
||||
virtual void font_set_stretch(const RID &p_font_rid, int64_t p_stretch) override;
|
||||
virtual int64_t font_get_stretch(const RID &p_font_rid) const override;
|
||||
GDVIRTUAL2(_font_set_stretch, RID, int);
|
||||
GDVIRTUAL1RC(int64_t, _font_get_stretch, RID);
|
||||
|
||||
virtual void font_set_antialiasing(const RID &p_font_rid, TextServer::FontAntialiasing p_antialiasing) override;
|
||||
virtual TextServer::FontAntialiasing font_get_antialiasing(const RID &p_font_rid) const override;
|
||||
GDVIRTUAL2(_font_set_antialiasing, RID, TextServer::FontAntialiasing);
|
||||
@@ -154,6 +164,11 @@ public:
|
||||
GDVIRTUAL2(_font_set_transform, RID, Transform2D);
|
||||
GDVIRTUAL1RC(Transform2D, _font_get_transform, RID);
|
||||
|
||||
virtual void font_set_allow_system_fallback(const RID &p_font_rid, bool p_allow_system_fallback) override;
|
||||
virtual bool font_is_allow_system_fallback(const RID &p_font_rid) const override;
|
||||
GDVIRTUAL2(_font_set_allow_system_fallback, RID, bool);
|
||||
GDVIRTUAL1RC(bool, _font_is_allow_system_fallback, RID);
|
||||
|
||||
virtual void font_set_force_autohinter(const RID &p_font_rid, bool p_force_autohinter) override;
|
||||
virtual bool font_is_force_autohinter(const RID &p_font_rid) const override;
|
||||
GDVIRTUAL2(_font_set_force_autohinter, RID, bool);
|
||||
@@ -514,6 +529,9 @@ public:
|
||||
GDVIRTUAL2RC(int64_t, _is_confusable, const String &, const PackedStringArray &);
|
||||
GDVIRTUAL1RC(bool, _spoof_check, const String &);
|
||||
|
||||
virtual void cleanup() override;
|
||||
GDVIRTUAL0(_cleanup);
|
||||
|
||||
TextServerExtension();
|
||||
~TextServerExtension();
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user