mirror of
https://github.com/godotengine/godot.git
synced 2025-10-19 16:03:29 +00:00
Apply fix_alpha_edges for both theme icons and font glyphs.
Only apply fix_alpha_edges for SVG glyphs. Allow modulate for svg glyphs.
This commit is contained in:
parent
96cdbbe5bd
commit
70a8421c30
5 changed files with 38 additions and 6 deletions
|
@ -741,11 +741,12 @@ _FORCE_INLINE_ bool TextServerFallback::_ensure_glyph(FontFallback *p_font_data,
|
|||
} break;
|
||||
}
|
||||
|
||||
FT_GlyphSlot slot = fd->face->glyph;
|
||||
bool from_svg = (slot->format == FT_GLYPH_FORMAT_SVG); // Need to check before FT_Render_Glyph as it will change format to bitmap.
|
||||
if (!outline) {
|
||||
if (!p_font_data->msdf) {
|
||||
error = FT_Render_Glyph(fd->face->glyph, aa_mode);
|
||||
error = FT_Render_Glyph(slot, aa_mode);
|
||||
}
|
||||
FT_GlyphSlot slot = fd->face->glyph;
|
||||
if (!error) {
|
||||
if (p_font_data->msdf) {
|
||||
#ifdef MODULE_MSDFGEN_ENABLED
|
||||
|
@ -786,6 +787,7 @@ _FORCE_INLINE_ bool TextServerFallback::_ensure_glyph(FontFallback *p_font_data,
|
|||
cleanup_stroker:
|
||||
FT_Stroker_Done(stroker);
|
||||
}
|
||||
gl.from_svg = from_svg;
|
||||
E = fd->glyph_map.insert(p_glyph, gl);
|
||||
r_glyph = E->value;
|
||||
return gl.found;
|
||||
|
@ -2290,6 +2292,10 @@ RID TextServerFallback::_font_get_glyph_texture_rid(const RID &p_font_rid, const
|
|||
if (ffsd->textures[fgl.texture_idx].dirty) {
|
||||
ShelfPackTexture &tex = ffsd->textures.write[fgl.texture_idx];
|
||||
Ref<Image> img = tex.image;
|
||||
if (fgl.from_svg) {
|
||||
// Same as the "fix alpha border" process option when importing SVGs
|
||||
img->fix_alpha_edges();
|
||||
}
|
||||
if (fd->mipmaps && !img->has_mipmaps()) {
|
||||
img = tex.image->duplicate();
|
||||
img->generate_mipmaps();
|
||||
|
@ -2338,6 +2344,10 @@ Size2 TextServerFallback::_font_get_glyph_texture_size(const RID &p_font_rid, co
|
|||
if (ffsd->textures[fgl.texture_idx].dirty) {
|
||||
ShelfPackTexture &tex = ffsd->textures.write[fgl.texture_idx];
|
||||
Ref<Image> img = tex.image;
|
||||
if (fgl.from_svg) {
|
||||
// Same as the "fix alpha border" process option when importing SVGs
|
||||
img->fix_alpha_edges();
|
||||
}
|
||||
if (fd->mipmaps && !img->has_mipmaps()) {
|
||||
img = tex.image->duplicate();
|
||||
img->generate_mipmaps();
|
||||
|
@ -2729,7 +2739,7 @@ void TextServerFallback::_font_draw_glyph(const RID &p_font_rid, const RID &p_ca
|
|||
if (fgl.texture_idx != -1) {
|
||||
Color modulate = p_color;
|
||||
#ifdef MODULE_FREETYPE_ENABLED
|
||||
if (ffsd->face && ffsd->textures[fgl.texture_idx].image.is_valid() && (ffsd->textures[fgl.texture_idx].image->get_format() == Image::FORMAT_RGBA8) && !lcd_aa && !fd->msdf) {
|
||||
if (!fgl.from_svg && ffsd->face && ffsd->textures[fgl.texture_idx].image.is_valid() && (ffsd->textures[fgl.texture_idx].image->get_format() == Image::FORMAT_RGBA8) && !lcd_aa && !fd->msdf) {
|
||||
modulate.r = modulate.g = modulate.b = 1.0;
|
||||
}
|
||||
#endif
|
||||
|
@ -2737,6 +2747,10 @@ void TextServerFallback::_font_draw_glyph(const RID &p_font_rid, const RID &p_ca
|
|||
if (ffsd->textures[fgl.texture_idx].dirty) {
|
||||
ShelfPackTexture &tex = ffsd->textures.write[fgl.texture_idx];
|
||||
Ref<Image> img = tex.image;
|
||||
if (fgl.from_svg) {
|
||||
// Same as the "fix alpha border" process option when importing SVGs
|
||||
img->fix_alpha_edges();
|
||||
}
|
||||
if (fd->mipmaps && !img->has_mipmaps()) {
|
||||
img = tex.image->duplicate();
|
||||
img->generate_mipmaps();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue