mirror of
https://github.com/godotengine/godot.git
synced 2025-10-19 16:03:29 +00:00
Merge pull request #109152 from bruvzg/font_fb_no_msdf
Use non-MSDF fallback for MSDF fonts if fallback is a color or non-scalable font.
This commit is contained in:
commit
8e458d19cb
2 changed files with 32 additions and 2 deletions
|
@ -5716,10 +5716,25 @@ RID TextServerAdvanced::_find_sys_font_for_text(const RID &p_fdef, const String
|
|||
}
|
||||
}
|
||||
|
||||
bool fb_use_msdf = key.msdf;
|
||||
if (fb_use_msdf) {
|
||||
FontAdvanced *fd = _get_font_data(sysf.rid);
|
||||
if (fd) {
|
||||
MutexLock lock(fd->mutex);
|
||||
Vector2i size = _get_size(fd, 16);
|
||||
FontForSizeAdvanced *ffsd = nullptr;
|
||||
if (_ensure_cache_for_size(fd, size, ffsd)) {
|
||||
if (ffsd && (FT_HAS_COLOR(ffsd->face) || !FT_IS_SCALABLE(ffsd->face))) {
|
||||
fb_use_msdf = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_font_set_antialiasing(sysf.rid, key.antialiasing);
|
||||
_font_set_disable_embedded_bitmaps(sysf.rid, key.disable_embedded_bitmaps);
|
||||
_font_set_generate_mipmaps(sysf.rid, key.mipmaps);
|
||||
_font_set_multichannel_signed_distance_field(sysf.rid, key.msdf);
|
||||
_font_set_multichannel_signed_distance_field(sysf.rid, fb_use_msdf);
|
||||
_font_set_msdf_pixel_range(sysf.rid, key.msdf_range);
|
||||
_font_set_msdf_size(sysf.rid, key.msdf_source_size);
|
||||
_font_set_fixed_size(sysf.rid, key.fixed_size);
|
||||
|
|
|
@ -4467,10 +4467,25 @@ RID TextServerFallback::_find_sys_font_for_text(const RID &p_fdef, const String
|
|||
}
|
||||
}
|
||||
|
||||
bool fb_use_msdf = key.msdf;
|
||||
if (fb_use_msdf) {
|
||||
FontFallback *fd = _get_font_data(sysf.rid);
|
||||
if (fd) {
|
||||
MutexLock lock(fd->mutex);
|
||||
Vector2i size = _get_size(fd, 16);
|
||||
FontForSizeFallback *ffsd = nullptr;
|
||||
if (_ensure_cache_for_size(fd, size, ffsd)) {
|
||||
if (ffsd && (FT_HAS_COLOR(ffsd->face) || !FT_IS_SCALABLE(ffsd->face))) {
|
||||
fb_use_msdf = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_font_set_antialiasing(sysf.rid, key.antialiasing);
|
||||
_font_set_disable_embedded_bitmaps(sysf.rid, key.disable_embedded_bitmaps);
|
||||
_font_set_generate_mipmaps(sysf.rid, key.mipmaps);
|
||||
_font_set_multichannel_signed_distance_field(sysf.rid, key.msdf);
|
||||
_font_set_multichannel_signed_distance_field(sysf.rid, fb_use_msdf);
|
||||
_font_set_msdf_pixel_range(sysf.rid, key.msdf_range);
|
||||
_font_set_msdf_size(sysf.rid, key.msdf_source_size);
|
||||
_font_set_fixed_size(sysf.rid, key.fixed_size);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue