aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/PDFDocumentTest.cpp
diff options
context:
space:
mode:
authorGravatar Hal Canary <halcanary@google.com>2018-02-28 14:10:42 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-02-28 19:52:43 +0000
commit691fd1bcdd2cbe95f6993db52bd4854984beacdf (patch)
tree0b7a5bcc551fd66f2a7cca9418e8dab061b96965 /tests/PDFDocumentTest.cpp
parent691f5e7890a15165fd6273bdacf750ccb309fc8b (diff)
SkPDF: encode metadata strings correctly
BUG=skia:7669 Change-Id: I3a90a2406854cc9bcfdd299e09ae3d6e610f2cc7 Reviewed-on: https://skia-review.googlesource.com/111121 Reviewed-by: Ben Wagner <bungeman@google.com> Commit-Queue: Hal Canary <halcanary@google.com>
Diffstat (limited to 'tests/PDFDocumentTest.cpp')
-rw-r--r--tests/PDFDocumentTest.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/PDFDocumentTest.cpp b/tests/PDFDocumentTest.cpp
index c88012291c..b7ca806022 100644
--- a/tests/PDFDocumentTest.cpp
+++ b/tests/PDFDocumentTest.cpp
@@ -195,3 +195,30 @@ DEF_TEST(SkPDF_pdfa_document, r) {
}
}
}
+
+
+DEF_TEST(SkPDF_unicode_metadata, r) {
+ REQUIRE_PDF_DOCUMENT(SkPDF_unicode_metadata, r);
+ SkDocument::PDFMetadata pdfMetadata;
+ pdfMetadata.fTitle = "𝓐𝓑𝓒𝓓𝓔 π“•π“–π“—π“˜π“™"; // Out of basic multilingual plane
+ pdfMetadata.fAuthor = "ABCDE FGHIJ"; // ASCII
+ pdfMetadata.fSubject = "αβγδΡ ΢ηθικ"; // inside basic multilingual plane
+ pdfMetadata.fPDFA = true;
+ SkDynamicMemoryWStream wStream;
+ {
+ auto doc = SkDocument::MakePDF(&wStream, pdfMetadata);
+ doc->beginPage(612, 792)->drawColor(SK_ColorCYAN);
+ }
+ sk_sp<SkData> data(wStream.detachAsData());
+ static const char* expectations[] = {
+ "<</Title <FEFFD835DCD0D835DCD1D835DCD2D835DCD3D835DCD40020"
+ "D835DCD5D835DCD6D835DCD7D835DCD8D835DCD9>",
+ "/Author (ABCDE FGHIJ)",
+ "Subject <FEFF03B103B203B303B403B5002003B603B703B803B903BA>",
+ };
+ for (const char* expectation : expectations) {
+ if (!contains(data->bytes(), data->size(), expectation)) {
+ ERRORF(r, "PDF expectation missing: '%s'.", expectation);
+ }
+ }
+}