Merge pull request #52052 from Calinou/dynamicfont-allow-woff
Allow using WOFF fonts in DynamicFont
This commit is contained in:
commit
f5e83e7305
|
@ -4,8 +4,8 @@
|
||||||
DynamicFont renders vector font files at runtime.
|
DynamicFont renders vector font files at runtime.
|
||||||
</brief_description>
|
</brief_description>
|
||||||
<description>
|
<description>
|
||||||
DynamicFont renders vector font files (such as TTF or OTF) dynamically at runtime instead of using a prerendered texture atlas like [BitmapFont]. This trades the faster loading time of [BitmapFont]s for the ability to change font parameters like size and spacing during runtime. [DynamicFontData] is used for referencing the font file paths. DynamicFont also supports defining one or more fallback fonts, which will be used when displaying a character not supported by the main font.
|
DynamicFont renders vector font files dynamically at runtime instead of using a prerendered texture atlas like [BitmapFont]. This trades the faster loading time of [BitmapFont]s for the ability to change font parameters like size and spacing during runtime. [DynamicFontData] is used for referencing the font file paths. DynamicFont also supports defining one or more fallback fonts, which will be used when displaying a character not supported by the main font.
|
||||||
DynamicFont uses the [url=https://www.freetype.org/]FreeType[/url] library for rasterization.
|
DynamicFont uses the [url=https://www.freetype.org/]FreeType[/url] library for rasterization. Supported formats are TrueType ([code].ttf[/code]), OpenType ([code].otf[/code]) and Web Open Font Format 1 ([code].woff[/code]). Web Open Font Format 2 ([code].woff2[/code]) is [i]not[/i] supported.
|
||||||
[codeblock]
|
[codeblock]
|
||||||
var dynamic_font = DynamicFont.new()
|
var dynamic_font = DynamicFont.new()
|
||||||
dynamic_font.font_data = load("res://BarlowCondensed-Bold.ttf")
|
dynamic_font.font_data = load("res://BarlowCondensed-Bold.ttf")
|
||||||
|
|
|
@ -325,11 +325,11 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
|
||||||
hints["interface/editor/font_hinting"] = PropertyInfo(Variant::INT, "interface/editor/font_hinting", PROPERTY_HINT_ENUM, "Auto (Light),None,Light,Normal", PROPERTY_USAGE_DEFAULT);
|
hints["interface/editor/font_hinting"] = PropertyInfo(Variant::INT, "interface/editor/font_hinting", PROPERTY_HINT_ENUM, "Auto (Light),None,Light,Normal", PROPERTY_USAGE_DEFAULT);
|
||||||
#endif
|
#endif
|
||||||
_initial_set("interface/editor/main_font", "");
|
_initial_set("interface/editor/main_font", "");
|
||||||
hints["interface/editor/main_font"] = PropertyInfo(Variant::STRING, "interface/editor/main_font", PROPERTY_HINT_GLOBAL_FILE, "*.ttf,*.otf", PROPERTY_USAGE_DEFAULT);
|
hints["interface/editor/main_font"] = PropertyInfo(Variant::STRING, "interface/editor/main_font", PROPERTY_HINT_GLOBAL_FILE, "*.ttf,*.otf,*.woff", PROPERTY_USAGE_DEFAULT);
|
||||||
_initial_set("interface/editor/main_font_bold", "");
|
_initial_set("interface/editor/main_font_bold", "");
|
||||||
hints["interface/editor/main_font_bold"] = PropertyInfo(Variant::STRING, "interface/editor/main_font_bold", PROPERTY_HINT_GLOBAL_FILE, "*.ttf,*.otf", PROPERTY_USAGE_DEFAULT);
|
hints["interface/editor/main_font_bold"] = PropertyInfo(Variant::STRING, "interface/editor/main_font_bold", PROPERTY_HINT_GLOBAL_FILE, "*.ttf,*.otf,*.woff", PROPERTY_USAGE_DEFAULT);
|
||||||
_initial_set("interface/editor/code_font", "");
|
_initial_set("interface/editor/code_font", "");
|
||||||
hints["interface/editor/code_font"] = PropertyInfo(Variant::STRING, "interface/editor/code_font", PROPERTY_HINT_GLOBAL_FILE, "*.ttf,*.otf", PROPERTY_USAGE_DEFAULT);
|
hints["interface/editor/code_font"] = PropertyInfo(Variant::STRING, "interface/editor/code_font", PROPERTY_HINT_GLOBAL_FILE, "*.ttf,*.otf,*.woff", PROPERTY_USAGE_DEFAULT);
|
||||||
_initial_set("interface/editor/dim_editor_on_dialog_popup", true);
|
_initial_set("interface/editor/dim_editor_on_dialog_popup", true);
|
||||||
_initial_set("interface/editor/low_processor_mode_sleep_usec", 6900); // ~144 FPS
|
_initial_set("interface/editor/low_processor_mode_sleep_usec", 6900); // ~144 FPS
|
||||||
hints["interface/editor/low_processor_mode_sleep_usec"] = PropertyInfo(Variant::REAL, "interface/editor/low_processor_mode_sleep_usec", PROPERTY_HINT_RANGE, "1,100000,1", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED);
|
hints["interface/editor/low_processor_mode_sleep_usec"] = PropertyInfo(Variant::REAL, "interface/editor/low_processor_mode_sleep_usec", PROPERTY_HINT_RANGE, "1,100000,1", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED);
|
||||||
|
|
|
@ -95,7 +95,8 @@ void DynamicFontData::_bind_methods() {
|
||||||
BIND_ENUM_CONSTANT(HINTING_LIGHT);
|
BIND_ENUM_CONSTANT(HINTING_LIGHT);
|
||||||
BIND_ENUM_CONSTANT(HINTING_NORMAL);
|
BIND_ENUM_CONSTANT(HINTING_NORMAL);
|
||||||
|
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::STRING, "font_path", PROPERTY_HINT_FILE, "*.ttf,*.otf"), "set_font_path", "get_font_path");
|
// Only WOFF1 is supported as WOFF2 requires a Brotli decompression library to be linked.
|
||||||
|
ADD_PROPERTY(PropertyInfo(Variant::STRING, "font_path", PROPERTY_HINT_FILE, "*.ttf,*.otf,*.woff"), "set_font_path", "get_font_path");
|
||||||
}
|
}
|
||||||
|
|
||||||
DynamicFontData::DynamicFontData() {
|
DynamicFontData::DynamicFontData() {
|
||||||
|
@ -1137,6 +1138,8 @@ RES ResourceFormatLoaderDynamicFont::load(const String &p_path, const String &p_
|
||||||
void ResourceFormatLoaderDynamicFont::get_recognized_extensions(List<String> *p_extensions) const {
|
void ResourceFormatLoaderDynamicFont::get_recognized_extensions(List<String> *p_extensions) const {
|
||||||
p_extensions->push_back("ttf");
|
p_extensions->push_back("ttf");
|
||||||
p_extensions->push_back("otf");
|
p_extensions->push_back("otf");
|
||||||
|
// Only WOFF1 is supported as WOFF2 requires a Brotli decompression library to be linked.
|
||||||
|
p_extensions->push_back("woff");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ResourceFormatLoaderDynamicFont::handles_type(const String &p_type) const {
|
bool ResourceFormatLoaderDynamicFont::handles_type(const String &p_type) const {
|
||||||
|
@ -1145,7 +1148,7 @@ bool ResourceFormatLoaderDynamicFont::handles_type(const String &p_type) const {
|
||||||
|
|
||||||
String ResourceFormatLoaderDynamicFont::get_resource_type(const String &p_path) const {
|
String ResourceFormatLoaderDynamicFont::get_resource_type(const String &p_path) const {
|
||||||
String el = p_path.get_extension().to_lower();
|
String el = p_path.get_extension().to_lower();
|
||||||
if (el == "ttf" || el == "otf") {
|
if (el == "ttf" || el == "otf" || el == "woff") {
|
||||||
return "DynamicFontData";
|
return "DynamicFontData";
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
|
|
Loading…
Reference in New Issue