1

これまでに遭遇したのは、Java での Oracle のフォント レンダリング ライブラリの「バグ」と考えられるものです。特定のフォント (PDF ファイルに埋め込まれたフォントなど) では、いくつかの不規則な文字コードが使用され、それらに関連付けられたグリフがあります。

java.awt.Font.createGlyphVectorこのような場合 (タブ、キャリッジ リターン、および改行に属する文字コード 9、10、および 13) でメソッドを使用してグリフ ベクトルを取得しようとすると、正しいグリフが返されませんが、それ以外の場合はすべて機能します。

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;
             }
         }

だから、私の質問は:

  • これは本当にバグですか?
  • これを回避する方法を知っている人はいますか?
  • 文字 (コード ポイント) をグリフ コードにマップできるように、True Type フォントから CMAP データを抽出する方法はありますか?
4

1 に答える 1

0

今までに問題を理解したと思いますが、将来このページに出くわした人には、sfntly ライブラリをお勧めします。これは、非常に使いやすい sfnt ベースのフォントを編集できる、Google による無料の Java ライブラリです。別の方法で問題を解決した場合は、最新情報をお知らせください。ありがとう。

于 2012-05-11T03:37:07.007 に答える