2012-06-28 80 views
0

我看到iText支持基於單個字形自動選擇字體。這是通過搜索特定字形的FontSelector中包含的字體庫來實現的,並且如果該字體不存在於列表中較高的字體庫中,則從不同字體庫中選擇字符。漢字集自動字體選擇

我已經能夠在Jasper中配置字體擴展,通過選擇一個大的Unicode字體庫(如「Arial Unicode MS」)來支持亞洲和拉丁字符集,該字體庫具有超級全面的字符集。然而,這樣看起來很好看的圖書館會受到昂貴的許可!毫不奇怪,考慮到涉及的工作量......任何支持中文和拉丁文的免費字體庫一般都會創建,以滿足有效的中文字符渲染和拉丁字符的美感受此影響;)

因此最終問題:是否有一種機制可以在jasper中使用iText的自動字體選擇功能?

回答

-1

從我的理解中,您希望使用用戶自己的字體替代您的應用程序提供「Arial Unicode MS」。

public class FontList extends ArrayList<String> 
{ 
    public FontList() 
    { 
     for (final String fontName : GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames()) 
     { 
      final Font f = new Font(fontName, Font.PLAIN, 10); 
      //first character in CJK area 
      if (f.canDisplay('\u4E00')) 
      { 
       add(fontName); 
      } 
     } 
    } 
} 

一個新的FontList會給你所有可用的字體列表爲中國,日本和韓國。

您將需要更多邏輯來'自動'選擇'最佳'字體;你可以在它的名字中尋找「Arial」,給它一個更高的優先級。 「Ume」和「WenQuanYi」,最後是「Dialog」

也許最好讓用戶選擇使用哪一個。如果沒有可用的字體,請提供有關如何安裝字體的建議e.g.

+1

問題是關於Jasper中的解決方案而不是iText不妥。我猜這就是爲什麼有人給你一個-1 :( – travega