我在RDLC报表生成PDF时遇到一个问题,打印空字符。它仅影响字体连字,即理解为字母组合,例如:
- ti
- ft
- fi
- tt
我的研究显示这些字符组合被合并为一个单一的字形,当打印出来时,我看到的是一个空格。例如截图:
在PDF中:
打印出来:
因此,症状是:
- 屏幕上PDF看起来很好
- 当打印(物理或使用XPS writer)时,所有连字都显示为空格
到目前为止,我已经将问题缩小到特定字体(Calibri)和特定服务器(Windows Server 2003 R2)。 PDF已嵌入字体:
为了解决这个问题,我希望实现以下目标:
- 防止LocalReport.Render将连字组合在一起
- 使Server 2003能够像我的Windows 7机器一样处理字体
我不确定如何/从哪里开始比较字体环境,因此非常感谢提供思路和指针。
更新:
感谢下面的答案,我已经检查了两台机器上的字符映射表,但它们看起来是相同的:
服务器(出现问题的地方):
本地(没有问题):
这也提醒我通过复制字体文件并直接安装它们来安装字体。两个版本都是5.72,数字签名,TrueType轮廓,但服务器显示OpenType Font
,而本地显示OpenType Layout
(可能只是不同操作系统的显示)。
有趣的是,如果我在本地使用Calibri Regular 48,则可以看到连字:
而服务器则不使用它:
此外,两个PDF都是在同一台机器上打印的,但仅在服务器生成的PDF中出现了问题,因此我认为打印机驱动程序不可能是问题?