summaryrefslogtreecommitdiffstats
path: root/modules/text_server_fb/text_server_fb.h
diff options
context:
space:
mode:
Diffstat (limited to 'modules/text_server_fb/text_server_fb.h')
-rw-r--r--modules/text_server_fb/text_server_fb.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/modules/text_server_fb/text_server_fb.h b/modules/text_server_fb/text_server_fb.h
index c44b45fc27..5c30ea0c05 100644
--- a/modules/text_server_fb/text_server_fb.h
+++ b/modules/text_server_fb/text_server_fb.h
@@ -245,12 +245,18 @@ class TextServerFallback : public TextServerExtension {
}
};
+ struct FontFallbackLinkedVariation {
+ RID base_font;
+ int extra_spacing[4] = { 0, 0, 0, 0 };
+ };
+
struct FontFallback {
Mutex mutex;
TextServer::FontAntialiasing antialiasing = TextServer::FONT_ANTIALIASING_GRAY;
bool mipmaps = false;
bool msdf = false;
+ FixedSizeScaleMode fixed_size_scale_mode = FIXED_SIZE_SCALE_DISABLE;
int msdf_range = 14;
int msdf_source_size = 48;
int fixed_size = 0;
@@ -451,9 +457,19 @@ class TextServerFallback : public TextServerExtension {
// Common data.
double oversampling = 1.0;
+ mutable RID_PtrOwner<FontFallbackLinkedVariation> font_var_owner;
mutable RID_PtrOwner<FontFallback> font_owner;
mutable RID_PtrOwner<ShapedTextDataFallback> shaped_owner;
+ _FORCE_INLINE_ FontFallback *_get_font_data(const RID &p_font_rid) const {
+ RID rid = p_font_rid;
+ FontFallbackLinkedVariation *fdv = font_var_owner.get_or_null(rid);
+ if (unlikely(fdv)) {
+ rid = fdv->base_font;
+ }
+ return font_owner.get_or_null(rid);
+ }
+
struct SystemFontKey {
String font_name;
TextServer::FontAntialiasing antialiasing = TextServer::FONT_ANTIALIASING_GRAY;
@@ -569,6 +585,7 @@ public:
/* Font interface */
MODBIND0R(RID, create_font);
+ MODBIND1R(RID, create_font_linked_variation, const RID &);
MODBIND2(font_set_data, const RID &, const PackedByteArray &);
MODBIND3(font_set_data_ptr, const RID &, const uint8_t *, int64_t);
@@ -611,6 +628,9 @@ public:
MODBIND2(font_set_fixed_size, const RID &, int64_t);
MODBIND1RC(int64_t, font_get_fixed_size, const RID &);
+ MODBIND2(font_set_fixed_size_scale_mode, const RID &, FixedSizeScaleMode);
+ MODBIND1RC(FixedSizeScaleMode, font_get_fixed_size_scale_mode, const RID &);
+
MODBIND2(font_set_allow_system_fallback, const RID &, bool);
MODBIND1RC(bool, font_is_allow_system_fallback, const RID &);