ItextPdf 字体显示差异分析与处理

文章探讨了在ItextPdf中,当<span>标签样式设置为font-family:timesnewroman,simsum;时,出现字体显示不一致的问题。源码分析集中在ComplexFontSelectorStrategy类,提出两种解决方法:一是通过分割文本并分别设置字体,二是修改框架代码以逐字符判断font-family。
摘要由CSDN通过智能技术生成

ItextPdf 同span下字体显示差异分析与处理

在文章itext7 字体问题解答与相应源代码分析 中是分析了框架的字体设置与相关代码,在本篇文章里将对其生效效果进行分析和相关问题进行处理(可持续更新,问题请留言)

问题一

问题说明:

对于html结构为

<span class="" style="font-family: times new roman,simsum;">
123不会重复1234567
</span>

渲染出来的效果 为 最前面"123" 是新罗马字体,后面的"不会重复1234567"都是宋体。 我们想要的是优先进行字符集[times new roman]判断,不在里面的,按字符集[simsum]渲染。 而这种效果也是浏览器上的字符显示效果,如下图
在这里插入图片描述

源码分析

这里还是先去ComplexFontSelectorStrategy类
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

处理方法

这边提供两种处理思路

  1. 根据他的显示逻辑,我们需要把不同显示效果的文本进行分割存放
<span class="" style="font-family: times new roman;">
	123
	<span class="" style="font-family: simsum;">
		不会重复
	</span>
	1234567
</span>

各自显示各自的
2. 修改框架代码,不一次获取多个连续字符,判断一次获取一个。这样根据font-family配置的先后效果进行显示了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值