使用itext java的自定义字体编写特殊字符

时间:2016-03-27 03:25:30

标签: java pdf itext custom-font

我正在向itext添加自定义字体,如下所示:

PdfContentByte cb = writer.getDirectContent();
BaseFont customfont = BaseFont.createFont("/assets/fonts/GillSans-SemiBold.ttf", BaseFont.CP1257, BaseFont.EMBEDDED);

现在这样做很好但是当我尝试打印像Matemática这样的重音字符时,它会打印?
有关如何使用gilSans SemiBold字体打印重音字符的任何想法?

1 个答案:

答案 0 :(得分:2)

请更改此行中的第二个参数:

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作为"编码"。