Author: tilman
Date: Mon Jul 20 07:28:55 2026
New Revision: 1936345

Log:
PDFBOX-4951: add subproject for glyph layout, by Volker Kunert

Added:
   pdfbox/branches/3.0/pdfbox-layout-awt/   (props changed)
   pdfbox/branches/3.0/pdfbox-layout-awt/pom.xml
      - copied, changed from r1936107, pdfbox/trunk/pdfbox-layout-awt/pom.xml
   pdfbox/branches/3.0/pdfbox-layout-awt/src/
   pdfbox/branches/3.0/pdfbox-layout-awt/src/main/
   pdfbox/branches/3.0/pdfbox-layout-awt/src/main/java/
   pdfbox/branches/3.0/pdfbox-layout-awt/src/main/java/org/
   pdfbox/branches/3.0/pdfbox-layout-awt/src/main/java/org/apache/
   pdfbox/branches/3.0/pdfbox-layout-awt/src/main/java/org/apache/pdfbox/
   
pdfbox/branches/3.0/pdfbox-layout-awt/src/main/java/org/apache/pdfbox/glyphlayout/
   
pdfbox/branches/3.0/pdfbox-layout-awt/src/main/java/org/apache/pdfbox/glyphlayout/awt/
   
pdfbox/branches/3.0/pdfbox-layout-awt/src/main/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutFontLoaderAwt.java
      - copied, changed from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/main/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutFontLoaderAwt.java
   
pdfbox/branches/3.0/pdfbox-layout-awt/src/main/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutProcessorAwt.java
      - copied, changed from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/main/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutProcessorAwt.java
   
pdfbox/branches/3.0/pdfbox-layout-awt/src/main/java/org/apache/pdfbox/glyphlayout/examples/
   
pdfbox/branches/3.0/pdfbox-layout-awt/src/main/java/org/apache/pdfbox/glyphlayout/examples/GlyphLayoutHelloWorldAWT.java
      - copied, changed from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/main/java/org/apache/pdfbox/glyphlayout/examples/GlyphLayoutHelloWorldAWT.java
   pdfbox/branches/3.0/pdfbox-layout-awt/src/test/
   pdfbox/branches/3.0/pdfbox-layout-awt/src/test/appended-resources/
   pdfbox/branches/3.0/pdfbox-layout-awt/src/test/appended-resources/META-INF/
   
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/appended-resources/META-INF/LICENSE
      - copied unchanged from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/appended-resources/META-INF/LICENSE
   pdfbox/branches/3.0/pdfbox-layout-awt/src/test/java/
   pdfbox/branches/3.0/pdfbox-layout-awt/src/test/java/org/
   pdfbox/branches/3.0/pdfbox-layout-awt/src/test/java/org/apache/
   pdfbox/branches/3.0/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/
   
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/
   
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/
   
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutBidiTest.java
      - copied, changed from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutBidiTest.java
   
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutDin91379FormTest.java
      - copied unchanged from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutDin91379FormTest.java
   
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutDin91379Test.java
      - copied unchanged from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutDin91379Test.java
   
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutHelloWorldAWTTest.java
      - copied, changed from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutHelloWorldAWTTest.java
   
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutLigaturesAndKerningTest.java
      - copied, changed from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutLigaturesAndKerningTest.java
   
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutSMPTest.java
      - copied, changed from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutSMPTest.java
   
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/TestBase.java
      - copied unchanged from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/TestBase.java
   pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/
   pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/pdf/
   
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/pdf/GlyphLayoutBidi.pdf
      - copied unchanged from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/resources/pdf/GlyphLayoutBidi.pdf
   
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/pdf/GlyphLayoutDIN91379.pdf
      - copied unchanged from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/resources/pdf/GlyphLayoutDIN91379.pdf
   
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/pdf/GlyphLayoutDIN91379Form.pdf
      - copied unchanged from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/resources/pdf/GlyphLayoutDIN91379Form.pdf
   
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/pdf/GlyphLayoutLigaturesAndKerning.pdf
      - copied unchanged from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/resources/pdf/GlyphLayoutLigaturesAndKerning.pdf
   
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/pdf/GlyphLayoutSMP.pdf
      - copied unchanged from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/resources/pdf/GlyphLayoutSMP.pdf
   pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/pdf/HelloWorld.pdf
      - copied unchanged from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/resources/pdf/HelloWorld.pdf
   pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/pdf/PdfForm.pdf
      - copied unchanged from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/resources/pdf/PdfForm.pdf
   pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/ttf/
   
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/ttf/Arimo-Regular.ttf
      - copied unchanged from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/resources/ttf/Arimo-Regular.ttf
   pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/ttf/DejaVuSans.ttf
      - copied unchanged from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/resources/ttf/DejaVuSans.ttf
   
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/ttf/FiraCode-Regular.ttf
      - copied unchanged from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/resources/ttf/FiraCode-Regular.ttf
   
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/ttf/Lohit-Bengali.ttf
      - copied unchanged from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/resources/ttf/Lohit-Bengali.ttf
   
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/ttf/NotoSansArabic-Regular.ttf
      - copied unchanged from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/resources/ttf/NotoSansArabic-Regular.ttf
   
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/ttf/NotoSansMath-Regular.ttf
      - copied unchanged from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/resources/ttf/NotoSansMath-Regular.ttf
   
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/ttf/NotoSansThai-Regular.ttf
      - copied unchanged from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/resources/ttf/NotoSansThai-Regular.ttf
   pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/txt/
   
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/txt/GlyphLayoutDIN91379.txt
      - copied unchanged from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/resources/txt/GlyphLayoutDIN91379.txt

Copied and modified: pdfbox/branches/3.0/pdfbox-layout-awt/pom.xml (from 
r1936107, pdfbox/trunk/pdfbox-layout-awt/pom.xml)
==============================================================================
--- pdfbox/trunk/pdfbox-layout-awt/pom.xml      Mon Jul 13 10:20:13 2026        
(r1936107, copy source)
+++ pdfbox/branches/3.0/pdfbox-layout-awt/pom.xml       Mon Jul 20 07:28:55 
2026        (r1936345)
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.pdfbox</groupId>
         <artifactId>pdfbox-parent</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>3.0.9-SNAPSHOT</version>
         <relativePath>../parent/pom.xml</relativePath>
     </parent>
 
@@ -45,20 +45,16 @@
     
     <dependencies>
         <dependency>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+            <version>${commons-logging.version}</version>
+        </dependency>
+        <dependency>
             <groupId>org.apache.pdfbox</groupId>
             <artifactId>pdfbox</artifactId>
             <version>${project.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-api</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.logging.log4j</groupId>
-            <artifactId>log4j-core</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
             <groupId>org.junit.jupiter</groupId>
             <artifactId>junit-jupiter</artifactId>
             <version>${junit.version}</version>

Copied and modified: 
pdfbox/branches/3.0/pdfbox-layout-awt/src/main/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutFontLoaderAwt.java
 (from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/main/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutFontLoaderAwt.java)
==============================================================================
--- 
pdfbox/trunk/pdfbox-layout-awt/src/main/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutFontLoaderAwt.java
        Mon Jul 13 10:20:13 2026        (r1936107, copy source)
+++ 
pdfbox/branches/3.0/pdfbox-layout-awt/src/main/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutFontLoaderAwt.java
 Mon Jul 20 07:28:55 2026        (r1936345)
@@ -28,6 +28,7 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Objects;
 import java.util.concurrent.ConcurrentHashMap;
+import org.apache.pdfbox.io.IOUtils;
 
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.font.PDFont;
@@ -114,7 +115,7 @@ public class GlyphLayoutFontLoaderAwt
         Objects.requireNonNull(inputStream, "InputStream must not be null");
 
         // Copy font stream into memory to read it twice for creation of 
PDType0Font and AWT Font
-        try (ByteArrayInputStream bais = new 
ByteArrayInputStream(inputStream.readAllBytes()))
+        try (ByteArrayInputStream bais = new 
ByteArrayInputStream(IOUtils.toByteArray(inputStream)))
         {
             PDType0Font pdType0Font = PDType0Font.load(pdDocument, bais, 
embedSubset);
             bais.reset();

Copied and modified: 
pdfbox/branches/3.0/pdfbox-layout-awt/src/main/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutProcessorAwt.java
 (from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/main/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutProcessorAwt.java)
==============================================================================
--- 
pdfbox/trunk/pdfbox-layout-awt/src/main/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutProcessorAwt.java
 Mon Jul 13 10:20:13 2026        (r1936107, copy source)
+++ 
pdfbox/branches/3.0/pdfbox-layout-awt/src/main/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutProcessorAwt.java
  Mon Jul 20 07:28:55 2026        (r1936345)
@@ -37,7 +37,8 @@ import org.apache.pdfbox.pdmodel.font.PD
 
 
 /**
- * Processor for glyph layout
+ * Processor for glyph layout. Note that this will work fully only in JDK9 or 
higher.
+ * DIN 91379 characters will work with JDK8.
  * <p>
  * Use an object of this class only in one thread.
  *

Copied and modified: 
pdfbox/branches/3.0/pdfbox-layout-awt/src/main/java/org/apache/pdfbox/glyphlayout/examples/GlyphLayoutHelloWorldAWT.java
 (from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/main/java/org/apache/pdfbox/glyphlayout/examples/GlyphLayoutHelloWorldAWT.java)
==============================================================================
--- 
pdfbox/trunk/pdfbox-layout-awt/src/main/java/org/apache/pdfbox/glyphlayout/examples/GlyphLayoutHelloWorldAWT.java
   Mon Jul 13 10:20:13 2026        (r1936107, copy source)
+++ 
pdfbox/branches/3.0/pdfbox-layout-awt/src/main/java/org/apache/pdfbox/glyphlayout/examples/GlyphLayoutHelloWorldAWT.java
    Mon Jul 20 07:28:55 2026        (r1936345)
@@ -29,8 +29,9 @@ import org.apache.pdfbox.pdmodel.PDPageC
 import org.apache.pdfbox.pdmodel.font.PDType0Font;
 
 /**
- * Creates a simple document with a TrueType font using GlyphLayoutProcessorAwt
- * adapted from org.apache.pdfbox.examples.pdmodel.HelloWorldTTF
+ * Creates a simple document with a TrueType font using 
GlyphLayoutProcessorAwt adapted from
+ * org.apache.pdfbox.examples.pdmodel.HelloWorldTTF. Note that this will work 
fully only in JDK9 or
+ * higher. DIN 91379 characters will work with JDK8.
  */
 public class GlyphLayoutHelloWorldAWT
 {

Copied: 
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/appended-resources/META-INF/LICENSE
 (from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/appended-resources/META-INF/LICENSE)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ 
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/appended-resources/META-INF/LICENSE
  Mon Jul 20 07:28:55 2026        (r1936345, copy of r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/appended-resources/META-INF/LICENSE)
@@ -0,0 +1,294 @@
+Lohit fonts (https://pagure.io/lohit):
+
+    Copyright 2011-15 Lohit Fonts Project contributors
+
+    This Font Software is licensed under the SIL Open Font License, Version 
1.1.
+    This license is copied below, and is also available with a FAQ at:
+    http://scripts.sil.org/OFL
+
+
+    -----------------------------------------------------------
+    SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+    -----------------------------------------------------------
+
+    PREAMBLE
+    The goals of the Open Font License (OFL) are to stimulate worldwide
+    development of collaborative font projects, to support the font creation
+    efforts of academic and linguistic communities, and to provide a free and
+    open framework in which fonts may be shared and improved in partnership
+    with others.
+
+    The OFL allows the licensed fonts to be used, studied, modified and
+    redistributed freely as long as they are not sold by themselves. The
+    fonts, including any derivative works, can be bundled, embedded, 
+    redistributed and/or sold with any software provided that any reserved
+    names are not used by derivative works. The fonts and derivatives,
+    however, cannot be released under any other type of license. The
+    requirement for fonts to remain under this license does not apply
+    to any document created using the fonts or their derivatives.
+
+    DEFINITIONS
+    "Font Software" refers to the set of files released by the Copyright
+    Holder(s) under this license and clearly marked as such. This may
+    include source files, build scripts and documentation.
+
+    "Reserved Font Name" refers to any names specified as such after the
+    copyright statement(s).
+
+    "Original Version" refers to the collection of Font Software components as
+    distributed by the Copyright Holder(s).
+
+    "Modified Version" refers to any derivative made by adding to, deleting,
+    or substituting -- in part or in whole -- any of the components of the
+    Original Version, by changing formats or by porting the Font Software to a
+    new environment.
+
+    "Author" refers to any designer, engineer, programmer, technical
+    writer or other person who contributed to the Font Software.
+
+    PERMISSION & CONDITIONS
+    Permission is hereby granted, free of charge, to any person obtaining
+    a copy of the Font Software, to use, study, copy, merge, embed, modify,
+    redistribute, and sell modified and unmodified copies of the Font
+    Software, subject to the following conditions:
+
+    1) Neither the Font Software nor any of its individual components,
+    in Original or Modified Versions, may be sold by itself.
+
+    2) Original or Modified Versions of the Font Software may be bundled,
+    redistributed and/or sold with any software, provided that each copy
+    contains the above copyright notice and this license. These can be
+    included either as stand-alone text files, human-readable headers or
+    in the appropriate machine-readable metadata fields within text or
+    binary files as long as those fields can be easily viewed by the user.
+
+    3) No Modified Version of the Font Software may use the Reserved Font
+    Name(s) unless explicit written permission is granted by the corresponding
+    Copyright Holder. This restriction only applies to the primary font name as
+    presented to the users.
+
+    4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+    Software shall not be used to promote, endorse or advertise any
+    Modified Version, except to acknowledge the contribution(s) of the
+    Copyright Holder(s) and the Author(s) or with their explicit written
+    permission.
+
+    5) The Font Software, modified or unmodified, in part or in whole,
+    must be distributed entirely under this license, and must not be
+    distributed under any other license. The requirement for fonts to
+    remain under this license does not apply to any document created
+    using the Font Software.
+
+    TERMINATION
+    This license becomes null and void if any of the above conditions are
+    not met.
+
+    DISCLAIMER
+    THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+    OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+    COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+    INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+    DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+    FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+    OTHER DEALINGS IN THE FONT SOFTWARE.
+
+
+FiraCode font:
+
+Copyright (c) 2014, The Fira Code Project Authors 
(https://github.com/tonsky/FiraCode)
+SIL Open Font License, see above
+
+
+NotoSans Arabic font:
+
+Copyright 2022 The Noto Project Authors (https://github.com/notofonts/arabic) 
+SIL Open Font License, see above
+
+
+Arimo font:
+
+Copyright 2026 The Arimo Project Authors 
(https://github.com/googlefonts/arimo) 
+SIL Open Font License, see above
+
+
+NotoSans Math font:
+
+Copyright 2022 The Noto Project Authors (https://github.com/notofonts/math)
+SIL Open Font License, see above
+
+
+NotoSans Thai font:
+Copyright 2022 The Noto Project Authors (https://github.com/notofonts/thai)
+
+
+Licenses for DejaVu font(s) (see also 
https://www.apache.org/legal/resolved.html ):
+
+Fonts are (c) Bitstream (see below). DejaVu changes are in public domain.
+Glyphs imported from Arev fonts are (c) Tavmjong Bah (see below)
+
+
+Bitstream Vera Fonts Copyright
+------------------------------
+
+Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is
+a trademark of Bitstream, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of the fonts accompanying this license ("Fonts") and associated
+documentation files (the "Font Software"), to reproduce and distribute the
+Font Software, including without limitation the rights to use, copy, merge,
+publish, distribute, and/or sell copies of the Font Software, and to permit
+persons to whom the Font Software is furnished to do so, subject to the
+following conditions:
+
+The above copyright and trademark notices and this permission notice shall
+be included in all copies of one or more of the Font Software typefaces.
+
+The Font Software may be modified, altered, or added to, and in particular
+the designs of glyphs or characters in the Fonts may be modified and
+additional glyphs or characters may be added to the Fonts, only if the fonts
+are renamed to names not containing either the words "Bitstream" or the word
+"Vera".
+
+This License becomes null and void to the extent applicable to Fonts or Font
+Software that has been modified and is distributed under the "Bitstream
+Vera" names.
+
+The Font Software may be sold as part of a larger software package but no
+copy of one or more of the Font Software typefaces may be sold by itself.
+
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
+TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME
+FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING
+ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE
+FONT SOFTWARE.
+
+Except as contained in this notice, the names of Gnome, the Gnome
+Foundation, and Bitstream Inc., shall not be used in advertising or
+otherwise to promote the sale, use or other dealings in this Font Software
+without prior written authorization from the Gnome Foundation or Bitstream
+Inc., respectively. For further information, contact: fonts at gnome dot org.
+
+Arev Fonts Copyright
+------------------------------
+
+Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the fonts accompanying this license ("Fonts") and
+associated documentation files (the "Font Software"), to reproduce
+and distribute the modifications to the Bitstream Vera Font Software,
+including without limitation the rights to use, copy, merge, publish,
+distribute, and/or sell copies of the Font Software, and to permit
+persons to whom the Font Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright and trademark notices and this permission notice
+shall be included in all copies of one or more of the Font Software
+typefaces.
+
+The Font Software may be modified, altered, or added to, and in
+particular the designs of glyphs or characters in the Fonts may be
+modified and additional glyphs or characters may be added to the
+Fonts, only if the fonts are renamed to names not containing either
+the words "Tavmjong Bah" or the word "Arev".
+
+This License becomes null and void to the extent applicable to Fonts
+or Font Software that has been modified and is distributed under the 
+"Tavmjong Bah Arev" names.
+
+The Font Software may be sold as part of a larger software package but
+no copy of one or more of the Font Software typefaces may be sold by
+itself.
+
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL
+TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
+
+Except as contained in this notice, the name of Tavmjong Bah shall not
+be used in advertising or otherwise to promote the sale, use or other
+dealings in this Font Software without prior written authorization
+from Tavmjong Bah. For further information, contact: tavmjong @ free . fr.
+
+TeX Gyre DJV Math
+-----------------
+Fonts are (c) Bitstream (see below). DejaVu changes are in public domain.
+
+Math extensions done by B. Jackowski, P. Strzelczyk and P. Pianowski
+(on behalf of TeX users groups) are in public domain.
+
+Letters imported from Euler Fraktur from AMSfonts are (c) American 
Mathematical Society (see below).
+Bitstream Vera Fonts Copyright
+Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera
+is a trademark of Bitstream, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of the fonts accompanying this license (“Fonts”) and associated documentation
+files (the “Font Software”), to reproduce and distribute the Font Software,
+including without limitation the rights to use, copy, merge, publish, 
distribute,
+and/or sell copies of the Font Software, and to permit persons  to whom
+the Font Software is furnished to do so, subject to the following conditions:
+
+The above copyright and trademark notices and this permission notice shall be
+included in all copies of one or more of the Font Software typefaces.
+
+The Font Software may be modified, altered, or added to, and in particular
+the designs of glyphs or characters in the Fonts may be modified and additional
+glyphs or characters may be added to the Fonts, only if the fonts are renamed
+to names not containing either the words “Bitstream” or the word “Vera”.
+
+This License becomes null and void to the extent applicable to Fonts or Font 
Software
+that has been modified and is distributed under the “Bitstream Vera” names.
+
+The Font Software may be sold as part of a larger software package but no copy
+of one or more of the Font Software typefaces may be sold by itself.
+
+THE FONT SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
+TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION
+BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL,
+SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO 
USE
+THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
+Except as contained in this notice, the names of GNOME, the GNOME Foundation,
+and Bitstream Inc., shall not be used in advertising or otherwise to promote
+the sale, use or other dealings in this Font Software without prior written
+authorization from the GNOME Foundation or Bitstream Inc., respectively.
+For further information, contact: fonts at gnome dot org.
+
+AMSFonts (v. 2.2) copyright
+
+The PostScript Type 1 implementation of the AMSFonts produced by and
+previously distributed by Blue Sky Research and Y&Y, Inc. are now freely
+available for general use. This has been accomplished through the cooperation
+of a consortium of scientific publishers with Blue Sky Research and Y&Y.
+Members of this consortium include:
+
+Elsevier Science IBM Corporation Society for Industrial and Applied
+Mathematics (SIAM) Springer-Verlag American Mathematical Society (AMS)
+
+In order to assure the authenticity of these fonts, copyright will be held by
+the American Mathematical Society. This is not meant to restrict in any way
+the legitimate use of the fonts, such as (but not limited to) electronic
+distribution of documents containing these fonts, inclusion of these fonts
+into other public domain or commercial font collections or computer
+applications, use of the outline data to create derivative fonts and/or
+faces, etc. However, the AMS does require that the AMS copyright notice be
+removed from any derivative versions of the fonts which have been altered in
+any way. In addition, to ensure the fidelity of TeX documents using Computer
+Modern fonts, Professor Donald Knuth, creator of the Computer Modern faces,
+has requested that any alterations which yield different font metrics be
+given a different name.
\ No newline at end of file

Copied and modified: 
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutBidiTest.java
 (from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutBidiTest.java)
==============================================================================
--- 
pdfbox/trunk/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutBidiTest.java
     Mon Jul 13 10:20:13 2026        (r1936107, copy source)
+++ 
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutBidiTest.java
      Mon Jul 20 07:28:55 2026        (r1936345)
@@ -26,12 +26,15 @@ import org.apache.pdfbox.pdmodel.PDDocum
 import org.apache.pdfbox.pdmodel.PDPage;
 import org.apache.pdfbox.pdmodel.PDPageContentStream;
 import org.apache.pdfbox.pdmodel.font.PDType0Font;
+import org.junit.jupiter.api.condition.EnabledForJreRange;
+import org.junit.jupiter.api.condition.JRE;
 
 /**
  * Examples for bidirectional text with GlyphLayoutProcessorAwt
  *
  * @author Volker Kunert
  */
+@EnabledForJreRange(min = JRE.JAVA_9)
 public class GlyphLayoutBidiTest extends TestBase
 {
     public static final String TEXT1 = "نحن الآن في شهر رمضان 1447 هجري";

Copied: 
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutDin91379FormTest.java
 (from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutDin91379FormTest.java)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ 
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutDin91379FormTest.java
      Mon Jul 20 07:28:55 2026        (r1936345, copy of r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutDin91379FormTest.java)
@@ -0,0 +1,132 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.pdfbox.glyphlayout.awt;
+
+import java.awt.FontFormatException;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URISyntaxException;
+import org.apache.pdfbox.Loader;
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
+import org.apache.pdfbox.pdmodel.PDResources;
+import org.apache.pdfbox.pdmodel.font.PDType0Font;
+import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm;
+import org.apache.pdfbox.pdmodel.interactive.form.PDField;
+import org.apache.pdfbox.pdmodel.interactive.form.PDTextField;
+import org.junit.jupiter.api.Test;
+
+/*
+ * Example of formatting for letters defined in:
+ * DIN 91379: Characters and defined character sequences in Unicode for the 
electronic processing of names
+ * and data exchange in Europe
+ * <p>
+ * Use of the glyph layout features of Java that are based on HarfBuzz
+ *
+ * @author Volker Kunert
+ */
+
+class GlyphLayoutDin91379FormTest extends TestBase
+{
+    static String LATIN_CHARS_DIN_91379 =
+                    "DIN 91379: Characters in Unicode for the electronic 
processing of names "
+                    + "and data exchange in Europe\n"
+                    + "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"
+                    + "gl; Greek Letters (extended)\n"
+                    + "Ά Έ Ή Ί Ό Ύ Ώ ΐ Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ "
+                    + "Τ Υ Φ Χ Ψ Ω Ϊ Ϋ ά έ ή ί ΰ α β γ δ ε ζ η θ ι κ λ μ ν "
+                    + "ξ ο π ρ ς σ τ υ φ χ ψ ω ϊ ϋ ό ύ ώ \n"
+                    + "cl; Cyrillic Letters (extended)\n"
+                    + "Ѝ А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш "
+                    + "Щ Ъ Ь Ю Я а б в г д е ж з и й к л м н о п р с т у ф "
+                    + "х ц ч ш щ ъ ь ю я ѝ \n"
+                    + "enl; Non-Letters E1 (extended)\n"
+                    + "ƒ ʰ ʳ ˆ ˜ ˢ ᵈ ᵗ ‘ ‚ “ ” „ † … ‰ ′ ″ ‹ › ⁰ ⁴ ⁵ ⁶ ⁷ ⁸ "
+                    + "⁹ ⁿ ₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉ ™ ∞ ≤ ≥ \n"
+                    + "Additional non-letters (not included in DIN 91379): – — 
•�";
+
+    @Test
+    void testGlyphLayoutDin91379Form() throws IOException, 
FontFormatException, URISyntaxException
+    {
+        GlyphLayoutProcessorAwt glyphLayoutProcessor = new 
GlyphLayoutProcessorAwt();
+
+        String outputName = "GlyphLayoutDIN91379Form.pdf";
+        String outputFilename = "target/" + outputName;
+
+        String fontSizeString = "12";
+
+        InputStream fontStream = 
GlyphLayoutDin91379FormTest.class.getResourceAsStream("/ttf/Arimo-Regular.ttf");
+        File pdfForm = new 
File(GlyphLayoutDin91379FormTest.class.getResource("/pdf/PdfForm.pdf").toURI());
+
+        try (PDDocument doc = Loader.loadPDF(pdfForm))
+        {
+            // embedSubset has to be set to false
+            // last parameter is just for test coverage
+            PDType0Font font = glyphLayoutProcessor.loadFont(doc, fontStream, 
+                    false, new GlyphLayoutFontLoaderAwt.FontOptions());
+
+            PDDocumentCatalog docCatalog = doc.getDocumentCatalog();
+            PDAcroForm acroForm = docCatalog.getAcroForm();
+
+            acroForm.setGlyphLayoutProcessor(glyphLayoutProcessor);
+
+            PDResources resources = new PDResources();
+            String resourceFontName = resources.add(font).getName();
+            acroForm.setDefaultResources(resources);
+            for (PDField field : acroForm.getFields())
+            {
+                if (field instanceof PDTextField)
+                {
+                    PDTextField textfield = (PDTextField) field;
+                    textfield.setDefaultAppearance(
+                            String.format("/%s %s Tf 0 g ", resourceFontName, 
fontSizeString));
+                    textfield.setValue(LATIN_CHARS_DIN_91379);
+                }
+            }
+            acroForm.refreshAppearances();
+            acroForm.flatten();
+            doc.save(outputFilename);
+        }
+        checkRenderIdent(outputName);
+    }
+}

Copied: 
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutDin91379Test.java
 (from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutDin91379Test.java)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ 
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutDin91379Test.java
  Mon Jul 20 07:28:55 2026        (r1936345, copy of r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutDin91379Test.java)
@@ -0,0 +1,165 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.pdfbox.glyphlayout.awt;
+
+import java.awt.FontFormatException;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.net.URISyntaxException;
+import org.apache.pdfbox.Loader;
+
+import org.junit.jupiter.api.Test;
+
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.pdmodel.PDPage;
+import org.apache.pdfbox.pdmodel.PDPageContentStream;
+import org.apache.pdfbox.pdmodel.font.PDType0Font;
+import org.apache.pdfbox.text.PDFTextStripper;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+/**
+ * Example of formatting for letters defined in: DIN 91379: Characters in 
Unicode for the electronic
+ * processing of names and data exchange in Europe
+ * <p>
+ * Use of the positioning features of Java.
+ *
+ * @author Volker Kunert
+ */
+class GlyphLayoutDin91379Test extends TestBase
+{
+    static String LATIN_CHARS_DIN_91379 =
+                    "DIN 91379: Characters in Unicode for the electronic 
processing of names\n"
+                    + "and data exchange in Europe\n"
+                    + "Font used: Arimo-Regular.ttf\n"
+                    + "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\n"
+                    + "À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö Ø Ù Ú Û Ü 
Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó\n"
+                    + "ô õ ö ø ù ú û ü ý þ ÿ Ā ā Ă ă Ą ą Ć ć Ĉ ĉ Ċ ċ Č č Ď ď Đ 
đ Ē ē Ĕ ĕ Ė ė Ę ę Ě ě Ĝ ĝ Ğ ğ Ġ ġ Ģ ģ Ĥ ĥ Ħ\n"
+                    + "ħ Ĩ ĩ Ī ī Ĭ ĭ Į į İ ı IJ ij Ĵ ĵ Ķ ķ ĸ Ĺ ĺ Ļ ļ Ľ ľ Ŀ ŀ Ł ł 
Ń ń Ņ ņ Ň ň ʼ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"
+                    + "gl; Greek Letters (extended)\n"
+                    + "Ά Έ Ή Ί Ό Ύ Ώ ΐ Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ\n"
+                    + "Τ Υ Φ Χ Ψ Ω Ϊ Ϋ ά έ ή ί ΰ α β γ δ ε ζ η θ ι κ λ μ ν\n"
+                    + "ξ ο π ρ ς σ τ υ φ χ ψ ω ϊ ϋ ό ύ ώ\n"
+                    + "cl; Cyrillic Letters (extended)\n"
+                    + "Ѝ А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш\n"
+                    + "Щ Ъ Ь Ю Я а б в г д е ж з и й к л м н о п р с т у ф\n"
+                    + "х ц ч ш щ ъ ь ю я ѝ\n"
+                    + "enl; Non-Letters E1 (extended)\n"
+                    + "ƒ ʰ ʳ ˆ ˜ ˢ ᵈ ᵗ ‘ ‚ “ ” „ † … ‰ ′ ″ ‹ › ⁰ ⁴ ⁵ ⁶ ⁷ ⁸\n"
+                    + "⁹ ⁿ ₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉ ™ ∞ ≤ ≥\n"
+                    + "Additional non-letters (not included in DIN 91379): – — 
•�";
+
+    @Test
+    void testGlyphLayoutDin91379() throws IOException, FontFormatException, 
URISyntaxException
+    {
+        GlyphLayoutProcessorAwt glyphLayoutProcessor = new 
GlyphLayoutProcessorAwt();
+
+        String outputName = "GlyphLayoutDIN91379.pdf";
+        String outputPDFFilename = "target/" + outputName;
+        String outputTextFilename = "target/GlyphLayoutDIN91379.txt";
+        float fontSize = 12.0f;
+
+        try (PDDocument doc = new PDDocument())
+        {
+            // Works poorly with DejaVu Sans, see discussion on PDFBOX-4951 on 
5.7.2026
+            InputStream fontStream = 
GlyphLayoutDin91379Test.class.getResourceAsStream("/ttf/Arimo-Regular.ttf");
+            // last parameter is just for better code coverage
+            PDType0Font font = glyphLayoutProcessor.loadFont(doc, fontStream, 
true);
+
+            PDPage page = new PDPage();
+            doc.addPage(page);
+            try (PDPageContentStream cs = new PDPageContentStream(doc, page))
+            {
+                cs.setGlyphLayoutProcessor(glyphLayoutProcessor);
+
+                float x = page.getBBox().getLowerLeftX() + fontSize;
+                float y = page.getBBox().getUpperRightY() - fontSize;
+                showComposites(cs, font, fontSize, x, y, 
LATIN_CHARS_DIN_91379);
+            }
+            doc.save(outputPDFFilename);
+        }
+        checkRenderIdent(outputName);
+        
+        try (PDDocument doc = Loader.loadPDF(new File(outputPDFFilename)))
+        {
+            assertEquals(1, doc.getNumberOfPages());
+            
+            PDFTextStripper stripper = new PDFTextStripper();
+            String s = stripper.getText(doc);
+            try (OutputStream os = new FileOutputStream(outputTextFilename))
+            {
+                os.write (0xEF);
+                os.write (0xBB);
+                os.write (0xBF);
+
+                try (Writer writer = new BufferedWriter(new 
OutputStreamWriter(os, "utf-8")))
+                {
+                    //TODO compare this output with the input, like in 
TextStripper test
+                    // Not yet correct as of 4.7.2026
+                    writer.write(s);
+                }
+            }
+        }
+    }
+
+    /*
+     * break the text into lines and show them
+     */
+    private void showComposites(PDPageContentStream cs, PDType0Font font, 
float fontSize,
+            float x, float y, String s) throws IOException
+    {
+
+        s = s.replaceAll("\t", "    ");
+        String[] lines = s.split("[\n]");
+
+        for (String line : lines)
+        {
+            if (!line.isEmpty())
+            {
+                showCompositesLine(cs, font, fontSize, x, y, line);
+                y -= fontSize * 1.5;
+            }
+        }
+    }
+}

Copied and modified: 
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutHelloWorldAWTTest.java
 (from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutHelloWorldAWTTest.java)
==============================================================================
--- 
pdfbox/trunk/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutHelloWorldAWTTest.java
    Mon Jul 13 10:20:13 2026        (r1936107, copy source)
+++ 
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutHelloWorldAWTTest.java
     Mon Jul 20 07:28:55 2026        (r1936345)
@@ -24,11 +24,14 @@ import java.net.URISyntaxException;
 import org.junit.jupiter.api.Test;
 
 import org.apache.pdfbox.glyphlayout.examples.GlyphLayoutHelloWorldAWT;
+import org.junit.jupiter.api.condition.EnabledForJreRange;
+import org.junit.jupiter.api.condition.JRE;
 
 /**
  *
  * @author Tilman Hausherr
  */
+@EnabledForJreRange(min = JRE.JAVA_9)
 class GlyphLayoutHelloWorldAWTTest extends TestBase
 {
     @Test

Copied and modified: 
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutLigaturesAndKerningTest.java
 (from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutLigaturesAndKerningTest.java)
==============================================================================
--- 
pdfbox/trunk/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutLigaturesAndKerningTest.java
      Mon Jul 13 10:20:13 2026        (r1936107, copy source)
+++ 
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutLigaturesAndKerningTest.java
       Mon Jul 20 07:28:55 2026        (r1936345)
@@ -39,7 +39,10 @@ import org.apache.pdfbox.pdmodel.PDDocum
 import org.apache.pdfbox.pdmodel.PDPage;
 import org.apache.pdfbox.pdmodel.PDPageContentStream;
 import org.apache.pdfbox.pdmodel.font.PDType0Font;
+import org.junit.jupiter.api.condition.EnabledForJreRange;
+import org.junit.jupiter.api.condition.JRE;
 
+@EnabledForJreRange(min = JRE.JAVA_9)
 class GlyphLayoutLigaturesAndKerningTest extends TestBase
 {
     static final String FIRACODE_STRING = "!= == === >= <=";

Copied and modified: 
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutSMPTest.java
 (from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutSMPTest.java)
==============================================================================
--- 
pdfbox/trunk/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutSMPTest.java
      Mon Jul 13 10:20:13 2026        (r1936107, copy source)
+++ 
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/GlyphLayoutSMPTest.java
       Mon Jul 20 07:28:55 2026        (r1936345)
@@ -26,6 +26,8 @@ import org.apache.pdfbox.pdmodel.PDPage;
 import org.apache.pdfbox.pdmodel.PDPageContentStream;
 import org.apache.pdfbox.pdmodel.font.PDType0Font;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.EnabledForJreRange;
+import org.junit.jupiter.api.condition.JRE;
 
 /**
  * Examples for Supplementary Multilingual Plane with GlyphLayoutProcessorAwt 
that require a
@@ -34,6 +36,7 @@ import org.junit.jupiter.api.Test;
  *
  * @author Volker Kunert
  */
+@EnabledForJreRange(min = JRE.JAVA_9)
 class GlyphLayoutSMPTest extends TestBase
 {
     private static final String TEXT_INTRO =

Copied: 
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/TestBase.java
 (from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/TestBase.java)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ 
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/TestBase.java
 Mon Jul 20 07:28:55 2026        (r1936345, copy of r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/java/org/apache/pdfbox/glyphlayout/awt/TestBase.java)
@@ -0,0 +1,109 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.pdfbox.glyphlayout.awt;
+
+import java.awt.FontFormatException;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URISyntaxException;
+import org.apache.pdfbox.Loader;
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.pdmodel.PDPageContentStream;
+import org.apache.pdfbox.pdmodel.font.PDType0Font;
+import org.apache.pdfbox.rendering.PDFRenderer;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.fail;
+
+/**
+ *
+ * @author Tilman Hausherr
+ * @author Volker Kunert
+ */
+class TestBase
+{
+    void checkRenderIdent(String outputName) throws IOException, 
URISyntaxException
+    {
+        BufferedImage expectedImage;
+        BufferedImage actualImage;
+        try (PDDocument doc = Loader.loadPDF(new File("target/" + outputName)))
+        {
+            PDFRenderer r = new PDFRenderer(doc);
+            expectedImage = r.renderImage(0);
+        }
+        try (PDDocument doc = Loader.loadPDF(new 
File(TestBase.class.getResource("/pdf/" + outputName).toURI())))
+        {
+            PDFRenderer r = new PDFRenderer(doc);
+            actualImage = r.renderImage(0);
+        }
+
+        // copied from ValidateXImage.checkIdent()
+        int w = expectedImage.getWidth();
+        int h = expectedImage.getHeight();
+        assertEquals(w, actualImage.getWidth());
+        assertEquals(h, actualImage.getHeight());
+        for (int y = 0; y < h; ++y)
+        {
+            for (int x = 0; x < w; ++x)
+            {
+                int p1 = expectedImage.getRGB(x, y);
+                int p2 = actualImage.getRGB(x, y);
+                if (p1 != p2)
+                {
+                    String errMsg = String.format("(%d,%d) expected: <%08X> 
but was: <%08X>; ", 
+                            x, y, p1, p2);
+                    fail(errMsg);
+                }
+            }
+        }
+    }
+
+    /**
+     * Create the PDType0Font font
+     */
+    PDType0Font createPdType0Font(GlyphLayoutProcessorAwt 
glyphLayoutProcessor, PDDocument doc,
+            String fontPath) throws IOException, FontFormatException
+    {
+        return createPdType0Font(glyphLayoutProcessor, doc, fontPath, new 
GlyphLayoutFontLoaderAwt.FontOptions());
+    }
+
+    /*
+     * Create the PDType0Font font with font options
+     */
+    PDType0Font createPdType0Font(GlyphLayoutProcessorAwt 
glyphLayoutProcessor, PDDocument doc,
+            String fontPath, GlyphLayoutFontLoaderAwt.FontOptions fontOptions) 
throws IOException, FontFormatException
+    {
+        try (InputStream fontStream = 
this.getClass().getResourceAsStream(fontPath))
+        {
+            return glyphLayoutProcessor.loadFont(doc, fontStream, fontOptions);
+        }
+    }
+
+    /*
+     * show one line
+     */
+    void showCompositesLine(PDPageContentStream cs, PDType0Font font, float 
fontSize,
+            float x, float y, String line) throws IOException
+    {
+        cs.beginText();
+        cs.setFont(font, fontSize);
+        cs.newLineAtOffset(x, y);
+        cs.showText(line);
+        cs.endText();
+    }
+}

Copied: 
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/pdf/GlyphLayoutBidi.pdf
 (from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/resources/pdf/GlyphLayoutBidi.pdf)
==============================================================================
Binary file (source and/or target). No diff available.

Copied: 
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/pdf/GlyphLayoutDIN91379.pdf
 (from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/resources/pdf/GlyphLayoutDIN91379.pdf)
==============================================================================
Binary file (source and/or target). No diff available.

Copied: 
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/pdf/GlyphLayoutDIN91379Form.pdf
 (from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/resources/pdf/GlyphLayoutDIN91379Form.pdf)
==============================================================================
Binary file (source and/or target). No diff available.

Copied: 
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/pdf/GlyphLayoutLigaturesAndKerning.pdf
 (from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/resources/pdf/GlyphLayoutLigaturesAndKerning.pdf)
==============================================================================
Binary file (source and/or target). No diff available.

Copied: 
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/pdf/GlyphLayoutSMP.pdf 
(from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/resources/pdf/GlyphLayoutSMP.pdf)
==============================================================================
Binary file (source and/or target). No diff available.

Copied: 
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/pdf/HelloWorld.pdf 
(from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/resources/pdf/HelloWorld.pdf)
==============================================================================
Binary file (source and/or target). No diff available.

Copied: 
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/pdf/PdfForm.pdf (from 
r1936107, pdfbox/trunk/pdfbox-layout-awt/src/test/resources/pdf/PdfForm.pdf)
==============================================================================
Binary file (source and/or target). No diff available.

Copied: 
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/ttf/Arimo-Regular.ttf 
(from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/resources/ttf/Arimo-Regular.ttf)
==============================================================================
Binary file (source and/or target). No diff available.

Copied: 
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/ttf/DejaVuSans.ttf 
(from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/resources/ttf/DejaVuSans.ttf)
==============================================================================
Binary file (source and/or target). No diff available.

Copied: 
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/ttf/FiraCode-Regular.ttf
 (from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/resources/ttf/FiraCode-Regular.ttf)
==============================================================================
Binary file (source and/or target). No diff available.

Copied: 
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/ttf/Lohit-Bengali.ttf 
(from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/resources/ttf/Lohit-Bengali.ttf)
==============================================================================
Binary file (source and/or target). No diff available.

Copied: 
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/ttf/NotoSansArabic-Regular.ttf
 (from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/resources/ttf/NotoSansArabic-Regular.ttf)
==============================================================================
Binary file (source and/or target). No diff available.

Copied: 
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/ttf/NotoSansMath-Regular.ttf
 (from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/resources/ttf/NotoSansMath-Regular.ttf)
==============================================================================
Binary file (source and/or target). No diff available.

Copied: 
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/ttf/NotoSansThai-Regular.ttf
 (from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/resources/ttf/NotoSansThai-Regular.ttf)
==============================================================================
Binary file (source and/or target). No diff available.

Copied: 
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/txt/GlyphLayoutDIN91379.txt
 (from r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/resources/txt/GlyphLayoutDIN91379.txt)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ 
pdfbox/branches/3.0/pdfbox-layout-awt/src/test/resources/txt/GlyphLayoutDIN91379.txt
        Mon Jul 20 07:28:55 2026        (r1936345, copy of r1936107, 
pdfbox/trunk/pdfbox-layout-awt/src/test/resources/txt/GlyphLayoutDIN91379.txt)
@@ -0,0 +1,41 @@
+DIN 91379: Characters in Unicode for the electronic processing of names 
+and data exchange in Europe
+Font used: Arimo-Regular.ttf
+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 Ŋ ŋ Ō ō 
Ŏ ŏ Ő ő Œ œ Ŕ ŕ Ŗ ŗ Ř ř Ś ś Ŝ ŝ Ş
+ş Š š Ţ ţ Ť ť Ŧ ŧ Ũ ũ Ū ū Ŭ ŭ Ů ů Ű ű Ų ų Ŵ ŵ Ŷ ŷ Ÿ Ź ź Ż ż Ž ž Ƈ ƈ Ə Ɨ Ơ ơ Ư 
ư Ʒ Ǎ ǎ Ǐ ǐ Ǒ ǒ Ǔ ǔ Ǖ ǖ
+Ǘ ǘ Ǚ ǚ Ǜ ǜ Ǟ ǟ Ǣ ǣ Ǥ ǥ Ǧ ǧ Ǩ ǩ Ǫ ǫ Ǭ ǭ Ǯ ǯ ǰ Ǵ ǵ Ǹ ǹ Ǻ ǻ Ǽ ǽ Ǿ ǿ Ȓ ȓ Ș ș Ț ț 
Ȟ ȟ ȧ Ȩ ȩ Ȫ ȫ Ȭ ȭ
+Ȯ ȯ Ȱ ȱ Ȳ ȳ ə ɨ ʒ Ḃ ḃ Ḇ ḇ Ḋ ḋ Ḍ ḍ Ḏ ḏ Ḑ ḑ ḗ Ḝ ḝ Ḟ ḟ Ḡ ḡ Ḣ ḣ Ḥ ḥ Ḧ ḧ Ḩ ḩ Ḫ ḫ ḯ 
Ḱ ḱ Ḳ ḳ Ḵ ḵ Ḷ ḷ Ḻ ḻ Ṁ
+ṁ Ṃ ṃ Ṅ ṅ Ṇ ṇ Ṉ ṉ Ṓ ṓ Ṕ ṕ Ṗ ṗ Ṙ ṙ Ṛ ṛ Ṟ ṟ Ṡ ṡ Ṣ ṣ Ṫ ṫ Ṭ ṭ Ṯ ṯ Ẁ ẁ Ẃ ẃ Ẅ ẅ Ẇ ẇ 
Ẍ ẍ Ẏ ẏ Ẑ ẑ Ẓ ẓ Ẕ ẕ
+ẖ ẗ ẞ Ạ ạ Ả ả Ấ ấ Ầ ầ Ẩ ẩ Ẫ ẫ Ậ ậ Ắ ắ Ằ ằ Ẳ ẳ Ẵ ẵ Ặ ặ Ẹ ẹ Ẻ ẻ Ẽ ẽ Ế ế Ề ề Ể ể 
Ễ ễ Ệ ệ Ỉ ỉ Ị ị Ọ ọ Ỏ ỏ Ố
+ố Ồ ồ Ổ ổ Ỗ ỗ Ộ ộ Ớ ớ Ờ ờ Ở ở Ỡ ỡ Ợ ợ Ụ ụ Ủ ủ Ứ ứ Ừ ừ Ử ử Ữ ữ Ự ự Ỳ ỳ Ỵ ỵ Ỷ ỷ 
Ỹ ỹ
+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̦ ȷ ́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̧ Ç̆ Û̄ ç̆ û̄ ÿ́ Č̕ Č̣ č ̕č ̣ē̍ Ī́ ī́ 
+ō̍ Ž̦ Ž̧ ž̦ ž̧ Ḳ̄ ḳ̄ Ṣ̄ ṣ̄ Ṭ̄ ṭ̄ Ạ̈ ạ̈ Ọ̈ ọ̈ Ụ̄ Ụ̈ ụ̄ ụ̈ 
+bnlreq; Non-Letters N1 (normative)
+  ' , - . ` ~ ¨ ´ · ʹ ʺ ʾ ʿ ˈ ˌ ’ ‡ 
+bnl; Non-Letters N2 (normative)
+! " # $ % & ( ) * + / 0 1 2 3 4 5 6 7 8 9 : ; < = > 
+? @ [ \ ] ^ _ { | } ¡ ¢ £ ¥ § © ª « ¬ ® ¯ ° ± ² ³ µ 
+¶ ¹ º » ¿ × ÷ € 
+bnlopt; Non-Letters N3 (normative)
+¤ ¦ ¸ ¼ ½ ¾ 
+gl; Greek Letters (extended)
+Ά Έ Ή Ί Ό Ύ Ώ ΐ Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ 
+Τ Υ Φ Χ Ψ Ω Ϊ Ϋ ά έ ή ί ΰ α β γ δ ε ζ η θ ι κ λ μ ν 
+ξ ο π ρ ς σ τ υ φ χ ψ ω ϊ ϋ ό ύ ώ 
+cl; Cyrillic Letters (extended)
+Ѝ А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш 
+Щ Ъ Ь Ю Я а б в г д е ж з и й к л м н о п р с т у ф 
+х ц ч ш щ ъ ь ю я ѝ 
+enl; Non-Letters E1 (extended)
+ƒ ʰ ʳ ˆ ˜ ˢ ᵈ ᵗ ‘ ‚ “ ” „ † … ‰ ′ ″ ‹ › ⁰ ⁴ ⁵ ⁶ ⁷ ⁸ 
+⁹ ⁿ ₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉ ™ ∞ ≤ ≥ 
+Additional non-letters (not included in DIN 91379): – — •�

Reply via email to