【发布时间】:2013-04-25 11:38:56
【问题描述】:
我正在使用 iTextSharp 创建 PDF:s。我有一个小问题,用户可以使用的某些字体中缺少一些字形。是否可以像在 CSS 中那样使用后备字体或字体堆栈?
【问题讨论】:
标签: pdf fonts itextsharp
我正在使用 iTextSharp 创建 PDF:s。我有一个小问题,用户可以使用的某些字体中缺少一些字形。是否可以像在 CSS 中那样使用后备字体或字体堆栈?
【问题讨论】:
标签: pdf fonts itextsharp
我认为您正在寻找 FontSelector 类。
有一个 Java 示例 here 和一个 C# 示例 here。
这个想法是创建一个FontSelector 对象,您可以使用AddFont() 方法向其中添加字体。现在,当您有一个 string 包含一种字体中缺少但以另一种字体存在的字形时,您可以使用 process() 方法创建一个由一系列 Chunk 对象组成的 Phrase不同的字体。
将字体添加到选择器的顺序很重要。在检查string 中的字符时,将检查第一个字体是否存在与字符对应的字形。如果找到字形,则该字体将用于该字符;如果缺少字形,则将检查第二种字体。相同的字形可以出现在不同的字体中,但 iText 将始终首先查看添加到选择器的第一个字体,并在找到字形后立即忽略所有其他字体。
【讨论】: