瀏覽代碼

LibGfx: Try to get TTF font when query is not in name->font map

This change allows us to select TTF fonts in display settings again :^)
LuK1337 4 年之前
父節點
當前提交
c0f9adabd6
共有 1 個文件被更改,包括 8 次插入0 次删除
  1. 8 0
      Userland/Libraries/LibGfx/FontDatabase.cpp

+ 8 - 0
Userland/Libraries/LibGfx/FontDatabase.cpp

@@ -140,6 +140,13 @@ RefPtr<Gfx::Font> FontDatabase::get_by_name(const StringView& name)
 {
 {
     auto it = m_private->full_name_to_font_map.find(name);
     auto it = m_private->full_name_to_font_map.find(name);
     if (it == m_private->full_name_to_font_map.end()) {
     if (it == m_private->full_name_to_font_map.end()) {
+        auto parts = name.split_view(" "sv);
+        if (parts.size() >= 3) {
+            auto weight = parts.take_last().to_int().value_or(0);
+            auto size = parts.take_last().to_int().value_or(0);
+            auto family = String::join(' ', parts);
+            return get(family, size, weight);
+        }
         dbgln("Font lookup failed: '{}'", name);
         dbgln("Font lookup failed: '{}'", name);
         return nullptr;
         return nullptr;
     }
     }
@@ -152,6 +159,7 @@ RefPtr<Gfx::Font> FontDatabase::get(const String& family, unsigned size, unsigne
         if (typeface->family() == family && typeface->weight() == weight)
         if (typeface->family() == family && typeface->weight() == weight)
             return typeface->get_font(size);
             return typeface->get_font(size);
     }
     }
+    dbgln("Failed to get font: '{} {} {}'", family, size, weight);
     return nullptr;
     return nullptr;
 }
 }