summaryrefslogtreecommitdiff
path: root/dviware/dvisvgm/src/FontManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'dviware/dvisvgm/src/FontManager.cpp')
-rw-r--r--dviware/dvisvgm/src/FontManager.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/dviware/dvisvgm/src/FontManager.cpp b/dviware/dvisvgm/src/FontManager.cpp
index 2262346c60..e85a9dc528 100644
--- a/dviware/dvisvgm/src/FontManager.cpp
+++ b/dviware/dvisvgm/src/FontManager.cpp
@@ -145,7 +145,7 @@ const VirtualFont* FontManager::getVF () const {
static unique_ptr<Font> create_font (const string &filename, const string &fontname, int fontindex, uint32_t checksum, double dsize, double ssize) {
string ext;
if (const char *dot = strrchr(filename.c_str(), '.'))
- ext = dot+1;
+ ext = util::tolower(dot+1);
if (!ext.empty() && FileFinder::instance().lookup(filename)) {
if (ext == "pfb")
return PhysicalFont::create(fontname, checksum, dsize, ssize, PhysicalFont::Type::PFB);
@@ -271,8 +271,13 @@ int FontManager::registerFont (uint32_t fontnum, string filename, int fontIndex,
newfont = font->clone(ptsize, style, color);
}
else {
- if (!FileSystem::exists(path))
- path = FileFinder::instance().lookup(filename, false);
+ if (!FileSystem::exists(path)) {
+ const char *fontFormats[] = {nullptr, "otf", "ttf"};
+ for (const char *format : fontFormats) {
+ if ((path = FileFinder::instance().lookup(filename, format, false)) != nullptr)
+ break;
+ }
+ }
if (path) {
newfont.reset(new NativeFontImpl(path, fontIndex, ptsize, style, color));
newfont->findAndAssignBaseFontMap();