使用带有 itext java 的自定义字体写入特殊字符
write special characters using a custom font with itext java
我正在向 itext
添加自定义字体,如下所示:
PdfContentByte cb = writer.getDirectContent();
BaseFont customfont = BaseFont.createFont("/assets/fonts/GillSans-SemiBold.ttf", BaseFont.CP1257, BaseFont.EMBEDDED);
现在这样做很好,但是当我尝试打印像 Matemática
这样的重音字符时,它会打印 ?
关于如何使用 gilSans SemiBold
字体打印重音字符有什么想法吗?
请更改此行中的第二个参数:
BaseFont customfont = BaseFont.createFont(
"/assets/fonts/GillSans-SemiBold.ttf",
BaseFont.CP1257, BaseFont.EMBEDDED);
成功:
BaseFont customfont = BaseFont.createFont(
"/assets/fonts/GillSans-SemiBold.ttf",
BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
使用 CP1257
时,您创建了一个仅包含 256 个字符的 简单字体 。您使用的字符不属于这 256 个字符。您需要创建一个接受 UNICODE 字符的复合字体。由于您使用的是水平书写系统,因此请将 IDENTITY_H
用作 "encoding"。
我正在向 itext
添加自定义字体,如下所示:
PdfContentByte cb = writer.getDirectContent();
BaseFont customfont = BaseFont.createFont("/assets/fonts/GillSans-SemiBold.ttf", BaseFont.CP1257, BaseFont.EMBEDDED);
现在这样做很好,但是当我尝试打印像 Matemática
这样的重音字符时,它会打印 ?
关于如何使用 gilSans SemiBold
字体打印重音字符有什么想法吗?
请更改此行中的第二个参数:
BaseFont customfont = BaseFont.createFont(
"/assets/fonts/GillSans-SemiBold.ttf",
BaseFont.CP1257, BaseFont.EMBEDDED);
成功:
BaseFont customfont = BaseFont.createFont(
"/assets/fonts/GillSans-SemiBold.ttf",
BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
使用 CP1257
时,您创建了一个仅包含 256 个字符的 简单字体 。您使用的字符不属于这 256 个字符。您需要创建一个接受 UNICODE 字符的复合字体。由于您使用的是水平书写系统,因此请将 IDENTITY_H
用作 "encoding"。