summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Offenhäuser <metalvoidzz@gmail.com>2022-08-19 19:42:07 +0200
committerSam Atkins <atkinssj@gmail.com>2022-09-17 10:07:14 +0100
commit36828f1385c37d8639fc25b4de1f2153e76d465d (patch)
treeea3990627cf8945e6a9cef22f79dc0ac113f8e72
parent97ed4106e5203ffd6b5806ba58a94c9b6ca69504 (diff)
downloadserenity-36828f1385c37d8639fc25b4de1f2153e76d465d.zip
LibPDF: Don't expect glyph width arrays to contain integers
They might also contain floats, in which case we convert them to int before use.
-rw-r--r--Userland/Libraries/LibPDF/Fonts/Type0Font.cpp10
-rw-r--r--Userland/Libraries/LibPDF/Fonts/Type1Font.cpp4
2 files changed, 7 insertions, 7 deletions
diff --git a/Userland/Libraries/LibPDF/Fonts/Type0Font.cpp b/Userland/Libraries/LibPDF/Fonts/Type0Font.cpp
index d7921a74d6..dbebb02610 100644
--- a/Userland/Libraries/LibPDF/Fonts/Type0Font.cpp
+++ b/Userland/Libraries/LibPDF/Fonts/Type0Font.cpp
@@ -29,7 +29,7 @@ PDFErrorOr<NonnullRefPtr<Type0Font>> Type0Font::create(Document* document, Nonnu
u16 default_width = 1000;
if (descendant_font->contains(CommonNames::DW))
- default_width = descendant_font->get_value(CommonNames::DW).get<int>();
+ default_width = descendant_font->get_value(CommonNames::DW).to_int();
HashMap<u16, u16> widths;
@@ -40,16 +40,16 @@ PDFErrorOr<NonnullRefPtr<Type0Font>> Type0Font::create(Document* document, Nonnu
for (size_t i = 0; i < widths_array->size(); i++) {
auto& value = widths_array->at(i);
if (!pending_code.has_value()) {
- pending_code = value.get<int>();
+ pending_code = value.to_int();
} else if (value.has<NonnullRefPtr<Object>>()) {
auto array = value.get<NonnullRefPtr<Object>>()->cast<ArrayObject>();
auto code = pending_code.release_value();
for (auto& width : *array)
- widths.set(code++, width.get<int>());
+ widths.set(code++, width.to_int());
} else {
auto first_code = pending_code.release_value();
- auto last_code = value.get<int>();
- auto width = widths_array->at(i + 1).get<int>();
+ auto last_code = value.to_int();
+ auto width = widths_array->at(i + 1).to_int();
for (u16 code = first_code; code <= last_code; code++)
widths.set(code, width);
diff --git a/Userland/Libraries/LibPDF/Fonts/Type1Font.cpp b/Userland/Libraries/LibPDF/Fonts/Type1Font.cpp
index d44de2f968..cd95238182 100644
--- a/Userland/Libraries/LibPDF/Fonts/Type1Font.cpp
+++ b/Userland/Libraries/LibPDF/Fonts/Type1Font.cpp
@@ -61,12 +61,12 @@ PDFErrorOr<Type1Font::Data> Type1Font::parse_data(Document* document, NonnullRef
HashMap<u16, u16> widths;
for (size_t i = 0; i < widths_array->size(); i++)
- widths.set(first_char + i, widths_array->at(i).get<int>());
+ widths.set(first_char + i, widths_array->at(i).to_int());
u16 missing_width = 0;
auto descriptor = MUST(dict->get_dict(document, CommonNames::FontDescriptor));
if (descriptor->contains(CommonNames::MissingWidth))
- missing_width = descriptor->get_value(CommonNames::MissingWidth).get<int>();
+ missing_width = descriptor->get_value(CommonNames::MissingWidth).to_int();
return Type1Font::Data { to_unicode, encoding.release_nonnull(), move(widths), missing_width };
}