我有一些文字包含歐米茄字符(0x3A9),並且當我以默認的Helvetica字體顯示此字符時,PDF中不顯示任何內容。iTextSharp - 並非所有字符都出現在Helvetica字體中
我使用
BaseFont Helvetica = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
創建我的字體,如市場預期,Helvetica.CharExists(0x3A9)返回false。
我還爲TIMES_ROMAN,SYMBOL和ZAPF_DINGBATS字體調用了CharExists(0x3A9)。所有返回false。
- 我創建的字體有誤嗎?有沒有更好的方法來創建包含歐米茄角色的字體?
- 有沒有一種通用的方式來處理這樣的缺失字符?我應該枚舉所有可用的字體,直到找到一個CharExists(0x3A9)返回true的地方?
我的文檔是英文的,但有特殊字符一知半解 - 加/減,左,右雙引號,微米等
附:我看到我可以創建一個Arial字體:
BaseFont arial = BaseFont.CreateFont("c:\\windows\\fonts\\arial.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
並且確實包含字符0x3A9的字形。但顯然我無法用IDENTITY_H編碼創建HELVETICA字體。
HELVETICA,TIMES_ROMAN,SYMBOL和ZAPF_DINGBATS是標準的14種字體,每種pdf查看器都必須提供一定的有限字符集。如果你需要更多的字符,你必須自己提供一個字體,就像你爲Arial做的一樣。 – mkl