Fallback to default font if main/code font path doesn't exist

This commit is contained in:
Alexander-Alekseev 2018-07-03 13:37:07 +00:00
parent 04d9f8dbd6
commit 38887d1a52

View file

@ -31,6 +31,7 @@
#include "editor_fonts.h" #include "editor_fonts.h"
#include "builtin_fonts.gen.h" #include "builtin_fonts.gen.h"
#include "core/os/dir_access.h"
#include "editor_scale.h" #include "editor_scale.h"
#include "editor_settings.h" #include "editor_settings.h"
#include "scene/resources/default_theme/default_theme.h" #include "scene/resources/default_theme/default_theme.h"
@ -114,28 +115,34 @@ static Ref<BitmapFont> make_font(int p_height, int p_ascent, int p_valign, int p
MAKE_FALLBACKS(m_name); MAKE_FALLBACKS(m_name);
void editor_register_fonts(Ref<Theme> p_theme) { void editor_register_fonts(Ref<Theme> p_theme) {
DirAccess *dir = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
/* Custom font */ /* Custom font */
DynamicFontData::Hinting font_hinting = (DynamicFontData::Hinting)(int)EditorSettings::get_singleton()->get("interface/editor/main_font_hinting"); DynamicFontData::Hinting font_hinting = (DynamicFontData::Hinting)(int)EditorSettings::get_singleton()->get("interface/editor/main_font_hinting");
String custom_font_path = EditorSettings::get_singleton()->get("interface/editor/main_font"); String custom_font_path = EditorSettings::get_singleton()->get("interface/editor/main_font");
Ref<DynamicFontData> CustomFont; Ref<DynamicFontData> CustomFont;
if (custom_font_path.length() > 0) { if (custom_font_path.length() > 0 && dir->file_exists(custom_font_path)) {
CustomFont.instance(); CustomFont.instance();
CustomFont->set_hinting(font_hinting); CustomFont->set_hinting(font_hinting);
CustomFont->set_font_path(custom_font_path); CustomFont->set_font_path(custom_font_path);
CustomFont->set_force_autohinter(true); //just looks better..i think? CustomFont->set_force_autohinter(true); //just looks better..i think?
} else {
EditorSettings::get_singleton()->set_manually("interface/editor/main_font", "");
} }
/* Custom Bold font */ /* Custom Bold font */
String custom_font_path_bold = EditorSettings::get_singleton()->get("interface/editor/main_font_bold"); String custom_font_path_bold = EditorSettings::get_singleton()->get("interface/editor/main_font_bold");
Ref<DynamicFontData> CustomFontBold; Ref<DynamicFontData> CustomFontBold;
if (custom_font_path_bold.length() > 0) { if (custom_font_path_bold.length() > 0 && dir->file_exists(custom_font_path_bold)) {
CustomFontBold.instance(); CustomFontBold.instance();
CustomFontBold->set_hinting(font_hinting); CustomFontBold->set_hinting(font_hinting);
CustomFontBold->set_font_path(custom_font_path_bold); CustomFontBold->set_font_path(custom_font_path_bold);
CustomFontBold->set_force_autohinter(true); //just looks better..i think? CustomFontBold->set_force_autohinter(true); //just looks better..i think?
} else {
EditorSettings::get_singleton()->set_manually("interface/editor/main_font_bold", "");
} }
/* Custom source code font */ /* Custom source code font */
@ -143,12 +150,16 @@ void editor_register_fonts(Ref<Theme> p_theme) {
String custom_font_path_source = EditorSettings::get_singleton()->get("interface/editor/code_font"); String custom_font_path_source = EditorSettings::get_singleton()->get("interface/editor/code_font");
DynamicFontData::Hinting font_source_hinting = (DynamicFontData::Hinting)(int)EditorSettings::get_singleton()->get("interface/editor/code_font_hinting"); DynamicFontData::Hinting font_source_hinting = (DynamicFontData::Hinting)(int)EditorSettings::get_singleton()->get("interface/editor/code_font_hinting");
Ref<DynamicFontData> CustomFontSource; Ref<DynamicFontData> CustomFontSource;
if (custom_font_path_source.length() > 0) { if (custom_font_path_source.length() > 0 && dir->file_exists(custom_font_path_source)) {
CustomFontSource.instance(); CustomFontSource.instance();
CustomFontSource->set_hinting(font_source_hinting); CustomFontSource->set_hinting(font_source_hinting);
CustomFontSource->set_font_path(custom_font_path_source); CustomFontSource->set_font_path(custom_font_path_source);
} else {
EditorSettings::get_singleton()->set_manually("interface/editor/code_font", "");
} }
memdelete(dir);
/* Droid Sans */ /* Droid Sans */
Ref<DynamicFontData> DefaultFont; Ref<DynamicFontData> DefaultFont;