diff --git a/doc/classes/Font.xml b/doc/classes/Font.xml index 461e96def478..e87712825d25 100644 --- a/doc/classes/Font.xml +++ b/doc/classes/Font.xml @@ -149,12 +149,6 @@ Returns number of faces in the TrueType / OpenType collection. - - - - Returns array of fallback [Font]s. - - @@ -335,12 +329,11 @@ Sets LRU cache capacity for [code]draw_*[/code] methods. - - - - - Sets array of fallback [Font]s. - - + + + Array of fallback [Font]s to use as a substitute if a glyph is not found in this current [Font]. + If this array is empty in a [FontVariation], the [member FontVariation.base_font]'s fallbacks are used instead. + + diff --git a/doc/classes/FontFile.xml b/doc/classes/FontFile.xml index ba4761e900f2..86d1cb552a74 100644 --- a/doc/classes/FontFile.xml +++ b/doc/classes/FontFile.xml @@ -568,9 +568,6 @@ Contents of the dynamic font source file. - - Array of fallback [Font]s. - Font size, used only for the bitmap fonts. diff --git a/doc/classes/FontVariation.xml b/doc/classes/FontVariation.xml index eb72b4020c30..f02fda31b96f 100644 --- a/doc/classes/FontVariation.xml +++ b/doc/classes/FontVariation.xml @@ -46,9 +46,6 @@ Base font used to create a variation. If not set, default [Theme] font is used. - - Array of fallback [Font]s to use as a substitute if a glyph is not found in this [FontVariation]. If not set, [member base_font]'s fallbacks are used instead. - A set of OpenType feature tags. More info: [url=https://docs.microsoft.com/en-us/typography/opentype/spec/featuretags]OpenType feature tags[/url]. diff --git a/doc/classes/SystemFont.xml b/doc/classes/SystemFont.xml index ea3dd0acd221..239bcc257cc4 100644 --- a/doc/classes/SystemFont.xml +++ b/doc/classes/SystemFont.xml @@ -19,9 +19,6 @@ Font anti-aliasing mode. - - Array of fallback [Font]s. - If set to [code]true[/code], italic or oblique font is preferred. diff --git a/scene/resources/font.cpp b/scene/resources/font.cpp index 09a835db1bd1..df0bd8bc2e80 100644 --- a/scene/resources/font.cpp +++ b/scene/resources/font.cpp @@ -97,6 +97,8 @@ void Font::_bind_methods() { ClassDB::bind_method(D_METHOD("get_supported_feature_list"), &Font::get_supported_feature_list); ClassDB::bind_method(D_METHOD("get_supported_variation_list"), &Font::get_supported_variation_list); ClassDB::bind_method(D_METHOD("get_face_count"), &Font::get_face_count); + + ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "fallbacks", PROPERTY_HINT_ARRAY_TYPE, MAKE_RESOURCE_TYPE_HINT("Font")), "set_fallbacks", "get_fallbacks"); } void Font::_update_rids_fb(const Ref &p_f, int p_depth) const { @@ -1006,7 +1008,12 @@ void FontFile::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "oversampling", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE), "set_oversampling", "get_oversampling"); ADD_PROPERTY(PropertyInfo(Variant::INT, "fixed_size", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE), "set_fixed_size", "get_fixed_size"); ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "opentype_feature_overrides", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE), "set_opentype_feature_overrides", "get_opentype_feature_overrides"); - ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "fallbacks", PROPERTY_HINT_ARRAY_TYPE, MAKE_RESOURCE_TYPE_HINT("Font"), PROPERTY_USAGE_STORAGE), "set_fallbacks", "get_fallbacks"); +} + +void FontFile::_validate_property(PropertyInfo &p_property) const { + if (p_property.name == "fallbacks") { + p_property.usage &= ~PROPERTY_USAGE_EDITOR; + } } bool FontFile::_set(const StringName &p_name, const Variant &p_value) { @@ -2634,7 +2641,6 @@ void FontVariation::_bind_methods() { ClassDB::bind_method(D_METHOD("set_spacing", "spacing", "value"), &FontVariation::set_spacing); ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "base_font", PROPERTY_HINT_RESOURCE_TYPE, "Font"), "set_base_font", "get_base_font"); - ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "fallbacks", PROPERTY_HINT_ARRAY_TYPE, MAKE_RESOURCE_TYPE_HINT("Font")), "set_fallbacks", "get_fallbacks"); ADD_GROUP("Variation", "variation_"); ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "variation_opentype"), "set_variation_opentype", "get_variation_opentype"); @@ -2924,7 +2930,6 @@ void SystemFont::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::INT, "msdf_pixel_range"), "set_msdf_pixel_range", "get_msdf_pixel_range"); ADD_PROPERTY(PropertyInfo(Variant::INT, "msdf_size"), "set_msdf_size", "get_msdf_size"); ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "oversampling", PROPERTY_HINT_RANGE, "0,10,0.1"), "set_oversampling", "get_oversampling"); - ADD_PROPERTY(PropertyInfo(Variant::ARRAY, "fallbacks", PROPERTY_HINT_ARRAY_TYPE, MAKE_RESOURCE_TYPE_HINT("Font")), "set_fallbacks", "get_fallbacks"); } void SystemFont::_update_rids() const { diff --git a/scene/resources/font.h b/scene/resources/font.h index 5d600451a173..d8374c4447c3 100644 --- a/scene/resources/font.h +++ b/scene/resources/font.h @@ -210,6 +210,7 @@ class FontFile : public Font { protected: static void _bind_methods(); + void _validate_property(PropertyInfo &p_property) const; bool _set(const StringName &p_name, const Variant &p_value); bool _get(const StringName &p_name, Variant &r_ret) const;