You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-15 13:51:40 +00:00
Add font LCD sub-pixel anti-aliasing support.
This commit is contained in:
@@ -576,7 +576,7 @@ _FORCE_INLINE_ void FontFile::_ensure_rid(int p_cache_index) const {
|
||||
if (unlikely(!cache[p_cache_index].is_valid())) {
|
||||
cache.write[p_cache_index] = TS->create_font();
|
||||
TS->font_set_data_ptr(cache[p_cache_index], data_ptr, data_size);
|
||||
TS->font_set_antialiased(cache[p_cache_index], antialiased);
|
||||
TS->font_set_antialiasing(cache[p_cache_index], antialiasing);
|
||||
TS->font_set_generate_mipmaps(cache[p_cache_index], mipmaps);
|
||||
TS->font_set_multichannel_signed_distance_field(cache[p_cache_index], msdf);
|
||||
TS->font_set_msdf_pixel_range(cache[p_cache_index], msdf_pixel_range);
|
||||
@@ -875,8 +875,8 @@ void FontFile::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("set_font_style_name", "name"), &FontFile::set_font_style_name);
|
||||
ClassDB::bind_method(D_METHOD("set_font_style", "style"), &FontFile::set_font_style);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_antialiased", "antialiased"), &FontFile::set_antialiased);
|
||||
ClassDB::bind_method(D_METHOD("is_antialiased"), &FontFile::is_antialiased);
|
||||
ClassDB::bind_method(D_METHOD("set_antialiasing", "antialiasing"), &FontFile::set_antialiasing);
|
||||
ClassDB::bind_method(D_METHOD("get_antialiasing"), &FontFile::get_antialiasing);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_generate_mipmaps", "generate_mipmaps"), &FontFile::set_generate_mipmaps);
|
||||
ClassDB::bind_method(D_METHOD("get_generate_mipmaps"), &FontFile::get_generate_mipmaps);
|
||||
@@ -996,7 +996,7 @@ void FontFile::_bind_methods() {
|
||||
|
||||
ADD_PROPERTY(PropertyInfo(Variant::PACKED_BYTE_ARRAY, "data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE), "set_data", "get_data");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "generate_mipmaps", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE), "set_generate_mipmaps", "get_generate_mipmaps");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "antialiased", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE), "set_antialiased", "is_antialiased");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "antialiasing", PROPERTY_HINT_ENUM, "None,Grayscale,LCD sub-pixel", PROPERTY_USAGE_STORAGE), "set_antialiasing", "get_antialiasing");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::STRING, "font_name", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE), "set_font_name", "get_font_name");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::STRING, "style_name", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE), "set_font_style_name", "get_font_style_name");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "font_style", PROPERTY_HINT_FLAGS, "Bold,Italic,Fixed Size", PROPERTY_USAGE_STORAGE), "set_font_style", "get_font_style");
|
||||
@@ -1318,7 +1318,7 @@ void FontFile::reset_state() {
|
||||
data_size = 0;
|
||||
cache.clear();
|
||||
|
||||
antialiased = true;
|
||||
antialiasing = TextServer::FONT_ANTIALIASING_GRAY;
|
||||
mipmaps = false;
|
||||
msdf = false;
|
||||
force_autohinter = false;
|
||||
@@ -1337,7 +1337,7 @@ void FontFile::reset_state() {
|
||||
Error FontFile::load_bitmap_font(const String &p_path) {
|
||||
reset_state();
|
||||
|
||||
antialiased = false;
|
||||
antialiasing = TextServer::FONT_ANTIALIASING_NONE;
|
||||
mipmaps = false;
|
||||
msdf = false;
|
||||
force_autohinter = false;
|
||||
@@ -1864,19 +1864,19 @@ void FontFile::set_font_style(BitField<TextServer::FontStyle> p_style) {
|
||||
TS->font_set_style(cache[0], p_style);
|
||||
}
|
||||
|
||||
void FontFile::set_antialiased(bool p_antialiased) {
|
||||
if (antialiased != p_antialiased) {
|
||||
antialiased = p_antialiased;
|
||||
void FontFile::set_antialiasing(TextServer::FontAntialiasing p_antialiasing) {
|
||||
if (antialiasing != p_antialiasing) {
|
||||
antialiasing = p_antialiasing;
|
||||
for (int i = 0; i < cache.size(); i++) {
|
||||
_ensure_rid(i);
|
||||
TS->font_set_antialiased(cache[i], antialiased);
|
||||
TS->font_set_antialiasing(cache[i], antialiasing);
|
||||
}
|
||||
emit_changed();
|
||||
}
|
||||
}
|
||||
|
||||
bool FontFile::is_antialiased() const {
|
||||
return antialiased;
|
||||
TextServer::FontAntialiasing FontFile::get_antialiasing() const {
|
||||
return antialiasing;
|
||||
}
|
||||
|
||||
void FontFile::set_generate_mipmaps(bool p_generate_mipmaps) {
|
||||
@@ -2699,8 +2699,8 @@ FontVariation::~FontVariation() {
|
||||
/*************************************************************************/
|
||||
|
||||
void SystemFont::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("set_antialiased", "antialiased"), &SystemFont::set_antialiased);
|
||||
ClassDB::bind_method(D_METHOD("is_antialiased"), &SystemFont::is_antialiased);
|
||||
ClassDB::bind_method(D_METHOD("set_antialiasing", "antialiasing"), &SystemFont::set_antialiasing);
|
||||
ClassDB::bind_method(D_METHOD("get_antialiasing"), &SystemFont::get_antialiasing);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_generate_mipmaps", "generate_mipmaps"), &SystemFont::set_generate_mipmaps);
|
||||
ClassDB::bind_method(D_METHOD("get_generate_mipmaps"), &SystemFont::get_generate_mipmaps);
|
||||
@@ -2727,7 +2727,7 @@ void SystemFont::_bind_methods() {
|
||||
|
||||
ADD_PROPERTY(PropertyInfo(Variant::PACKED_STRING_ARRAY, "font_names"), "set_font_names", "get_font_names");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "font_style", PROPERTY_HINT_FLAGS, "Bold,Italic"), "set_font_style", "get_font_style");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "antialiased"), "set_antialiased", "is_antialiased");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "antialiasing", PROPERTY_HINT_ENUM, "None,Grayscale,LCD sub-pixel", PROPERTY_USAGE_STORAGE), "set_antialiasing", "get_antialiasing");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "generate_mipmaps"), "set_generate_mipmaps", "get_generate_mipmaps");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "force_autohinter"), "set_force_autohinter", "is_force_autohinter");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "hinting", PROPERTY_HINT_ENUM, "None,Light,Normal"), "set_hinting", "get_hinting");
|
||||
@@ -2804,7 +2804,7 @@ void SystemFont::_update_base_font() {
|
||||
}
|
||||
|
||||
// Apply font rendering settings.
|
||||
file->set_antialiased(antialiased);
|
||||
file->set_antialiasing(antialiasing);
|
||||
file->set_generate_mipmaps(mipmaps);
|
||||
file->set_force_autohinter(force_autohinter);
|
||||
file->set_hinting(hinting);
|
||||
@@ -2841,7 +2841,7 @@ void SystemFont::reset_state() {
|
||||
ftr_weight = 0;
|
||||
ftr_italic = 0;
|
||||
style = 0;
|
||||
antialiased = true;
|
||||
antialiasing = TextServer::FONT_ANTIALIASING_GRAY;
|
||||
mipmaps = false;
|
||||
force_autohinter = false;
|
||||
hinting = TextServer::HINTING_LIGHT;
|
||||
@@ -2907,18 +2907,18 @@ Ref<Font> SystemFont::_get_base_font_or_default() const {
|
||||
return Ref<Font>();
|
||||
}
|
||||
|
||||
void SystemFont::set_antialiased(bool p_antialiased) {
|
||||
if (antialiased != p_antialiased) {
|
||||
antialiased = p_antialiased;
|
||||
void SystemFont::set_antialiasing(TextServer::FontAntialiasing p_antialiasing) {
|
||||
if (antialiasing != p_antialiasing) {
|
||||
antialiasing = p_antialiasing;
|
||||
if (base_font.is_valid()) {
|
||||
base_font->set_antialiased(antialiased);
|
||||
base_font->set_antialiasing(antialiasing);
|
||||
}
|
||||
emit_changed();
|
||||
}
|
||||
}
|
||||
|
||||
bool SystemFont::is_antialiased() const {
|
||||
return antialiased;
|
||||
TextServer::FontAntialiasing SystemFont::get_antialiasing() const {
|
||||
return antialiasing;
|
||||
}
|
||||
|
||||
void SystemFont::set_generate_mipmaps(bool p_generate_mipmaps) {
|
||||
|
||||
Reference in New Issue
Block a user