代理汉字不显示iText Java

时间:2017-06-27 21:15:42

标签: java unicode itext

使用来自maven repo https://mvnrepository.com/artifact/com.itextpdf/itextpdf/5.5.11

的iText 5.5.11
public class test {
    public static void main(String[] args) throws DocumentException, IOException {

        final String text = "BMP: \u6d4b \u8bd5  Surrogate: \uD841\uDF0E \uD841\uDF31 \uD859\uDC02";

        BaseFont baseFont = BaseFont.createFont("C:\\Windows\\Fonts\\arialuni.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
        Font font = new Font(baseFont, 6.8f);

        Document doc = new Document();
        PdfWriter.getInstance(doc, new FileOutputStream("out.pdf"));
        doc.open();

        Paragraph p = new Paragraph();

        p.add(new Phrase(text, font));

        doc.add(p);

        doc.close();
    }
}

基本多语言平面中的非代理字符在结果pdf上呈现,但代理字符不是。

编辑:还尝试使用字体“STSong-Light”编码“UniGB-UCS2-H”(如书中的示例)。相同的结果 - 缺少代理人物。

Edit2:让它与“SimSun-ExtB”字体一起使用

1 个答案:

答案 0 :(得分:1)

这通常表示正在使用的字体(在本例中为Arial)没有字符的字形。