我的要求是在生成 PDF 时,现在我将 Arial Unicode.ttf 用于包括 CJK 在内的 i18n 语言。
BaseFont nationalBase = null;
Font headerFont = null;
nationalBase=BaseFont.createFont("Arial_Unicode_MS.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
headerFont = new Font(nationalBase, 10, Font.NORMAL, new Color(138,138,138));
Paragraph p = new Paragraph("Hello Everyone 是时候了 쓰기 รูปแบบไฟล์ PDF" , headerFont);
document.add(p);
现在,正如您在我正在写入 PDF 的字符串中看到的那样,它有多种语言,因为我想将 Arial_Unicode_MS.ttf 替换为另一个字体文件作为其许可版本。我试图合并 Google Noto 的文件,但因为这有不同的 UPM字体(如 CJK 有 2048 UPM,所有其他有 1000 UPM,如泰语、埃及语..等)所以不能。将常规文件与 CJK 合并。我尝试嵌入 GNU 自由字体,但由于它是基于位图的,因此并没有给人以实际的感觉。现在的问题是,iText 中是否有任何可用的工具,比如我是否可以根据字符添加多种我想要的字体它在第一个 ttf 文件上找不到,它将继续寻找第二个 ttf 文件,然后是第三个......直到集合不为空。
private static Font ArbFont = new Font("NotoNakshArabic.ttf", 18,Font.BOLD);
private static Font ScFont = new Font("NotoSansCJKSc-Regular.ttf", 12,Font.NORMAL, BaseColor.RED);
private static Font tcFont = new Font("NotoSansCJKTc-Regular.ttf", 16,Font.BOLD);
private static Font KrFont = new Font("NotoSansCJKKr-Regular.ttf", 12,Font.BOLD);
请对此提供帮助,因为我想根据文件所在的字符动态加载文件,但是由于我一次要创建巨大的文件,所以我无法检查每个字符并加载特定文件。