使用 PDFBox 书写 PDF 泰米尔语

问题描述 投票:0回答:1

我们在 PDF 查看器中呈现泰米尔字母时遇到了问题,其中某些字母的呈现方式与预期不同。下面,我概述了实际的内容渲染和预期的内容,以供参考:

实际内容渲染

预期内容

经过分析,我们发现了三种需要在生成过程中重新排序或替换字形的情况:

反转字形

        கெ = க + ெ =  க ெ  ->  ெ + க = கெ 

分割和重新排序字形

        கொ = க + ொ  = க ொ  ->    க + ெ + ா  ->  ெ + க + ா = கொ
                                    

用新的字形替换某些组合。新字形没有unicode,仅存在于字体文件中。

        கு = க + ு = க ு -> கு            
输入文字 来自 JDK 的字符列表 来自 JDK 的代码点 ttf 中的 gid 实际* 预计
கெ க+ெ 2965 3014 字符:க 代码点:2965 unicode:ub95 字符:ெ 代码点:3014 unicode:ubc6 1828 1856 க + ெ = க ெ ெ + க = கெ 反转预期的字形。
கொ க + ொ 2965 3018 字符:க 代码点:2965 unicode:ub95 字符:ொ 代码点:3018 unicode:ubca 1828 1859 க + ொ = க ொ க + ெ + ா ெ + க + ா = கொ 预期拆分和重新排序。
கு க + ு 2965 3009 字符:க 代码点:2965 unicode:ub95 字符:ு 代码点:3009 unicode:ubc1 1828 1854 க + ு = க ு கு(gid = 6698) 预计会有新字形。新字形没有unicode,仅存在于字体文件中。

查看 GlyphSubstitutionTable、fontbox.cmap.Identity-H、fontbox.unicode.Scripts.txt。到目前为止还无法得到它。任何帮助我们以有效的方式解决它的问题将不胜感激。

链接、字体 实际 预期 用例 PDFBox Jira

pdf pdfbox glyph harfbuzz glyph-substitution
1个回答
1
投票

您需要实现一个文本整形引擎来处理泰米尔语书写。

请参阅 OpenType 规范:https://learn.microsoft.com/en-us/typography/opentype/spec/,GSUB/GPOS 表是您的主要兴趣。

这不是一件容易的任务,因此也许使用外部库(例如 HarfBuzz)是更好的选择。

还有关于孟加拉语书写的 PDFBox 问题 (4189)。也许它会帮助您实现对泰米尔语的支持

更新:例如这个 HarfBuzz 命令行:

hb-shape -O json -u U+0B95,U+0BC1 --no-glyph-names FreeSerif.otf

将返回:

[{"g":6698,"cl":0,"dx":0,"dy":0,"ax":858,"ay":0}]

您必须解析 json 输出,获取字形 ID 并将其提供给 PDFBox。

© www.soinside.com 2019 - 2024. All rights reserved.