我需要使用特定的字体来制作文档,因为它包含一些特殊字符,如"Đ",而这些字符不受普通字体iText的支持。
所以,我做了这个:
BaseFont CROACIA = BaseFont.createFont("C:\\FreeSans.ttf",BaseFont.IDENTITY_H,BaseFont.EMBEDDED);
Font CROATA = new Font(CROACIA, 12);它工作得很好,我的"Đ"问题解决了,问题是我不能把它设为大胆。
我试着用“粗体”设置做一个不同的字体,比如this_。
Font CROATABOLD = new Font(CROACIA, 12, BOLD);代码似乎并没有错误,但是当我将它应用于一个段落时,它只是不起作用,字体看起来和往常一样正常。
发布于 2015-12-21 14:06:51
FreeSans和FreeSansBold是同一家族的不同字体。您提供了FreeSans.ttf字体程序的路径,因此iText可以在FreeSans系列中使用常规字体。如果要使用粗体字体,则需要为同一家族中的字体提供一个FreeSansBold.ttf路径,这是一个不同的字体程序。
FreeSansBold示例中显示了这一点:
public static final String FONT = "resources/fonts/FreeSans.ttf";
public static final String FONTBOLD = "resources/fonts/FreeSansBold.ttf";
public void createPdf(String dest) throws IOException, DocumentException {
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream(dest));
document.open();
BaseFont bf = BaseFont.createFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
Font font = new Font(bf, 12);
Paragraph p = new Paragraph("FreeSans regular: \u0110", font);
document.add(p);
BaseFont bfbold = BaseFont.createFont(FONTBOLD, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
Font bold = new Font(bfbold, 12);
p = new Paragraph("FreeSans bold: \u0110", bold);
document.add(p);
document.close();
}我们有两个不同的字体FreeSans.ttf和FreeSansBold.ttf属于同一家族。一种是普通字体,另一种是粗体字体。如果查看结果的文档属性bold.pdf,可以清楚地看到有两种不同的字体在发挥作用:

https://stackoverflow.com/questions/34396579
复制相似问题