1

BIRT から PDF レポートに针叶樱桃提取物を印刷しようとしています。代わりに针桃提取物が表示されるため、PDF に叶樱がありません。これはフォントの問題で、この人の問題に似ています。ただし、すでにサンセリフ フォントを使用しています。その人の解決策は、フォントの違いでした。

この種のことのためにLinuxコンテキストで使用する適切なフォントを知っている人はいますか?

4

2 に答える 2

7

問題

このフォントの問題は、セリフ/サンセリフ フォント自体が原因ではなく、テキスト内の文字をカバーしていないフォントが原因です。レンダリングされていない文字は「桜の葉」を参照し、漢文字 ( CJK 統一表意文字)の一部です。

Glyph   Unicode code point   Represents                                              Code Block                 

叶      U+53F6               to harmonize, to rhyme; to unite; (borrowed for) leaf   CJK Unified (plane 5 stroke 5)
樱      U+6A31               cherry/cherryblossom                                    CJK Unified (plane 6 stroke 15)

http://www.fileformat.info/info/unicode/char/53f6/index.htm
http://www.fileformat.info/info/unicode/char/6a31/index.htm
http://www.decodeunicode. org/en/u+53f6/properties
http://www.decodeunicode.org/en/u+6A31/properties

Unicode コード ポイントは、文字の「普遍的な仮想表現」です。ファイルに含まれたり、画面に表示されたりすることはありません。

プロセスは次のとおりです。

Author's Head/        Virtual Space           Bytes In
Generating Tool --->  (Incl. Strings    --->  File        ---->  Screen/Printer
                       In Tool Memory)

Desired               Unicode             Character Encoded    Symbol Rendered Via 
Language Symbol       Code Point          Via Nominated        Nominated Font In  
                                          File Encoding        File

Microsoft では、 Arial Unicode MSフォントは実際にはArialフォントを超える大きな拡張であるため、Arial はフォントをテキストに一致させる必要性を隠します。これには、これらの文字の両方を含むthis oneを含むほとんどの Microsoft コード ページが含まれます。

最新の Linux インストールには、サポートされているフォントが必要です。そうでない場合は、中国語機能なしでインストールされたことは確かです。これを修正するためにUbuntu 管理言語サポート機能を使用する例。次のように入力して、一致するフォントを見つけます。

xlsfonts | grep gb
xlsfonts | grep big5
xlsfonts | grep han
xlsfonts | grep ming
xlsfonts | grep song
xlsfonts | grep kai
  1. Linux 用中国語/アジア フォントのダウンロード

  2. Birt でフォント パスを構成する

    このステップと次のステップで fontsConfig.xml を変更した後、BIRT を再始動して変更を有効にする必要があります。

    font-pathsエレメント fontsConfig.xmlを設定します。

    <font-paths>
         ---------------
         ---------------
         ---------------
          <path path="/var/font/truetype" />
    </font-paths>
    

    また、block 要素を使用すると、フォントが特定の範囲の文字にのみ適用されるように指定でき、異なるテキストのフォントを動的に切り替えることができます (多言語/複数記号のテキストに役立ちます:

    <block name="Thai" start="e00" end="e7f" index="27" font-family="Font-Family"/>
    
  3. Birt でフォント エンコーディングを構成します。

    またfontConfig.xml、要素内で、font-encodings文字をカバーする適切な文字エンコーディングがフォントに含まれていることを確認します。たとえば、次のいずれかを選択します。

    <font-encodings>
        <encoding font-family="STSong-Light" encoding="UniGB-UCS2-H" />
        <encoding font-family="STSongStd-Light" encoding="UniGB-UCS2-H" />
        <encoding font-family="MHei-Medium" encoding="UniCNS-UCS2-H" />
        <encoding font-family="MSung-Light" encoding="UniCNS-UCS2-H" />
        <encoding font-family="MSungStd-Light" encoding="UniCNS-UCS2-H" />
    </font-encodings>
    

    注:含まれる True Type フォントはすべて PDF 内に埋め込まれ、サイズに大きな影響を与えますが、すべてのクライアントがドキュメントを正しく読めるようにします。

    これらは、狭すぎる古い GB2312 セット (または EUC-CN) とは対照的に、より広範な GB10380 文字セットの多く/すべてをカバーする Adob​​e エンコーディングです。上記の例は BIRT フォーラムからのものですが、Adobe が UCS2 を廃止したという小さな警告があります。文字列内の「UCS2」を「UTF16」に置き換えることができる可能性があります。

    Adobe エンコーディングを使用する理由: Adob​​e は、プラットフォーム間で広義の CJK 文字をエンコーディングするための標準と見なされています。歴史的に、GB10380 文字セットを直接サポートしているシステムはほとんどありません。 また、アドビのエンコーディングとフォントが多くのプリンターでサポートされていることも重要な要素です。 デフォルトの Linux 文字セット/エンコーディングはニーズをサポートしていない可能性がありますが、利用可能な Linux エンコーディングを参照してみてください:

    • 利用可能な文字セット (エンコーディング): locale -c または charsets (または文字マップ プログラムの Gnome バージョン)

    • 利用可能な Linux ロケール: locale -a

    • 現在の Linux ロケール: locale
    • 現在のデフォルトの文字セット: locale charset
于 2013-07-15T08:00:52.427 に答える