diff options
author | Hal Canary <halcanary@google.com> | 2018-02-28 14:10:42 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-02-28 19:52:43 +0000 |
commit | 691fd1bcdd2cbe95f6993db52bd4854984beacdf (patch) | |
tree | 0b7a5bcc551fd66f2a7cca9418e8dab061b96965 /tests/PDFDocumentTest.cpp | |
parent | 691f5e7890a15165fd6273bdacf750ccb309fc8b (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.cpp | 27 |
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); + } + } +} |