diff --git a/data/fontdata.json b/data/fontdata.json index 7b64e1b8f29d3..74c42c456a609 100644 --- a/data/fontdata.json +++ b/data/fontdata.json @@ -1,15 +1,16 @@ { - "fontblending": false, - "fontwidth": 8, - "fontheight": 16, - "fontsize": 16, - "typeface": "unifont", - "map_fontwidth": 8, - "map_fontheight": 16, - "map_fontsize": 16, - "map_typeface": "unifont", - "overmap_fontwidth": 8, - "overmap_fontheight": 16, - "overmap_fontsize": 16, - "overmap_typeface": "unifont" + "//1": "If more than one font is specified for a typeface the list is treated as a fallback order.", + "//2": "unifont will always be used as a 'last resort' fallback even if not listed here.", + "typeface": [ + "Terminus", + "unifont" + ], + "map_typeface": [ + "Terminus", + "unifont" + ], + "overmap_typeface": [ + "Terminus", + "unifont" + ] } diff --git a/src/font_loader.h b/src/font_loader.h index 2f36ebb58957f..817b28f804cbf 100644 --- a/src/font_loader.h +++ b/src/font_loader.h @@ -2,6 +2,7 @@ #ifndef FONT_LOADER_H #define FONT_LOADER_H +#include #include #include #include @@ -51,6 +52,17 @@ class font_loader } else { config.read( "overmap_typeface", overmap_typeface ); } + + // Ensure that unifont is always loaded as a fallback font to prevent users from shooting themselves in the foot + auto ensure_unifont_loaded = []( std::vector &font_list ) { + if( std::find( std::begin( font_list ), std::end( font_list ), "unifont" ) == font_list.end() ) { + font_list.emplace_back( "unifont" ); + } + }; + ensure_unifont_loaded( typeface ); + ensure_unifont_loaded( map_typeface ); + ensure_unifont_loaded( overmap_typeface ); + } catch( const std::exception &err ) { throw std::runtime_error( std::string( "loading font settings from " ) + path + " failed: " + err.what() ); diff --git a/src/options.cpp b/src/options.cpp index 805dcaaade941..351eaa3ec6636 100644 --- a/src/options.cpp +++ b/src/options.cpp @@ -1681,7 +1681,7 @@ void options_manager::add_options_graphics() add( "MAP_FONT_WIDTH", "graphics", translate_marker( "Map font width" ), translate_marker( "Set the map font width. Requires restart." ), - 8, 100, 8, COPT_CURSES_HIDE + 8, 100, 16, COPT_CURSES_HIDE ); add( "MAP_FONT_HEIGHT", "graphics", translate_marker( "Map font height" ), @@ -1696,7 +1696,7 @@ void options_manager::add_options_graphics() add( "OVERMAP_FONT_WIDTH", "graphics", translate_marker( "Overmap font width" ), translate_marker( "Set the overmap font width. Requires restart." ), - 8, 100, 8, COPT_CURSES_HIDE + 8, 100, 16, COPT_CURSES_HIDE ); add( "OVERMAP_FONT_HEIGHT", "graphics", translate_marker( "Overmap font height" ),