ItextPdf 同span下字体显示差异分析与处理
在文章itext7 字体问题解答与相应源代码分析 中是分析了框架的字体设置与相关代码,在本篇文章里将对其生效效果进行分析和相关问题进行处理(可持续更新,问题请留言)
问题一
问题说明:
对于html结构为
<span class="" style="font-family: times new roman,simsum;">
123不会重复1234567
</span>
渲染出来的效果 为 最前面"123" 是新罗马字体,后面的"不会重复1234567"都是宋体。 我们想要的是优先进行字符集[times new roman]判断,不在里面的,按字符集[simsum]渲染。 而这种效果也是浏览器上的字符显示效果,如下图
源码分析
这里还是先去ComplexFontSelectorStrategy类
处理方法
这边提供两种处理思路
- 根据他的显示逻辑,我们需要把不同显示效果的文本进行分割存放
<span class="" style="font-family: times new roman;">
123
<span class="" style="font-family: simsum;">
不会重复
</span>
1234567
</span>
各自显示各自的
2. 修改框架代码,不一次获取多个连续字符,判断一次获取一个。这样根据font-family配置的先后效果进行显示了