使用 iTextSharp 的后备字体

Posted

技术标签:

【中文标题】使用 iTextSharp 的后备字体【英文标题】:Fallback font with iTextSharp 【发布时间】:2013-04-25 11:38:56 【问题描述】:

我正在使用 iTextSharp 创建 PDF:s。我有一个小问题,用户可以使用的某些字体中缺少一些字形。是否可以像在 CSS 中那样使用后备字体或字体堆栈?

【问题讨论】:

【参考方案1】:

我认为您正在寻找 FontSelector 类。

有一个 Java 示例 here 和一个 C# 示例 here。

这个想法是创建一个FontSelector 对象,您可以使用AddFont() 方法向其中添加字体。现在,当您有一个 string 包含一种字体中缺少但以另一种字体存在的字形时,您可以使用 process() 方法创建一个由一系列 Chunk 对象组成的 Phrase不同的字体。

将字体添加到选择器的顺序很重要。在检查string 中的字符时,将检查第一个字体是否存在与字符对应的字形。如果找到字形,则该字体将用于该字符;如果缺少字形,则将检查第二种字体。相同的字形可以出现在不同的字体中,但 iText 将始终首先查看添加到选择器的第一个字体,并在找到字形后立即忽略所有其他字体。

【讨论】:

以上是关于使用 iTextSharp 的后备字体的主要内容,如果未能解决你的问题,请参考以下文章

使用 iTextSharp 添加水印文本时,PAC 工具中出现 iText 7 警告

iTextSharp操作PDF

使用 iTextSharp 在系统中使用字体

iText7 将 HTML 转换为 PDF“System.NullReferenceException”。

如何使用 iTextSharp 设置 PDF 段落或字体行高?

C#工具类:使用iTextSharp操作PDF文档