diff --git a/modules/text_server_adv/text_server_adv.cpp b/modules/text_server_adv/text_server_adv.cpp index e3ae9861c00..58633dda9b4 100644 --- a/modules/text_server_adv/text_server_adv.cpp +++ b/modules/text_server_adv/text_server_adv.cpp @@ -397,6 +397,12 @@ void TextServerAdvanced::_free_rid(const RID &p_rid) { MutexLock ftlock(ft_mutex); FontAdvanced *fd = font_owner.get_or_null(p_rid); + for (const KeyValue &ffsd : fd->cache) { + OversamplingLevel *ol = oversampling_levels.getptr(ffsd.value->viewport_oversampling); + if (ol != nullptr) { + ol->fonts.erase(ffsd.value); + } + } { MutexLock lock(fd->mutex); font_owner.free(p_rid); diff --git a/modules/text_server_fb/text_server_fb.cpp b/modules/text_server_fb/text_server_fb.cpp index 6e6ca199c8c..9394d187ddd 100644 --- a/modules/text_server_fb/text_server_fb.cpp +++ b/modules/text_server_fb/text_server_fb.cpp @@ -121,6 +121,12 @@ void TextServerFallback::_free_rid(const RID &p_rid) { MutexLock ftlock(ft_mutex); FontFallback *fd = font_owner.get_or_null(p_rid); + for (const KeyValue &ffsd : fd->cache) { + OversamplingLevel *ol = oversampling_levels.getptr(ffsd.value->viewport_oversampling); + if (ol != nullptr) { + ol->fonts.erase(ffsd.value); + } + } { MutexLock lock(fd->mutex); font_owner.free(p_rid);