Explorar o código

LibPDF: Separate Type0 CMap errors

No behavior change, just more granular "not implemented" diagnostics.
Nico Weber hai 1 ano
pai
achega
ddbcd901d1
Modificáronse 1 ficheiros con 7 adicións e 2 borrados
  1. 7 2
      Userland/Libraries/LibPDF/Fonts/Type0Font.cpp

+ 7 - 2
Userland/Libraries/LibPDF/Fonts/Type0Font.cpp

@@ -142,8 +142,13 @@ PDFErrorOr<void> Type0Font::initialize(Document* document, NonnullRefPtr<DictObj
 
     // FIXME: Support arbitrary CMaps
     auto cmap_value = TRY(dict->get_object(document, CommonNames::Encoding));
-    if (!cmap_value->is<NameObject>() || cmap_value->cast<NameObject>()->name() != CommonNames::IdentityH)
-        return Error::rendering_unsupported_error("Type0 font: support for general Encodings not yet implemented");
+    if (!cmap_value->is<NameObject>())
+        return Error::rendering_unsupported_error("Type0 font: support for general type 0 cmaps not yet implemented");
+
+    auto cmap_name = cmap_value->cast<NameObject>()->name();
+    if (cmap_name != CommonNames::IdentityH) {
+        return Error::rendering_unsupported_error("Type0 font: unimplemented named type 0 cmap {}", cmap_name);
+    }
 
     auto descendant_font_value = TRY(dict->get_array(document, CommonNames::DescendantFonts));
     auto descendant_font = TRY(descendant_font_value->get_dict_at(document, 0));