1
到目前爲止我所遇到的是我能想到Oracle的Java字體渲染庫中的「bug」。在某些字體(如PDF文件中嵌入的字體)中,使用了一些不規則的字符代碼,並且它們具有與它們相關聯的字形。在Java中渲染字體:java.awt.Font的行爲不正確
在這種情況下(屬於製表符,回車符和換行符的字符代碼9,10和13)嘗試使用java.awt.Font.createGlyphVector
方法獲得字形矢量時,不會返回正確的字形,但它適用於其他所有內容。
我跟蹤這個問題在Java CMAP的實現,有一個類似的代碼:
char getGlyph(int charCode) {
if (charCode < 256) {
if (charCode < 0x0010) {
switch (charCode) {
case 0x0009:
case 0x000a:
case 0x000d: return CharToGlyphMapper.INVISIBLE_GLYPH_ID;
}
}
return (char)(0xff & cmap[charCode]);
} else {
return 0;
}
}
所以,我的問題是:
- 實際上是這一個錯誤?
- 有誰知道如何解決這個問題?
- 有沒有辦法從真正的字體中提取CMAP數據,以便我可以將字符(代碼點)映射到字形代碼?