From add52ef5a6108987f96ea1c90f5100070d178c7d Mon Sep 17 00:00:00 2001 From: pskdream Date: Thu, 22 Jan 2026 17:19:25 +0700 Subject: [PATCH] feat: enhance FopGlyphProcessor with character associations and add tests --- .../openpdf/text/pdf/FopGlyphProcessor.java | 17 +++- .../text/pdf/FopGlyphProcessorTest.java | 49 +++++++++ .../src/test/resources/fonts/Sarabun/OFL.txt | 93 ++++++++++++++++++ .../fonts/Sarabun/Sarabun-Regular.ttf | Bin 0 -> 83080 bytes 4 files changed, 157 insertions(+), 2 deletions(-) create mode 100644 openpdf-core/src/test/java/org/openpdf/text/pdf/FopGlyphProcessorTest.java create mode 100644 openpdf-core/src/test/resources/fonts/Sarabun/OFL.txt create mode 100644 openpdf-core/src/test/resources/fonts/Sarabun/Sarabun-Regular.ttf diff --git a/openpdf-core/src/main/java/org/openpdf/text/pdf/FopGlyphProcessor.java b/openpdf-core/src/main/java/org/openpdf/text/pdf/FopGlyphProcessor.java index 167402e90..4cb7fa97c 100644 --- a/openpdf-core/src/main/java/org/openpdf/text/pdf/FopGlyphProcessor.java +++ b/openpdf-core/src/main/java/org/openpdf/text/pdf/FopGlyphProcessor.java @@ -2,8 +2,10 @@ import java.io.UnsupportedEncodingException; import java.nio.IntBuffer; +import java.util.List; import java.util.Map; import org.apache.fop.complexscripts.fonts.GlyphSubstitutionTable; +import org.apache.fop.complexscripts.util.CharAssociation; import org.apache.fop.complexscripts.util.CharScript; import org.apache.fop.complexscripts.util.GlyphSequence; import org.apache.fop.fonts.truetype.TTFFile; @@ -62,13 +64,24 @@ public static byte[] convertToBytesWithGlyphs(BaseFont font, String text, String int limit = glyphSequence.getGlyphs().limit(); int[] processedChars = glyphSequence.getGlyphs().array(); char[] charEncodedGlyphCodes = new char[limit]; + List associations = glyphSequence.getAssociations(); for (int i = 0; i < limit; i++) { charEncodedGlyphCodes[i] = (char) processedChars[i]; Integer glyphCode = processedChars[i]; if (!longTag.containsKey(glyphCode)) { - longTag.put(glyphCode, - new int[]{processedChars[i], ttu.getGlyphWidth(processedChars[i]), charBuffer.get(i)}); + int sourceIdx = i; + if (associations != null && i < associations.size()) { + sourceIdx = associations.get(i).getStart(); + } + + int originalChar = charBuffer.get(sourceIdx); + + longTag.put(glyphCode, new int[]{ + processedChars[i], + ttu.getGlyphWidth(processedChars[i]), + originalChar + }); } } return new String(charEncodedGlyphCodes).getBytes(CJKFont.CJK_ENCODING); diff --git a/openpdf-core/src/test/java/org/openpdf/text/pdf/FopGlyphProcessorTest.java b/openpdf-core/src/test/java/org/openpdf/text/pdf/FopGlyphProcessorTest.java new file mode 100644 index 000000000..2d5d20d2c --- /dev/null +++ b/openpdf-core/src/test/java/org/openpdf/text/pdf/FopGlyphProcessorTest.java @@ -0,0 +1,49 @@ +package org.openpdf.text.pdf; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.junit.jupiter.api.Test; +import org.openpdf.text.Document; +import org.openpdf.text.Font; +import org.openpdf.text.PageSize; +import org.openpdf.text.Paragraph; +import java.io.FileOutputStream; +import java.io.IOException; +import java.net.URL; +import java.nio.file.Files; + +import static org.assertj.core.api.Assertions.assertThat; + + +class FopGlyphProcessorTest { + + private static final Log log = LogFactory.getLog(FopGlyphProcessorTest.class); + + @Test + void textCreateDocument() throws IOException { + + URL fontUrl = FopGlyphProcessorTest.class.getResource("/fonts/Sarabun/Sarabun-Regular.ttf"); + assertThat(fontUrl).isNotNull(); + + try (Document document = new Document(PageSize.A4)) { + var tmp = Files.createTempFile("ThaiFopTest", ".pdf"); + + FileOutputStream os = new FileOutputStream(tmp.toFile()); + PdfWriter.getInstance(document, os); + document.open(); + + BaseFont baseFont = BaseFont.createFont(fontUrl.toString(), BaseFont.IDENTITY_H, BaseFont.EMBEDDED); + Font thaiFont = new Font(baseFont, 16); + + // 3. เขียนเนื้อหาทดสอบ + document.add(new Paragraph("คำทดสอบ: จำ ทำ น้ำ ต่ำ ก้ำ", thaiFont)); + + String longText = "Lorem Ipsum คือ เนื้อหาจำลองที่ใช้กันในธุรกิจงานพิมพ์หรืองานเรียงพิมพ์ " + + "มันได้กลายมาเป็นเนื้อหาจำลองมาตรฐานของธุรกิจดังกล่าวมาตั้งแต่ศตวรรษที่ 16"; + document.add(new Paragraph(longText, thaiFont)); + + FopGlyphProcessorTest.log.info("Save to: " + tmp.toAbsolutePath()); + } + } + +} diff --git a/openpdf-core/src/test/resources/fonts/Sarabun/OFL.txt b/openpdf-core/src/test/resources/fonts/Sarabun/OFL.txt new file mode 100644 index 000000000..0018c0137 --- /dev/null +++ b/openpdf-core/src/test/resources/fonts/Sarabun/OFL.txt @@ -0,0 +1,93 @@ +Copyright 2018 The Sarabun Project Authors (https://github.com/cadsondemak/Sarabun) + +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: +https://openfontlicense.org + + +----------------------------------------------------------- +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. diff --git a/openpdf-core/src/test/resources/fonts/Sarabun/Sarabun-Regular.ttf b/openpdf-core/src/test/resources/fonts/Sarabun/Sarabun-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..50fa7076de52daa63b82877d150540aec7ba979a GIT binary patch literal 83080 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 bwe4rnb_i?}5x0ysIR