這是關於iText 2.1.6的。iText - 如何識別可打印字符串中所有字符的單個字體?
我有一個字符串包含來自不同語言的字符,我希望爲所有這些字符選擇一種字體(註冊字體之間)的字形。如果我已經有一種可以顯示所有這些字形的字體,我想避免出現字符串中的不同子字符串使用不同字體打印的情況。
如果沒有這樣的單一字體,我仍然希望選擇一小部分覆蓋字符串中字符的字體。
我知道FontSelector,但它似乎沒有嘗試爲給定的文本找到最小的一組字體。正確?我該怎麼做呢?
這是關於iText 2.1.6的。iText - 如何識別可打印字符串中所有字符的單個字體?
我有一個字符串包含來自不同語言的字符,我希望爲所有這些字符選擇一種字體(註冊字體之間)的字形。如果我已經有一種可以顯示所有這些字形的字體,我想避免出現字符串中的不同子字符串使用不同字體打印的情況。
如果沒有這樣的單一字體,我仍然希望選擇一小部分覆蓋字符串中字符的字體。
我知道FontSelector,但它似乎沒有嘗試爲給定的文本找到最小的一組字體。正確?我該怎麼做呢?
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
例如字體。不要指望找到一個包含所有需要的字形的字體。
非常感謝,布魯諾。一個不同的方式來解釋我的問題是:是否有一個類似FontSelector的類試圖找到一組最小的字體?我實際上知道FontSelector的行爲。 –
Define'minimal set of fonts';-)如果你使用'registerDirectories()','FontFactory'將會抓住可能的字體目錄(通常的嫌疑犯)。但是:軟件無法決定你喜歡哪種字體。例如:字體如何知道您是否偏好Arial而不是Times Roman(反之亦然)? –
通過最小的字體集合,我的意思是,「如果一種字體足以呈現給定的字符串,則不要使用兩個或更多字體。如果輸入字符串使用英語和孟加拉語,並且在已註冊的目錄中有字體這些字符的字形,使用該字體,而不是使用一種字體的英文和一種孟加拉語「這是關於貪婪vs最佳。 –