创建和使用字体扩展名

使用 IDE 创建字体扩展名。有关详细信息,请参阅 iReportJaspersoft Studio 文档。也可以手动创建字体扩展名。

什么是字体扩展?

使用 textElement 你可以指定一个字体(如果没有指定默认字体 SansSerif 使用)

<textElement>
    <font fontName="DejaVu Sans"/>
</textElement>

要计算字体度量(用于换行符,对齐等)并正确呈现字体,需要在 JVM (Java 虚拟机)中映射字体。你可以将字体文件直接安装到 JVM,但这不是鼓励 ****

来自 JasperReport 终极指南:

我们强烈建议人们只使用从字体扩展派生的字体,因为这是确保在运行时执行报表时应用程序可以使用字体的唯一方法。使用系统字体时,如果部署在可能未安装这些字体的新计算机上,则始终会带来报告无法正常工作的风险

默认字体扩展名

JasperReports 提供了一个默认的字体扩展名(请参阅 maven distribution jasperreports-fonts.jar)。将其添加到类路径中,你可以使用以下 fontName,而无需创建自己的字体扩展名

DejaVu Sans
DejaVu Serif
DejaVu Sans Mono

常见问题

pdf(itext) 中使用 font 时需要考虑的问题:

  • 导出为 PDF 时,如果文本未正确呈现(缺少部分,未显示的字符,未正确包装或调整大小),则可能缺少字体扩展名

  • 是否支持实际的 .tffOpenType )并且字体是否可以实际呈现字符?并非所有字体都在 UTF-8 中呈现所有字符。

  • 是否将正确的编码传递给 iText?在怀疑(或一般)使用编码 Identity-H,建议使用较新的 PDF 标准,并使你能够混合使用不同的编码。

  • 是否嵌入了字体,以便即使未安装字体,跨计算机共享的 PDF 也可以显示内容?如果字体不是 14 种标准类型 1 字体之一,则始终嵌入它。

请注意,jasper 报告使用的 iText 版本不会渲染所有字体( ligaturizer 问题 ),你可以直接测试 ttf 字体和编码。如何测试我的字体是否在 pdf 中正确呈现?