这是iText 2.1.6。
我有一个包含不同语言字符的字符串,我想为它选择一个字体(在已注册的字体中),其中包含所有这些字符的字形。我想避免使用不同字体打印字符串中不同子串的情况,如果我已经有一种字体可以显示所有这些字形。
如果没有这样的单一字体,我仍然想选择覆盖字符串中字符的最小字体集。
我知道FontSelector,但它似乎没有尝试为给定的文本找到最小的字体集。正确?我该怎么做?
答案 0 :(得分:2)
iText 2.1.6已过时。请停止使用它:http://itextpdf.com/salesfaq
我在一个中看到两个问题:
是否有包含所有语言的所有字符的字体?
请允许我解释为什么这是不可能的:
65,535比1,114,112小得多,这意味着在技术上不可能有一个包含所有可能字形的字体。
FontSelector
找不到最小的字体集!
FontSelector
不会寻找最小的字体集。您必须告诉FontSelector
您要使用哪些字体,以哪种顺序!假设你有这段代码:
FontSelector selector = new FontSelector();
selector.addFont(font1);
selector.addFont(font2);
selector.addFont(font3);
在这种情况下,FontSelector
将首先查看每个特定字形的font1
。如果它不存在,则会查看font2
等等......显然font1
,font2
和font3
将具有相同字符的不同字形。例如:a, a 和 a 。将使用哪个字形取决于您添加字体的顺序。
底线:
选择涵盖所需字形的各种字体,并将其添加到FontSelector
实例中。不要指望找到包含您需要的所有字形的单一字体。