diff --git a/src/app/font_path.cpp b/src/app/font_path.cpp index 53c8ee1d0..ebe52b692 100644 --- a/src/app/font_path.cpp +++ b/src/app/font_path.cpp @@ -14,12 +14,16 @@ namespace app { -std::string find_font(const std::string& filename) +std::string find_font(const std::string& firstDir, + const std::string& filename) { + std::string fn = base::join_path(firstDir, filename); + if (base::is_file(fn)) + return fn; + std::vector fontDirs; get_font_dirs(fontDirs); - std::string fn; for (const std::string& dir : fontDirs) { fn = base::join_path(dir, filename); if (base::is_file(fn)) diff --git a/src/app/font_path.h b/src/app/font_path.h index c240eeb10..33f2b6af3 100644 --- a/src/app/font_path.h +++ b/src/app/font_path.h @@ -14,7 +14,8 @@ namespace app { void get_font_dirs(std::vector& fontDirs); - std::string find_font(const std::string& filename); + std::string find_font(const std::string& firstDir, + const std::string& filename); } // namespace app diff --git a/src/app/ui/skin/skin_theme.cpp b/src/app/ui/skin/skin_theme.cpp index 2f3325e89..3f6b94de8 100644 --- a/src/app/ui/skin/skin_theme.cpp +++ b/src/app/ui/skin/skin_theme.cpp @@ -107,16 +107,14 @@ static FontData* load_font(std::map& fonts, xmlFilename.c_str()); std::string type(typeStr); + std::string xmlDir(base::get_file_path(xmlFilename)); base::UniquePtr font(nullptr); if (type == "spritesheet") { const char* fileStr = xmlFont->Attribute("file"); if (fileStr) { font.reset(new FontData(she::FontType::kSpriteSheet)); - font->setFilename( - base::join_path( - base::get_file_path(xmlFilename), - fileStr)); + font->setFilename(base::join_path(xmlDir, fileStr)); } } else if (type == "truetype") { @@ -138,9 +136,9 @@ static FontData* load_font(std::map& fonts, std::string fontFilename; if (platformFileStr) - fontFilename = app::find_font(platformFileStr); + fontFilename = app::find_font(xmlDir, platformFileStr); if (fileStr && fontFilename.empty()) - fontFilename = app::find_font(fileStr); + fontFilename = app::find_font(xmlDir, fileStr); // The filename can be empty if the font was not found, anyway we // want to keep the font information (e.g. to use the fallback