diff --git a/openpdf-core/src/main/java/org/openpdf/text/pdf/PdfSignatureAppearance.java b/openpdf-core/src/main/java/org/openpdf/text/pdf/PdfSignatureAppearance.java index 3c5a0aa37..607614e03 100644 --- a/openpdf-core/src/main/java/org/openpdf/text/pdf/PdfSignatureAppearance.java +++ b/openpdf-core/src/main/java/org/openpdf/text/pdf/PdfSignatureAppearance.java @@ -119,21 +119,50 @@ public class PdfSignatureAppearance { /** * Commands to draw a yellow question mark in a stream content */ - public static final String questionMark = "% DSUnknown\n" + "q\n" + "1 G\n" - + "1 g\n" + "0.1 0 0 0.1 9 0 cm\n" + "0 J 0 j 4 M []0 d\n" + "1 i \n" - + "0 g\n" + "313 292 m\n" + "313 404 325 453 432 529 c\n" - + "478 561 504 597 504 645 c\n" + "504 736 440 760 391 760 c\n" - + "286 760 271 681 265 626 c\n" + "265 625 l\n" + "100 625 l\n" - + "100 828 253 898 381 898 c\n" + "451 898 679 878 679 650 c\n" - + "679 555 628 499 538 435 c\n" + "488 399 467 376 467 292 c\n" - + "313 292 l\n" + "h\n" + "308 214 170 -164 re\n" + "f\n" + "0.44 G\n" - + "1.2 w\n" + "1 1 0.4 rg\n" + "287 318 m\n" - + "287 430 299 479 406 555 c\n" + "451 587 478 623 478 671 c\n" - + "478 762 414 786 365 786 c\n" + "260 786 245 707 239 652 c\n" - + "239 651 l\n" + "74 651 l\n" + "74 854 227 924 355 924 c\n" - + "425 924 653 904 653 676 c\n" + "653 581 602 525 512 461 c\n" - + "462 425 441 402 441 318 c\n" + "287 318 l\n" + "h\n" - + "282 240 170 -164 re\n" + "B\n" + "Q\n"; + public static final String questionMark = """ + % DSUnknown + q + 1 G + 1 g + 0.1 0 0 0.1 9 0 cm + 0 J 0 j 4 M []0 d + 1 i\s + 0 g + 313 292 m + 313 404 325 453 432 529 c + 478 561 504 597 504 645 c + 504 736 440 760 391 760 c + 286 760 271 681 265 626 c + 265 625 l + 100 625 l + 100 828 253 898 381 898 c + 451 898 679 878 679 650 c + 679 555 628 499 538 435 c + 488 399 467 376 467 292 c + 313 292 l + h + 308 214 170 -164 re + f + 0.44 G + 1.2 w + 1 1 0.4 rg + 287 318 m + 287 430 299 479 406 555 c + 451 587 478 623 478 671 c + 478 762 414 786 365 786 c + 260 786 245 707 239 652 c + 239 651 l + 74 651 l + 74 854 227 924 355 924 c + 425 924 653 904 653 676 c + 653 581 602 525 512 461 c + 462 425 441 402 441 318 c + 287 318 l + h + 282 240 170 -164 re + B + Q + """; private static final float TOP_SECTION = 0.3f; private static final float MARGIN = 2; private final PdfTemplate[] app = new PdfTemplate[5]; diff --git a/openpdf-core/src/main/java/org/openpdf/text/pdf/TrueTypeFontUnicode.java b/openpdf-core/src/main/java/org/openpdf/text/pdf/TrueTypeFontUnicode.java index 665646de9..331075460 100644 --- a/openpdf-core/src/main/java/org/openpdf/text/pdf/TrueTypeFontUnicode.java +++ b/openpdf-core/src/main/java/org/openpdf/text/pdf/TrueTypeFontUnicode.java @@ -265,19 +265,21 @@ private PdfStream getToUnicode(int[][] metrics) { return null; } StringBuilder buf = new StringBuilder( - "/CIDInit /ProcSet findresource begin\n" + - "12 dict begin\n" + - "begincmap\n" + - "/CIDSystemInfo\n" + - "<< /Registry (TTX+0)\n" + - "/Ordering (T42UV)\n" + - "/Supplement 0\n" + - ">> def\n" + - "/CMapName /TTX+0 def\n" + - "/CMapType 2 def\n" + - "1 begincodespacerange\n" + - "<0000>\n" + - "endcodespacerange\n"); + """ + /CIDInit /ProcSet findresource begin + 12 dict begin + begincmap + /CIDSystemInfo + << /Registry (TTX+0) + /Ordering (T42UV) + /Supplement 0 + >> def + /CMapName /TTX+0 def + /CMapType 2 def + 1 begincodespacerange + <0000> + endcodespacerange + """); int size = 0; for (int k = 0; k < metrics.length; ++k) { if (size == 0) { @@ -295,10 +297,12 @@ private PdfStream getToUnicode(int[][] metrics) { buf.append(fromTo).append(fromTo).append(hexString).append('\n'); } buf.append( - "endbfrange\n" + - "endcmap\n" + - "CMapName currentdict /CMap defineresource pop\n" + - "end end\n"); + """ + endbfrange + endcmap + CMapName currentdict /CMap defineresource pop + end end + """); String s = buf.toString(); PdfStream stream = new PdfStream(PdfEncodings.convertToBytes(s, null)); stream.flateCompress(compressionLevel); diff --git a/openpdf-core/src/test/java/org/openpdf/text/pdf/LayoutProcessor534Test.java b/openpdf-core/src/test/java/org/openpdf/text/pdf/LayoutProcessor534Test.java index fae819b81..6d3ee69c7 100644 --- a/openpdf-core/src/test/java/org/openpdf/text/pdf/LayoutProcessor534Test.java +++ b/openpdf-core/src/test/java/org/openpdf/text/pdf/LayoutProcessor534Test.java @@ -57,13 +57,14 @@ void whenLayoutRightToLeftLatinThenRevertCharOrder() throws IOException { PdfTextExtractor extractor = new PdfTextExtractor(new PdfReader(pdfOut.toByteArray())); String textFromPage = extractor.getTextFromPage(1); assertThat(textFromPage) - .isEqualTo("owTytnewt enOεytnewt ytnewt neetenin neethgie neetneves neetxis neetfif neetruof neetriht " - + "evlewt nevele net enin thgie neves xis evif ruof eerht owt eno\n" - + " evlewt nevele net enin thgie neves xis evif ruof eerht owt eno ytriht eniNytnewt thgiEytnewt " - + "neveSytnewt xiSytnewt eviFytnewt ruoFytnewt eerhTytnewt\n" - + " neveSytnewt xiSytnewt eviFytnewt ruoFytnewt eerhTytnewt owTytnewt enOεytnewt ytnewt neetenin n" - + "eethgie neetneves neetxis neetfif neetruof neetriht\n" - + " ytriht eniNytnewt thgiEytnewt"); + .isEqualTo(""" + owTytnewt enOεytnewt ytnewt neetenin neethgie neetneves neetxis neetfif neetruof neetriht \ + evlewt nevele net enin thgie neves xis evif ruof eerht owt eno + evlewt nevele net enin thgie neves xis evif ruof eerht owt eno ytriht eniNytnewt thgiEytnewt \ + neveSytnewt xiSytnewt eviFytnewt ruoFytnewt eerhTytnewt + neveSytnewt xiSytnewt eviFytnewt ruoFytnewt eerhTytnewt owTytnewt enOεytnewt ytnewt neetenin n\ + eethgie neetneves neetxis neetfif neetruof neetriht + ytriht eniNytnewt thgiEytnewt"""); } @Test @@ -90,14 +91,15 @@ void whenLayoutRightToLeftHebrewThenRevertCharOrder() throws IOException { // then byte[] pdfBytes = pdfOut.toByteArray(); PdfTextExtractor extractor = new PdfTextExtractor(new PdfReader(pdfBytes)); - String expected = ".ויה אלש םירבדה ןמ יושע ,דהדהמ ,לולח טקש היה וילאמ" - + " שקבתמה קלחה.םיקלח השולש תב הממד וז התיהו ,ךרדה־ןבא קדנופב הררש הממד .הליל תעש וז התיה בוש\n" - + " וליא .ויתס ילע תפרוג איהש יפכ ,ךרדה דרומב הממדהתא" - + " תפחוסו ויריצ לע הקירחב קדנופה טלש תא תלטלטמ ,םיצעה ןיב הרבועב תחנאנ התיה זאיכ ,חור התיה וליא\n" - + " וליא .תוכושחה הלילה תועשב,האבסמב םהל תופַצל" - + " םוקמ היהש ןואשבו הלומהב ,קוחצבו החישב הממדה תא םיאלממ ויה זאיכ ,םישנא ץמוק וליפא ,קדנופב להק היה\n" - + " .הניעב הממדה" - + " הרתונ ןכלו ,םש היה הלאה םירבדהמ דחא אלףא ,תמאה ןעמל .הקיסומ התיה אלש יאדו , אל לבא ...הקיסומ התיה"; + String expected = """ + .ויה אלש םירבדה ןמ יושע ,דהדהמ ,לולח טקש היה וילאמ\ + שקבתמה קלחה.םיקלח השולש תב הממד וז התיהו ,ךרדה־ןבא קדנופב הררש הממד .הליל תעש וז התיה בוש + וליא .ויתס ילע תפרוג איהש יפכ ,ךרדה דרומב הממדהתא\ + תפחוסו ויריצ לע הקירחב קדנופה טלש תא תלטלטמ ,םיצעה ןיב הרבועב תחנאנ התיה זאיכ ,חור התיה וליא + וליא .תוכושחה הלילה תועשב,האבסמב םהל תופַצל\ + םוקמ היהש ןואשבו הלומהב ,קוחצבו החישב הממדה תא םיאלממ ויה זאיכ ,םישנא ץמוק וליפא ,קדנופב להק היה + .הניעב הממדה\ + הרתונ ןכלו ,םש היה הלאה םירבדהמ דחא אלףא ,תמאה ןעמל .הקיסומ התיה אלש יאדו , אל לבא ...הקיסומ התיה"""; assertThat(extractor.getTextFromPage(1)) .isEqualTo(expected); } diff --git a/openpdf-core/src/test/java/org/openpdf/text/pdf/encryption/DecryptAES256R6Test.java b/openpdf-core/src/test/java/org/openpdf/text/pdf/encryption/DecryptAES256R6Test.java index 7e5f6e2c5..b81b662a8 100644 --- a/openpdf-core/src/test/java/org/openpdf/text/pdf/encryption/DecryptAES256R6Test.java +++ b/openpdf-core/src/test/java/org/openpdf/text/pdf/encryption/DecryptAES256R6Test.java @@ -492,10 +492,11 @@ void testReadIssue60102PaeoeaaUtf8() throws IOException { Assertions.assertTrue(isOwnerPasswordUsed(pdfReader), "PdfReader fails to report full permissions."); Assertions.assertEquals(10, pdfReader.getNumberOfPages(), "PdfReader fails to report the correct number of pages"); - Assertions.assertEquals("Sample PDF Document\n" - + " Robert Maron\n" - + " Grzegorz Grudzi´ nski\n" - + " February 20, 1999", new PdfTextExtractor(pdfReader).getTextFromPage(1), + Assertions.assertEquals(""" + Sample PDF Document + Robert Maron + Grzegorz Grudzi´ nski + February 20, 1999""", new PdfTextExtractor(pdfReader).getTextFromPage(1), "Wrong text extracted from page 1"); pdfReader.close(); } diff --git a/pdf-toolbox/src/test/java/org/openpdf/examples/directcontent/colors/Patterns.java b/pdf-toolbox/src/test/java/org/openpdf/examples/directcontent/colors/Patterns.java index b7f0735c3..88574ae0a 100644 --- a/pdf-toolbox/src/test/java/org/openpdf/examples/directcontent/colors/Patterns.java +++ b/pdf-toolbox/src/test/java/org/openpdf/examples/directcontent/colors/Patterns.java @@ -71,18 +71,33 @@ public static void main(String[] args) { // step 6: put your drawing instruction in the painter canvas // A star pattern taken from Adobe PDF Reference Book p.207 - String star = "0.3 g\n15.000 27.000 m\n" - + "7.947 5.292 l\n26.413 18.708 l\n" - + "3.587 18.708 l\n22.053 5.292 l\nf\n" - + "45.000 57.000 m\n37.947 35.292 l\n" - + "56.413 48.708 l\n33.587 48.708 l\n" - + "52.053 35.292 l\nf\n" - + "0.7 g\n15.000 57.000 m\n" - + "7.947 35.292 l\n26.413 48.708 l\n" - + "3.587 48.708 l\n22.053 35.292 l\nf\n" - + "45.000 27.000 m\n37.947 5.292 l\n" - + "56.413 18.708 l\n33.587 18.708 l\n" - + "52.053 5.292 l\nf"; + String star = """ + 0.3 g + 15.000 27.000 m + 7.947 5.292 l + 26.413 18.708 l + 3.587 18.708 l + 22.053 5.292 l + f + 45.000 57.000 m + 37.947 35.292 l + 56.413 48.708 l + 33.587 48.708 l + 52.053 35.292 l + f + 0.7 g + 15.000 57.000 m + 7.947 35.292 l + 26.413 48.708 l + 3.587 48.708 l + 22.053 35.292 l + f + 45.000 27.000 m + 37.947 5.292 l + 56.413 18.708 l + 33.587 18.708 l + 52.053 5.292 l + f"""; p.setLiteral(star); diff --git a/pdf-toolbox/src/test/java/org/openpdf/examples/directcontent/graphics/Literal.java b/pdf-toolbox/src/test/java/org/openpdf/examples/directcontent/graphics/Literal.java index a501b3e03..00e688f43 100644 --- a/pdf-toolbox/src/test/java/org/openpdf/examples/directcontent/graphics/Literal.java +++ b/pdf-toolbox/src/test/java/org/openpdf/examples/directcontent/graphics/Literal.java @@ -50,18 +50,33 @@ public static void main(String[] args) { // step 4: we grab the ContentByte and do some stuff with it PdfContentByte cb = writer.getDirectContent(); - String star = "0.3 g\n15.000 27.000 m\n" - + "7.947 5.292 l\n26.413 18.708 l\n" - + "3.587 18.708 l\n22.053 5.292 l\nf\n" - + "45.000 57.000 m\n37.947 35.292 l\n" - + "56.413 48.708 l\n33.587 48.708 l\n" - + "52.053 35.292 l\nf\n" - + "0.7 g\n15.000 57.000 m\n" - + "7.947 35.292 l\n26.413 48.708 l\n" - + "3.587 48.708 l\n22.053 35.292 l\nf\n" - + "45.000 27.000 m\n37.947 5.292 l\n" - + "56.413 18.708 l\n33.587 18.708 l\n" - + "52.053 5.292 l\nf"; + String star = """ + 0.3 g + 15.000 27.000 m + 7.947 5.292 l + 26.413 18.708 l + 3.587 18.708 l + 22.053 5.292 l + f + 45.000 57.000 m + 37.947 35.292 l + 56.413 48.708 l + 33.587 48.708 l + 52.053 35.292 l + f + 0.7 g + 15.000 57.000 m + 7.947 35.292 l + 26.413 48.708 l + 3.587 48.708 l + 22.053 35.292 l + f + 45.000 27.000 m + 37.947 5.292 l + 56.413 18.708 l + 33.587 18.708 l + 52.053 5.292 l + f"""; cb.setLiteral(star); // sanityCheck doesn't check literals. diff --git a/pdf-toolbox/src/test/java/org/openpdf/examples/fonts/GlyphLayoutDocumentBidi.java b/pdf-toolbox/src/test/java/org/openpdf/examples/fonts/GlyphLayoutDocumentBidi.java index f587e37dd..3e21f7275 100644 --- a/pdf-toolbox/src/test/java/org/openpdf/examples/fonts/GlyphLayoutDocumentBidi.java +++ b/pdf-toolbox/src/test/java/org/openpdf/examples/fonts/GlyphLayoutDocumentBidi.java @@ -28,8 +28,11 @@ public class GlyphLayoutDocumentBidi { public static String INTRO_TEXT = - "Test of bidirectional text\n" + - "Using LayoutProcessor for glyph layout with Java built-in routines.\n\n"; + """ + Test of bidirectional text + Using LayoutProcessor for glyph layout with Java built-in routines. + + """; /** * Main method diff --git a/pdf-toolbox/src/test/java/org/openpdf/examples/fonts/GlyphLayoutDocumentBidiPerFont.java b/pdf-toolbox/src/test/java/org/openpdf/examples/fonts/GlyphLayoutDocumentBidiPerFont.java index 60c088c2e..86cde492a 100644 --- a/pdf-toolbox/src/test/java/org/openpdf/examples/fonts/GlyphLayoutDocumentBidiPerFont.java +++ b/pdf-toolbox/src/test/java/org/openpdf/examples/fonts/GlyphLayoutDocumentBidiPerFont.java @@ -29,8 +29,11 @@ public class GlyphLayoutDocumentBidiPerFont { public static String INTRO_TEXT = - "Test of bidirectional text\n" + - "Using LayoutProcessor for glyph layout with Java built-in routines.\n\n"; + """ + Test of bidirectional text + Using LayoutProcessor for glyph layout with Java built-in routines. + + """; /** * Main method diff --git a/pdf-toolbox/src/test/java/org/openpdf/examples/fonts/GlyphLayoutDocumentDin91379.java b/pdf-toolbox/src/test/java/org/openpdf/examples/fonts/GlyphLayoutDocumentDin91379.java index 2dd80e8b6..ce02e9898 100644 --- a/pdf-toolbox/src/test/java/org/openpdf/examples/fonts/GlyphLayoutDocumentDin91379.java +++ b/pdf-toolbox/src/test/java/org/openpdf/examples/fonts/GlyphLayoutDocumentDin91379.java @@ -26,76 +26,88 @@ public class GlyphLayoutDocumentDin91379 { public static String TEXT_INTRO = - "Test of formatting for letters and sequences defined in:\n" - + "DIN 91379:2022-08: Characters and defined character sequences in Unicode for the\n" - + "electronic processing of names and data exchange in Europe, with CD-ROM.\n" - + "See https://github.com/String-Latin/DIN-91379-Characters-and-Sequences\n" - + "and https://en.wikipedia.org/wiki/DIN_91379\n\n" - + "Fonts used: Noto Sans Regular, Noto Sans Math Regular, Noto Serif Regular\n" - + "See https://fonts.google.com/noto/specimen/Noto+Sans\n" - + "and https://github.com/googlefonts/noto-fonts/tree/main/hinted/ttf\n" - + "Using LayoutProcessor for glyph layout with Java built-in routines.\n\n"; + """ + Test of formatting for letters and sequences defined in: + DIN 91379:2022-08: Characters and defined character sequences in Unicode for the + electronic processing of names and data exchange in Europe, with CD-ROM. + See https://github.com/String-Latin/DIN-91379-Characters-and-Sequences + and https://en.wikipedia.org/wiki/DIN_91379 + + Fonts used: Noto Sans Regular, Noto Sans Math Regular, Noto Serif Regular + See https://fonts.google.com/noto/specimen/Noto+Sans + and https://github.com/googlefonts/noto-fonts/tree/main/hinted/ttf + Using LayoutProcessor for glyph layout with Java built-in routines. + + """; public static String LATIN_CHARS_DIN_91379 = - "bll; Latin Letters (normative)\n" - + "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z \n" - + "a b c d e f g h i j k l m n o p q r s t u v w x y z \n" - + "À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö Ø Ù Ú \n" - + "Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô \n" - + "õ ö ø ù ú û ü ý þ ÿ Ā ā Ă ă Ą ą Ć ć Ĉ ĉ Ċ ċ Č č Ď ď \n" - + "Đ đ Ē ē Ĕ ĕ Ė ė Ę ę Ě ě Ĝ ĝ Ğ ğ Ġ ġ Ģ ģ Ĥ ĥ Ħ ħ Ĩ ĩ \n" - + "Ī ī Ĭ ĭ Į į İ ı IJ ij Ĵ ĵ Ķ ķ ĸ Ĺ ĺ Ļ ļ Ľ ľ Ŀ ŀ Ł ł Ń \n" - + "ń Ņ ņ Ň ň ʼn Ŋ ŋ Ō ō Ŏ ŏ Ő ő Œ œ Ŕ ŕ Ŗ ŗ Ř ř Ś ś Ŝ ŝ \n" - + "Ş ş Š š Ţ ţ Ť ť Ŧ ŧ Ũ ũ Ū ū Ŭ ŭ Ů ů Ű ű Ų ų Ŵ ŵ Ŷ ŷ \n" - + "Ÿ Ź ź Ż ż Ž ž Ƈ ƈ Ə Ɨ Ơ ơ Ư ư Ʒ Ǎ ǎ Ǐ ǐ Ǒ ǒ Ǔ ǔ Ǖ ǖ \n" - + "Ǘ ǘ Ǚ ǚ Ǜ ǜ Ǟ ǟ Ǣ ǣ Ǥ ǥ Ǧ ǧ Ǩ ǩ Ǫ ǫ Ǭ ǭ Ǯ ǯ ǰ Ǵ ǵ Ǹ \n" - + "ǹ Ǻ ǻ Ǽ ǽ Ǿ ǿ Ȓ ȓ Ș ș Ț ț Ȟ ȟ ȧ Ȩ ȩ Ȫ ȫ Ȭ ȭ Ȯ ȯ Ȱ ȱ \n" - + "Ȳ ȳ ə ɨ ʒ Ḃ ḃ Ḇ ḇ Ḋ ḋ Ḍ ḍ Ḏ ḏ Ḑ ḑ ḗ Ḝ ḝ Ḟ ḟ Ḡ ḡ Ḣ ḣ \n" - + "Ḥ ḥ Ḧ ḧ Ḩ ḩ Ḫ ḫ ḯ Ḱ ḱ Ḳ ḳ Ḵ ḵ Ḷ ḷ Ḻ ḻ Ṁ ṁ Ṃ ṃ Ṅ ṅ Ṇ \n" - + "ṇ Ṉ ṉ Ṓ ṓ Ṕ ṕ Ṗ ṗ Ṙ ṙ Ṛ ṛ Ṟ ṟ Ṡ ṡ Ṣ ṣ Ṫ ṫ Ṭ ṭ Ṯ ṯ Ẁ \n" - + "ẁ Ẃ ẃ Ẅ ẅ Ẇ ẇ Ẍ ẍ Ẏ ẏ Ẑ ẑ Ẓ ẓ Ẕ ẕ ẖ ẗ ẞ Ạ ạ Ả ả Ấ ấ \n" - + "Ầ ầ Ẩ ẩ Ẫ ẫ Ậ ậ Ắ ắ Ằ ằ Ẳ ẳ Ẵ ẵ Ặ ặ Ẹ ẹ Ẻ ẻ Ẽ ẽ Ế ế \n" - + "Ề ề Ể ể Ễ ễ Ệ ệ Ỉ ỉ Ị ị Ọ ọ Ỏ ỏ Ố ố Ồ ồ Ổ ổ Ỗ ỗ Ộ ộ \n" - + "Ớ ớ Ờ ờ Ở ở Ỡ ỡ Ợ ợ Ụ ụ Ủ ủ Ứ ứ Ừ ừ Ử ử Ữ ữ Ự ự Ỳ ỳ \n" - + "Ỵ ỵ Ỷ ỷ Ỹ ỹ \n" - + "Sequences\n" - + "A̋ C̀ C̄ C̆ C̈ C̕ C̣ C̦ C̨̆ D̂ F̀ F̄ G̀ H̄ H̦ H̱ J́ J̌ K̀ K̂ K̄ K̇ K̕ K̛ K̦ K͟H \n" - + "K͟h L̂ L̥ L̥̄ L̦ M̀ M̂ M̆ M̐ N̂ N̄ N̆ N̦ P̀ P̄ P̕ P̣ R̆ R̥ R̥̄ S̀ S̄ S̛̄ S̱ T̀ T̄ \n" - + "T̈ T̕ T̛ U̇ Z̀ Z̄ Z̆ Z̈ Z̧ a̋ c̀ c̄ c̆ c̈ c̕ c̣ c̦ c̨̆ d̂ f̀ f̄ g̀ h̄ h̦ j́ k̀ \n" - + "k̂ k̄ k̇ k̕ k̛ k̦ k͟h l̂ l̥ l̥̄ l̦ m̀ m̂ m̆ m̐ n̂ n̄ n̆ n̦ p̀ p̄ p̕ p̣ r̆ r̥ r̥̄ \n" - + "s̀ s̄ s̛̄ s̱ t̀ t̄ t̕ t̛ u̇ z̀ z̄ z̆ z̈ z̧ Ç̆ Û̄ ç̆ û̄ ÿ́ Č̕ Č̣ č̕ č̣ ē̍ Ī́ ī́ \n" - + "ō̍ Ž̦ Ž̧ ž̦ ž̧ Ḳ̄ ḳ̄ Ṣ̄ ṣ̄ Ṭ̄ ṭ̄ Ạ̈ ạ̈ Ọ̈ ọ̈ Ụ̄ Ụ̈ ụ̄ ụ̈ \n" - + "bnlreq; Non-Letters N1 (normative)\n" - + " ' , - . ` ~ ¨ ´ · ʹ ʺ ʾ ʿ ˈ ˌ ’ ‡ \n" - + "bnl; Non-Letters N2 (normative)\n" - + "! \" # $ % & ( ) * + / 0 1 2 3 4 5 6 7 8 9 : ; < = > \n" - + "? @ [ \\ ] ^ _ { | } ¡ ¢ £ ¥ § © ª « ¬ ® ¯ ° ± ² ³ µ \n" - + "¶ ¹ º » ¿ × ÷ € \n" - + "bnlopt; Non-Letters N3 (normative)\n" - + "¤ ¦ ¸ ¼ ½ ¾ \n" - + "bnlnot; Non-Letters N4 (normative)\n" - + "-omitted-\n" - + "dc; Combining diacritics (normative)\n" - + "-omitted-\n" - + "gl; Greek Letters (extended)\n" - + "Ά Έ Ή Ί Ό Ύ Ώ ΐ Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ \n" - + "Τ Υ Φ Χ Ψ Ω Ϊ Ϋ ά έ ή ί ΰ α β γ δ ε ζ η θ ι κ λ μ ν \n" - + "ξ ο π ρ ς σ τ υ φ χ ψ ω ϊ ϋ ό ύ ώ \n" - + "cl; Cyrillic Letters (extended)\n" - + "Ѝ А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш \n" - + "Щ Ъ Ь Ю Я а б в г д е ж з и й к л м н о п р с т у ф \n" - + "х ц ч ш щ ъ ь ю я ѝ \n" - + "enl; Non-Letters E1 (extended)\n" - + "ƒ ʰ ʳ ˆ ˜ ˢ ᵈ ᵗ ‘ ‚ “ ” „ † … ‰ ′ ″ ‹ › ⁰ ⁴ ⁵ ⁶ ⁷ ⁸ \n" - + "⁹ ⁿ ₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉ ™ \n\n"; + """ + bll; Latin Letters (normative) + A B C D E F G H I J K L M N O P Q R S T U V W X Y Z\s + a b c d e f g h i j k l m n o p q r s t u v w x y z\s + À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö Ø Ù Ú\s + Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô\s + õ ö ø ù ú û ü ý þ ÿ Ā ā Ă ă Ą ą Ć ć Ĉ ĉ Ċ ċ Č č Ď ď\s + Đ đ Ē ē Ĕ ĕ Ė ė Ę ę Ě ě Ĝ ĝ Ğ ğ Ġ ġ Ģ ģ Ĥ ĥ Ħ ħ Ĩ ĩ\s + Ī ī Ĭ ĭ Į į İ ı IJ ij Ĵ ĵ Ķ ķ ĸ Ĺ ĺ Ļ ļ Ľ ľ Ŀ ŀ Ł ł Ń\s + ń Ņ ņ Ň ň ʼn Ŋ ŋ Ō ō Ŏ ŏ Ő ő Œ œ Ŕ ŕ Ŗ ŗ Ř ř Ś ś Ŝ ŝ\s + Ş ş Š š Ţ ţ Ť ť Ŧ ŧ Ũ ũ Ū ū Ŭ ŭ Ů ů Ű ű Ų ų Ŵ ŵ Ŷ ŷ\s + Ÿ Ź ź Ż ż Ž ž Ƈ ƈ Ə Ɨ Ơ ơ Ư ư Ʒ Ǎ ǎ Ǐ ǐ Ǒ ǒ Ǔ ǔ Ǖ ǖ\s + Ǘ ǘ Ǚ ǚ Ǜ ǜ Ǟ ǟ Ǣ ǣ Ǥ ǥ Ǧ ǧ Ǩ ǩ Ǫ ǫ Ǭ ǭ Ǯ ǯ ǰ Ǵ ǵ Ǹ\s + ǹ Ǻ ǻ Ǽ ǽ Ǿ ǿ Ȓ ȓ Ș ș Ț ț Ȟ ȟ ȧ Ȩ ȩ Ȫ ȫ Ȭ ȭ Ȯ ȯ Ȱ ȱ\s + Ȳ ȳ ə ɨ ʒ Ḃ ḃ Ḇ ḇ Ḋ ḋ Ḍ ḍ Ḏ ḏ Ḑ ḑ ḗ Ḝ ḝ Ḟ ḟ Ḡ ḡ Ḣ ḣ\s + Ḥ ḥ Ḧ ḧ Ḩ ḩ Ḫ ḫ ḯ Ḱ ḱ Ḳ ḳ Ḵ ḵ Ḷ ḷ Ḻ ḻ Ṁ ṁ Ṃ ṃ Ṅ ṅ Ṇ\s + ṇ Ṉ ṉ Ṓ ṓ Ṕ ṕ Ṗ ṗ Ṙ ṙ Ṛ ṛ Ṟ ṟ Ṡ ṡ Ṣ ṣ Ṫ ṫ Ṭ ṭ Ṯ ṯ Ẁ\s + ẁ Ẃ ẃ Ẅ ẅ Ẇ ẇ Ẍ ẍ Ẏ ẏ Ẑ ẑ Ẓ ẓ Ẕ ẕ ẖ ẗ ẞ Ạ ạ Ả ả Ấ ấ\s + Ầ ầ Ẩ ẩ Ẫ ẫ Ậ ậ Ắ ắ Ằ ằ Ẳ ẳ Ẵ ẵ Ặ ặ Ẹ ẹ Ẻ ẻ Ẽ ẽ Ế ế\s + Ề ề Ể ể Ễ ễ Ệ ệ Ỉ ỉ Ị ị Ọ ọ Ỏ ỏ Ố ố Ồ ồ Ổ ổ Ỗ ỗ Ộ ộ\s + Ớ ớ Ờ ờ Ở ở Ỡ ỡ Ợ ợ Ụ ụ Ủ ủ Ứ ứ Ừ ừ Ử ử Ữ ữ Ự ự Ỳ ỳ\s + Ỵ ỵ Ỷ ỷ Ỹ ỹ\s + Sequences + A̋ C̀ C̄ C̆ C̈ C̕ C̣ C̦ C̨̆ D̂ F̀ F̄ G̀ H̄ H̦ H̱ J́ J̌ K̀ K̂ K̄ K̇ K̕ K̛ K̦ K͟H\s + K͟h L̂ L̥ L̥̄ L̦ M̀ M̂ M̆ M̐ N̂ N̄ N̆ N̦ P̀ P̄ P̕ P̣ R̆ R̥ R̥̄ S̀ S̄ S̛̄ S̱ T̀ T̄\s + T̈ T̕ T̛ U̇ Z̀ Z̄ Z̆ Z̈ Z̧ a̋ c̀ c̄ c̆ c̈ c̕ c̣ c̦ c̨̆ d̂ f̀ f̄ g̀ h̄ h̦ j́ k̀\s + k̂ k̄ k̇ k̕ k̛ k̦ k͟h l̂ l̥ l̥̄ l̦ m̀ m̂ m̆ m̐ n̂ n̄ n̆ n̦ p̀ p̄ p̕ p̣ r̆ r̥ r̥̄\s + s̀ s̄ s̛̄ s̱ t̀ t̄ t̕ t̛ u̇ z̀ z̄ z̆ z̈ z̧ Ç̆ Û̄ ç̆ û̄ ÿ́ Č̕ Č̣ č̕ č̣ ē̍ Ī́ ī́\s + ō̍ Ž̦ Ž̧ ž̦ ž̧ Ḳ̄ ḳ̄ Ṣ̄ ṣ̄ Ṭ̄ ṭ̄ Ạ̈ ạ̈ Ọ̈ ọ̈ Ụ̄ Ụ̈ ụ̄ ụ̈\s + bnlreq; Non-Letters N1 (normative) + ' , - . ` ~ ¨ ´ · ʹ ʺ ʾ ʿ ˈ ˌ ’ ‡\s + bnl; Non-Letters N2 (normative) + ! " # $ % & ( ) * + / 0 1 2 3 4 5 6 7 8 9 : ; < = >\s + ? @ [ \\ ] ^ _ { | } ¡ ¢ £ ¥ § © ª « ¬ ® ¯ ° ± ² ³ µ\s + ¶ ¹ º » ¿ × ÷ €\s + bnlopt; Non-Letters N3 (normative) + ¤ ¦ ¸ ¼ ½ ¾\s + bnlnot; Non-Letters N4 (normative) + -omitted- + dc; Combining diacritics (normative) + -omitted- + gl; Greek Letters (extended) + Ά Έ Ή Ί Ό Ύ Ώ ΐ Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ\s + Τ Υ Φ Χ Ψ Ω Ϊ Ϋ ά έ ή ί ΰ α β γ δ ε ζ η θ ι κ λ μ ν\s + ξ ο π ρ ς σ τ υ φ χ ψ ω ϊ ϋ ό ύ ώ\s + cl; Cyrillic Letters (extended) + Ѝ А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш\s + Щ Ъ Ь Ю Я а б в г д е ж з и й к л м н о п р с т у ф\s + х ц ч ш щ ъ ь ю я ѝ\s + enl; Non-Letters E1 (extended) + ƒ ʰ ʳ ˆ ˜ ˢ ᵈ ᵗ ‘ ‚ “ ” „ † … ‰ ′ ″ ‹ › ⁰ ⁴ ⁵ ⁶ ⁷ ⁸\s + ⁹ ⁿ ₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉ ™\s + + """; public static String LATIN_CHARS_DIN_91379_MATH = - "enl; Non Letters E1 (extended) math\n" - + "∞ ≤ ≥ \n"; + """ + enl; Non Letters E1 (extended) math + ∞ ≤ ≥\s + """; public static String LATIN_CHARS_ADDITIONAL = - "Additional non-letters (not included in DIN 91379)\n" - + "– — •�\n\n"; + """ + Additional non-letters (not included in DIN 91379) + – — •� + + """; /** diff --git a/pdf-toolbox/src/test/java/org/openpdf/examples/fonts/GlyphLayoutDocumentKernLiga.java b/pdf-toolbox/src/test/java/org/openpdf/examples/fonts/GlyphLayoutDocumentKernLiga.java index d250d0c9c..0e4f9e55b 100644 --- a/pdf-toolbox/src/test/java/org/openpdf/examples/fonts/GlyphLayoutDocumentKernLiga.java +++ b/pdf-toolbox/src/test/java/org/openpdf/examples/fonts/GlyphLayoutDocumentKernLiga.java @@ -28,8 +28,11 @@ public class GlyphLayoutDocumentKernLiga { public static String INTRO_TEXT = - "Test of text attributes for kerning and ligatures\n" - + "Using LayoutProcessor for glyph layout with Java built-in routines.\n\n"; + """ + Test of text attributes for kerning and ligatures + Using LayoutProcessor for glyph layout with Java built-in routines. + + """; public static String TEST_TEXT = diff --git a/pdf-toolbox/src/test/java/org/openpdf/examples/fonts/GlyphLayoutDocumentKernLigaPerFont.java b/pdf-toolbox/src/test/java/org/openpdf/examples/fonts/GlyphLayoutDocumentKernLigaPerFont.java index 207c3d4c2..04b8149cc 100644 --- a/pdf-toolbox/src/test/java/org/openpdf/examples/fonts/GlyphLayoutDocumentKernLigaPerFont.java +++ b/pdf-toolbox/src/test/java/org/openpdf/examples/fonts/GlyphLayoutDocumentKernLigaPerFont.java @@ -28,8 +28,11 @@ public class GlyphLayoutDocumentKernLigaPerFont { public static String TEXT_INTRO = - "Test of kerning and ligatures per font\n" - + "Using LayoutProcessor for glyph layout with Java built-in routines.\n\n"; + """ + Test of kerning and ligatures per font + Using LayoutProcessor for glyph layout with Java built-in routines. + + """; public static String TEST_TEXT = diff --git a/pdf-toolbox/src/test/java/org/openpdf/examples/fonts/GlyphLayoutFormDin91379.java b/pdf-toolbox/src/test/java/org/openpdf/examples/fonts/GlyphLayoutFormDin91379.java index 7d87c593a..3a4f261f9 100644 --- a/pdf-toolbox/src/test/java/org/openpdf/examples/fonts/GlyphLayoutFormDin91379.java +++ b/pdf-toolbox/src/test/java/org/openpdf/examples/fonts/GlyphLayoutFormDin91379.java @@ -27,66 +27,73 @@ public class GlyphLayoutFormDin91379 { public static String TEXT_INTRO = - "Test of formatting for letters and sequences defined in:\n" - + "DIN 91379:2022-08: Characters and defined character sequences in Unicode for the\n" - + "electronic processing of names and data exchange in Europe, with CD-ROM.\n" - + "See https://github.com/String-Latin/DIN-91379-Characters-and-Sequences\n" - + "and https://en.wikipedia.org/wiki/DIN_91379\n\n" - + "Fonts used: Noto Sans Regular, Noto Sans Math Regular, Noto Serif Regular\n" - + "See https://fonts.google.com/noto/specimen/Noto+Sans\n" - + "and https://github.com/googlefonts/noto-fonts/tree/main/hinted/ttf\n" - + "Using LayoutProcessor for glyph layout with Java built-in routines.\n\n"; + """ + Test of formatting for letters and sequences defined in: + DIN 91379:2022-08: Characters and defined character sequences in Unicode for the + electronic processing of names and data exchange in Europe, with CD-ROM. + See https://github.com/String-Latin/DIN-91379-Characters-and-Sequences + and https://en.wikipedia.org/wiki/DIN_91379 + + Fonts used: Noto Sans Regular, Noto Sans Math Regular, Noto Serif Regular + See https://fonts.google.com/noto/specimen/Noto+Sans + and https://github.com/googlefonts/noto-fonts/tree/main/hinted/ttf + Using LayoutProcessor for glyph layout with Java built-in routines. + + """; public static String LATIN_CHARS_DIN_91379 = - "bll; Latin Letters (normative)\n" - + "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z " - + "a b c d e f g h i j k l m n o p q r s t u v w x y z " - + "À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö Ø Ù Ú " - + "Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô " - + "õ ö ø ù ú û ü ý þ ÿ Ā ā Ă ă Ą ą Ć ć Ĉ ĉ Ċ ċ Č č Ď ď " - + "Đ đ Ē ē Ĕ ĕ Ė ė Ę ę Ě ě Ĝ ĝ Ğ ğ Ġ ġ Ģ ģ Ĥ ĥ Ħ ħ Ĩ ĩ " - + "Ī ī Ĭ ĭ Į į İ ı IJ ij Ĵ ĵ Ķ ķ ĸ Ĺ ĺ Ļ ļ Ľ ľ Ŀ ŀ Ł ł Ń " - + "ń Ņ ņ Ň ň ʼn Ŋ ŋ Ō ō Ŏ ŏ Ő ő Œ œ Ŕ ŕ Ŗ ŗ Ř ř Ś ś Ŝ ŝ " - + "Ş ş Š š Ţ ţ Ť ť Ŧ ŧ Ũ ũ Ū ū Ŭ ŭ Ů ů Ű ű Ų ų Ŵ ŵ Ŷ ŷ " - + "Ÿ Ź ź Ż ż Ž ž Ƈ ƈ Ə Ɨ Ơ ơ Ư ư Ʒ Ǎ ǎ Ǐ ǐ Ǒ ǒ Ǔ ǔ Ǖ ǖ " - + "Ǘ ǘ Ǚ ǚ Ǜ ǜ Ǟ ǟ Ǣ ǣ Ǥ ǥ Ǧ ǧ Ǩ ǩ Ǫ ǫ Ǭ ǭ Ǯ ǯ ǰ Ǵ ǵ Ǹ " - + "ǹ Ǻ ǻ Ǽ ǽ Ǿ ǿ Ȓ ȓ Ș ș Ț ț Ȟ ȟ ȧ Ȩ ȩ Ȫ ȫ Ȭ ȭ Ȯ ȯ Ȱ ȱ " - + "Ȳ ȳ ə ɨ ʒ Ḃ ḃ Ḇ ḇ Ḋ ḋ Ḍ ḍ Ḏ ḏ Ḑ ḑ ḗ Ḝ ḝ Ḟ ḟ Ḡ ḡ Ḣ ḣ " - + "Ḥ ḥ Ḧ ḧ Ḩ ḩ Ḫ ḫ ḯ Ḱ ḱ Ḳ ḳ Ḵ ḵ Ḷ ḷ Ḻ ḻ Ṁ ṁ Ṃ ṃ Ṅ ṅ Ṇ " - + "ṇ Ṉ ṉ Ṓ ṓ Ṕ ṕ Ṗ ṗ Ṙ ṙ Ṛ ṛ Ṟ ṟ Ṡ ṡ Ṣ ṣ Ṫ ṫ Ṭ ṭ Ṯ ṯ Ẁ " - + "ẁ Ẃ ẃ Ẅ ẅ Ẇ ẇ Ẍ ẍ Ẏ ẏ Ẑ ẑ Ẓ ẓ Ẕ ẕ ẖ ẗ ẞ Ạ ạ Ả ả Ấ ấ " - + "Ầ ầ Ẩ ẩ Ẫ ẫ Ậ ậ Ắ ắ Ằ ằ Ẳ ẳ Ẵ ẵ Ặ ặ Ẹ ẹ Ẻ ẻ Ẽ ẽ Ế ế " - + "Ề ề Ể ể Ễ ễ Ệ ệ Ỉ ỉ Ị ị Ọ ọ Ỏ ỏ Ố ố Ồ ồ Ổ ổ Ỗ ỗ Ộ ộ " - + "Ớ ớ Ờ ờ Ở ở Ỡ ỡ Ợ ợ Ụ ụ Ủ ủ Ứ ứ Ừ ừ Ử ử Ữ ữ Ự ự Ỳ ỳ " - + "Ỵ ỵ Ỷ ỷ Ỹ ỹ \n" - + "Sequences\n" - + "A̋ C̀ C̄ C̆ C̈ C̕ C̣ C̦ C̨̆ D̂ F̀ F̄ G̀ H̄ H̦ H̱ J́ J̌ K̀ K̂ K̄ K̇ K̕ K̛ K̦ K͟H " - + "K͟h L̂ L̥ L̥̄ L̦ M̀ M̂ M̆ M̐ N̂ N̄ N̆ N̦ P̀ P̄ P̕ P̣ R̆ R̥ R̥̄ S̀ S̄ S̛̄ S̱ T̀ T̄ " - + "T̈ T̕ T̛ U̇ Z̀ Z̄ Z̆ Z̈ Z̧ a̋ c̀ c̄ c̆ c̈ c̕ c̣ c̦ c̨̆ d̂ f̀ f̄ g̀ h̄ h̦ j́ k̀ " - + "k̂ k̄ k̇ k̕ k̛ k̦ k͟h l̂ l̥ l̥̄ l̦ m̀ m̂ m̆ m̐ n̂ n̄ n̆ n̦ p̀ p̄ p̕ p̣ r̆ r̥ r̥̄ " - + "s̀ s̄ s̛̄ s̱ t̀ t̄ t̕ t̛ u̇ z̀ z̄ z̆ z̈ z̧ Ç̆ Û̄ ç̆ û̄ ÿ́ Č̕ Č̣ č̕ č̣ ē̍ Ī́ ī́ " - + "ō̍ Ž̦ Ž̧ ž̦ ž̧ Ḳ̄ ḳ̄ Ṣ̄ ṣ̄ Ṭ̄ ṭ̄ Ạ̈ ạ̈ Ọ̈ ọ̈ Ụ̄ Ụ̈ ụ̄ ụ̈ \n" - + "bnlreq; Non-Letters N1 (normative)\n" - + " ' , - . ` ~ ¨ ´ · ʹ ʺ ʾ ʿ ˈ ˌ ’ ‡ \n" - + "bnl; Non-Letters N2 (normative)\n" - + "! \" # $ % & ( ) * + / 0 1 2 3 4 5 6 7 8 9 : ; < = > " - + "? @ [ \\ ] ^ _ { | } ¡ ¢ £ ¥ § © ª « ¬ ® ¯ ° ± ² ³ µ " - + "¶ ¹ º » ¿ × ÷ € \n" - + "bnlopt; Non-Letters N3 (normative)\n" - + "¤ ¦ ¸ ¼ ½ ¾ \n" - + "bnlnot; Non-Letters N4 (normative) -omitted-\n" - + "dc; Combining diacritics (normative) -omitted-\n" - + "gl; Greek Letters (extended)\n" - + "Ά Έ Ή Ί Ό Ύ Ώ ΐ Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ " - + "Τ Υ Φ Χ Ψ Ω Ϊ Ϋ ά έ ή ί ΰ α β γ δ ε ζ η θ ι κ λ μ ν " - + "ξ ο π ρ ς σ τ υ φ χ ψ ω ϊ ϋ ό ύ ώ \n" - + "cl; Cyrillic Letters (extended)\n" - + "Ѝ А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш " - + "Щ Ъ Ь Ю Я а б в г д е ж з и й к л м н о п р с т у ф " - + "х ц ч ш щ ъ ь ю я ѝ \n" - + "enl; Non-Letters E1 (extended)\n" - + "ƒ ʰ ʳ ˆ ˜ ˢ ᵈ ᵗ ‘ ‚ “ ” „ † … ‰ ′ ″ ‹ › ⁰ ⁴ ⁵ ⁶ ⁷ ⁸ " - + "⁹ ⁿ ₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉ ™ ∞ ≤ ≥ \n\n"; + """ + bll; Latin Letters (normative) + A B C D E F G H I J K L M N O P Q R S T U V W X Y Z \ + a b c d e f g h i j k l m n o p q r s t u v w x y z \ + À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö Ø Ù Ú \ + Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô \ + õ ö ø ù ú û ü ý þ ÿ Ā ā Ă ă Ą ą Ć ć Ĉ ĉ Ċ ċ Č č Ď ď \ + Đ đ Ē ē Ĕ ĕ Ė ė Ę ę Ě ě Ĝ ĝ Ğ ğ Ġ ġ Ģ ģ Ĥ ĥ Ħ ħ Ĩ ĩ \ + Ī ī Ĭ ĭ Į į İ ı IJ ij Ĵ ĵ Ķ ķ ĸ Ĺ ĺ Ļ ļ Ľ ľ Ŀ ŀ Ł ł Ń \ + ń Ņ ņ Ň ň ʼn Ŋ ŋ Ō ō Ŏ ŏ Ő ő Œ œ Ŕ ŕ Ŗ ŗ Ř ř Ś ś Ŝ ŝ \ + Ş ş Š š Ţ ţ Ť ť Ŧ ŧ Ũ ũ Ū ū Ŭ ŭ Ů ů Ű ű Ų ų Ŵ ŵ Ŷ ŷ \ + Ÿ Ź ź Ż ż Ž ž Ƈ ƈ Ə Ɨ Ơ ơ Ư ư Ʒ Ǎ ǎ Ǐ ǐ Ǒ ǒ Ǔ ǔ Ǖ ǖ \ + Ǘ ǘ Ǚ ǚ Ǜ ǜ Ǟ ǟ Ǣ ǣ Ǥ ǥ Ǧ ǧ Ǩ ǩ Ǫ ǫ Ǭ ǭ Ǯ ǯ ǰ Ǵ ǵ Ǹ \ + ǹ Ǻ ǻ Ǽ ǽ Ǿ ǿ Ȓ ȓ Ș ș Ț ț Ȟ ȟ ȧ Ȩ ȩ Ȫ ȫ Ȭ ȭ Ȯ ȯ Ȱ ȱ \ + Ȳ ȳ ə ɨ ʒ Ḃ ḃ Ḇ ḇ Ḋ ḋ Ḍ ḍ Ḏ ḏ Ḑ ḑ ḗ Ḝ ḝ Ḟ ḟ Ḡ ḡ Ḣ ḣ \ + Ḥ ḥ Ḧ ḧ Ḩ ḩ Ḫ ḫ ḯ Ḱ ḱ Ḳ ḳ Ḵ ḵ Ḷ ḷ Ḻ ḻ Ṁ ṁ Ṃ ṃ Ṅ ṅ Ṇ \ + ṇ Ṉ ṉ Ṓ ṓ Ṕ ṕ Ṗ ṗ Ṙ ṙ Ṛ ṛ Ṟ ṟ Ṡ ṡ Ṣ ṣ Ṫ ṫ Ṭ ṭ Ṯ ṯ Ẁ \ + ẁ Ẃ ẃ Ẅ ẅ Ẇ ẇ Ẍ ẍ Ẏ ẏ Ẑ ẑ Ẓ ẓ Ẕ ẕ ẖ ẗ ẞ Ạ ạ Ả ả Ấ ấ \ + Ầ ầ Ẩ ẩ Ẫ ẫ Ậ ậ Ắ ắ Ằ ằ Ẳ ẳ Ẵ ẵ Ặ ặ Ẹ ẹ Ẻ ẻ Ẽ ẽ Ế ế \ + Ề ề Ể ể Ễ ễ Ệ ệ Ỉ ỉ Ị ị Ọ ọ Ỏ ỏ Ố ố Ồ ồ Ổ ổ Ỗ ỗ Ộ ộ \ + Ớ ớ Ờ ờ Ở ở Ỡ ỡ Ợ ợ Ụ ụ Ủ ủ Ứ ứ Ừ ừ Ử ử Ữ ữ Ự ự Ỳ ỳ \ + Ỵ ỵ Ỷ ỷ Ỹ ỹ\s + Sequences + A̋ C̀ C̄ C̆ C̈ C̕ C̣ C̦ C̨̆ D̂ F̀ F̄ G̀ H̄ H̦ H̱ J́ J̌ K̀ K̂ K̄ K̇ K̕ K̛ K̦ K͟H \ + K͟h L̂ L̥ L̥̄ L̦ M̀ M̂ M̆ M̐ N̂ N̄ N̆ N̦ P̀ P̄ P̕ P̣ R̆ R̥ R̥̄ S̀ S̄ S̛̄ S̱ T̀ T̄ \ + T̈ T̕ T̛ U̇ Z̀ Z̄ Z̆ Z̈ Z̧ a̋ c̀ c̄ c̆ c̈ c̕ c̣ c̦ c̨̆ d̂ f̀ f̄ g̀ h̄ h̦ j́ k̀ \ + k̂ k̄ k̇ k̕ k̛ k̦ k͟h l̂ l̥ l̥̄ l̦ m̀ m̂ m̆ m̐ n̂ n̄ n̆ n̦ p̀ p̄ p̕ p̣ r̆ r̥ r̥̄ \ + s̀ s̄ s̛̄ s̱ t̀ t̄ t̕ t̛ u̇ z̀ z̄ z̆ z̈ z̧ Ç̆ Û̄ ç̆ û̄ ÿ́ Č̕ Č̣ č̕ č̣ ē̍ Ī́ ī́ \ + ō̍ Ž̦ Ž̧ ž̦ ž̧ Ḳ̄ ḳ̄ Ṣ̄ ṣ̄ Ṭ̄ ṭ̄ Ạ̈ ạ̈ Ọ̈ ọ̈ Ụ̄ Ụ̈ ụ̄ ụ̈\s + bnlreq; Non-Letters N1 (normative) + ' , - . ` ~ ¨ ´ · ʹ ʺ ʾ ʿ ˈ ˌ ’ ‡\s + bnl; Non-Letters N2 (normative) + ! " # $ % & ( ) * + / 0 1 2 3 4 5 6 7 8 9 : ; < = > \ + ? @ [ \\ ] ^ _ { | } ¡ ¢ £ ¥ § © ª « ¬ ® ¯ ° ± ² ³ µ \ + ¶ ¹ º » ¿ × ÷ €\s + bnlopt; Non-Letters N3 (normative) + ¤ ¦ ¸ ¼ ½ ¾\s + bnlnot; Non-Letters N4 (normative) -omitted- + dc; Combining diacritics (normative) -omitted- + gl; Greek Letters (extended) + Ά Έ Ή Ί Ό Ύ Ώ ΐ Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ \ + Τ Υ Φ Χ Ψ Ω Ϊ Ϋ ά έ ή ί ΰ α β γ δ ε ζ η θ ι κ λ μ ν \ + ξ ο π ρ ς σ τ υ φ χ ψ ω ϊ ϋ ό ύ ώ\s + cl; Cyrillic Letters (extended) + Ѝ А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш \ + Щ Ъ Ь Ю Я а б в г д е ж з и й к л м н о п р с т у ф \ + х ц ч ш щ ъ ь ю я ѝ\s + enl; Non-Letters E1 (extended) + ƒ ʰ ʳ ˆ ˜ ˢ ᵈ ᵗ ‘ ‚ “ ” „ † … ‰ ′ ″ ‹ › ⁰ ⁴ ⁵ ⁶ ⁷ ⁸ \ + ⁹ ⁿ ₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉ ™ ∞ ≤ ≥\s + + """; /** * Main method diff --git a/pdf-toolbox/src/test/java/org/openpdf/examples/fonts/GlyphLayoutSMP.java b/pdf-toolbox/src/test/java/org/openpdf/examples/fonts/GlyphLayoutSMP.java index 55d327f5d..47045bc53 100644 --- a/pdf-toolbox/src/test/java/org/openpdf/examples/fonts/GlyphLayoutSMP.java +++ b/pdf-toolbox/src/test/java/org/openpdf/examples/fonts/GlyphLayoutSMP.java @@ -28,7 +28,11 @@ public class GlyphLayoutSMP { private static final String TEXT_INTRO = - "Test of Letters from the Supplementary Multilingual Plane\n\n" + "Mathematical Alphanumeric Symbols\n"; + """ + Test of Letters from the Supplementary Multilingual Plane + + Mathematical Alphanumeric Symbols + """; private static final int[] MATHEMATICAL_CODEPOINTS = new int[]{0x1D504, 0x1D505, 0x212D, 0x1D507, 0x1D508, 0x1D509, 0x1D50A, 0x210C, 0x2111, 0x1D50D, 0x1D50E, 0x1D50F, 0x1D510, 0x1D511, 0x1D512, 0x1D513, 0x1D514, 0x211C, diff --git a/pdf-toolbox/src/test/java/org/openpdf/examples/html/JavaScriptAction.java b/pdf-toolbox/src/test/java/org/openpdf/examples/html/JavaScriptAction.java index 07b7f5097..6ae39dea5 100644 --- a/pdf-toolbox/src/test/java/org/openpdf/examples/html/JavaScriptAction.java +++ b/pdf-toolbox/src/test/java/org/openpdf/examples/html/JavaScriptAction.java @@ -69,10 +69,13 @@ public static void main(String[] args) { document.open(); // step 4: we add some content Phrase phrase1 = new Phrase( - "There are 3 JavaScript functions in the HTML page, load(), unload() and sayHi().\n\n" + - "The first one will be called when the HTML page has been loaded by your browser.\n" + - "The second one will be called when the HTML page is being unloaded,\n" + - "for example when you go to another page.\n"); + """ + There are 3 JavaScript functions in the HTML page, load(), unload() and sayHi(). + + The first one will be called when the HTML page has been loaded by your browser. + The second one will be called when the HTML page is being unloaded, + for example when you go to another page. + """); document.add(phrase1); // add a HTML link