Author: tilman
Date: Sat Aug 29 10:46:19 2026
New Revision: 1937605
Log:
PDFBOX-5660: improve test coverage
Modified:
pdfbox/trunk/fontbox/src/test/java/org/apache/fontbox/ttf/TestTTFParser.java
Modified:
pdfbox/trunk/fontbox/src/test/java/org/apache/fontbox/ttf/TestTTFParser.java
==============================================================================
---
pdfbox/trunk/fontbox/src/test/java/org/apache/fontbox/ttf/TestTTFParser.java
Sat Aug 29 10:46:15 2026 (r1937604)
+++
pdfbox/trunk/fontbox/src/test/java/org/apache/fontbox/ttf/TestTTFParser.java
Sat Aug 29 10:46:19 2026 (r1937605)
@@ -18,6 +18,8 @@ package org.apache.fontbox.ttf;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
import java.io.File;
import java.io.IOException;
@@ -112,6 +114,55 @@ class TestTTFParser
}
@Test
+ void testParseMisc() throws IOException
+ {
+ final File testFile = new
File("src/test/resources/ttf/LiberationSans-Regular.ttf");
+ TTFParser parser = new TTFParser();
+ TrueTypeFont ttf = parser.parse(new
RandomAccessReadBufferedFile(testFile));
+ KerningSubtable horizontalKerningSubtable =
ttf.getKerning().getHorizontalKerningSubtable();
+ assertNull(ttf.getVerticalHeader());
+ assertNull(ttf.getVerticalMetrics());
+ assertNull(ttf.getVerticalOrigin());
+ assertTrue(horizontalKerningSubtable.isHorizontalKerning());
+ assertEquals(-113, horizontalKerningSubtable.getKerning(3, 36)); //
first
+ assertEquals(-68, horizontalKerningSubtable.getKerning(2026, 987)); //
last
+ assertEquals(2048, ttf.getUnitsPerEm());
+ assertEquals(1139, ttf.getAdvanceWidth(19));
+ assertEquals(250, ttf.getAdvanceHeight(19)); // default
+ assertEquals("[-543.9453,-303.22266,1301.7578,979.98047]",
ttf.getFontBBox().toString());
+ assertEquals("[4.8828125E-4, 0, 0, 4.8828125E-4, 0, 0]",
ttf.getFontMatrix().toString());
+ assertTrue(ttf.hasGlyph("A"));
+ assertFalse(ttf.hasGlyph("blubb"));
+ assertEquals("LiberationSans", ttf.toString());
+ }
+
+ @Test
+ public void testParseVertical() throws IOException
+ {
+ File ipaFont = new File("target/fonts/ipag00303", "ipag.ttf");
+ TrueTypeFont ttf = new TTFParser().parse(new
RandomAccessReadBufferedFile(ipaFont));
+ VerticalHeaderTable verticalHeader = ttf.getVerticalHeader();
+ assertEquals(1802, verticalHeader.getAscender());
+ assertEquals(2048, verticalHeader.getAdvanceHeightMax());
+ assertEquals(0, verticalHeader.getCaretSlopeRise());
+ assertEquals(1, verticalHeader.getCaretSlopeRun());
+ assertEquals(0, verticalHeader.getCaretOffset());
+ assertEquals(246, verticalHeader.getDescender());
+ assertEquals(0, verticalHeader.getLineGap());
+ assertEquals(0, verticalHeader.getMetricDataFormat());
+ assertEquals(-103, verticalHeader.getMinTopSideBearing());
+ assertEquals(-325, verticalHeader.getMinBottomSideBearing());
+ assertEquals(1f, verticalHeader.getVersion());
+ assertEquals(2373, verticalHeader.getYMaxExtent());
+ VerticalMetricsTable verticalMetrics = ttf.getVerticalMetrics();
+ assertEquals(2048, verticalMetrics.getAdvanceHeight(19));
+ assertEquals(290, verticalMetrics.getTopSideBearing(19));
+ assertNull(ttf.getVerticalOrigin());
+ assertEquals(1290, ttf.getAdvanceWidth(19));
+ assertEquals(2048, ttf.getAdvanceHeight(19));
+ }
+
+ @Test
void testParseHeaders() throws IOException
{
final File testFile = new
File("src/test/resources/ttf/LiberationSans-Regular.ttf");