Quellcode durchsuchen

LibPDF: Use more appropriate standard 14 replacement fonts

The mapping of standard font to replacement now looks like this:

Times New Roman -> Liberation Serif
Courier -> Liberation Mono
Helvetica, Arial -> Liberation Sans
Julian Offenhäuser vor 2 Jahren
Ursprung
Commit
152a8c5c43
1 geänderte Dateien mit 12 neuen und 3 gelöschten Zeilen
  1. 12 3
      Userland/Libraries/LibPDF/Fonts/PDFFont.cpp

+ 12 - 3
Userland/Libraries/LibPDF/Fonts/PDFFont.cpp

@@ -89,8 +89,17 @@ PDFErrorOr<NonnullRefPtr<PDFFont>> PDFFont::create(Document* document, NonnullRe
 
 Tuple<DeprecatedString, DeprecatedString> PDFFont::replacement_for_standard_latin_font(StringView name)
 {
-    bool is_bold = name.contains("bold"sv);
-    bool is_italic = name.contains("italic"sv);
+    bool is_bold = name.contains("bold"sv, CaseSensitivity::CaseInsensitive);
+    bool is_italic = name.contains("italic"sv, CaseSensitivity::CaseInsensitive);
+
+    DeprecatedString font_family;
+    if (name.contains("times"sv, CaseSensitivity::CaseInsensitive)) {
+        font_family = "Liberation Serif";
+    } else if (name.contains("courier"sv, CaseSensitivity::CaseInsensitive)) {
+        font_family = "Liberation Mono";
+    } else {
+        font_family = "Liberation Sans";
+    }
 
     DeprecatedString font_variant;
 
@@ -104,7 +113,7 @@ Tuple<DeprecatedString, DeprecatedString> PDFFont::replacement_for_standard_lati
         font_variant = "Regular";
     }
 
-    return { "Liberation Serif", font_variant };
+    return { font_family, font_variant };
 }
 
 }