213 Star 1.4K Fork 525

GVPofdrw / ofdrw

 / 详情

ofd转png时报错日志为无楷体字体,转出的图片中部分文字乱码

已完成
创建于  
2022-01-12 17:17

输入图片说明

代码执行OFD2IMGTest报错误内容为:
17:16:18.729 [main] INFO org.ofdrw.converter.FontLoader - C:\Windows\Fonts\teamviewer15.otf 无法解析,忽略错误 没有 loca 表
17:16:23.955 [main] INFO org.ofdrw.converter.FontLoader - C:\Windows\Fonts\teamviewer15.otf 无法解析,忽略错误 没有 loca 表
17:16:27.203 [main] INFO org.ofdrw.converter.FontLoader - 无法加载字体: 楷体 null java.lang.NullPointerException, {}null

本地字体库为:
输入图片说明

评论 (4)

我是渔夫 创建了任务
我是渔夫 修改了描述
我是渔夫 修改了标题
展开全部操作日志

字体解析时候由于字体内缺表所以无法解析导致乱码,你可以尝试完善字体解析部分内容,并提供PR。

经过一些调试,我发现其实是加载的simkai.ttf 的字体名字是KaiTi, 所以我使用
输入图片说明

结果仍然是乱码,还没有深入定位原因
@Cliven 请问字体内缺表 是什么意思? 我不太明白字体的具体原理哈

字体文件通过一个 类似于表的数据结构来 组织字体信息,比如说 字体轮廓 、轮廓和字符编码的映射等。

经过了一些调试,我发现问题似乎出现在这里
org.ofdrw.converter.AWTMaker#writeText
这个函数将text 元素渲染,

计算deltax 是一个数组,代表当前这个text的每个字符渲染的水平偏移量(我理解的哈,不知道是否正确)。
在出问题的 重叠字符串, 这个deltax的数组长度是1,或者少于字符串的字符个数,就会导致部分字符重叠。
所以解决问题的思路似乎要看下deltax数组是如何计算出来的

Cliven 任务状态待办的 修改为已完成

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(3)
1012814 trisia 1659609057
Java
1
https://gitee.com/ofdrw/ofdrw.git
git@gitee.com:ofdrw/ofdrw.git
ofdrw
ofdrw
ofdrw

搜索帮助

344bd9b3 5694891 D2dac590 5694891