試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

ドキュメントビューアEvinceにおける日本語PDFファイルの文字化けと.fonts.confについてのメモ(2011年12月時点)

(今更かもしれないが)最近、ドキュメントビューアのEvinceで日本語を含んだ埋め込みフォントなしのPDFファイルを開いたときに文字が豆腐(四角)になっているのを見つけた。
調べてみると、fontconfigの設定(/etc/fonts/conf.d/以下のファイル群や[ホームディレクトリ]/.fonts.confなどの内容)が関係していることが分かった。

  1. 関係する項目と、問題の解決策
  2. 注意点

関係する項目と、問題の解決策

「sans-serif」という名前のフォント名に対する実際のフォントの割り当てにおいて、下のように並べてフォント名を記述した中の一番上の項目が欧文フォントではなくシステムに存在する日本語フォントの名前になっていれば正常に表示されるようになった。*1
ファイル名: ~/.fonts.conf

<?xml version='1.0'?>
<fontconfig>
 <!-- (中略) -->
 <match target="pattern">
  <test name="lang" compare="contains">
   <string>ja</string>
  </test>
  <test qual="any" name="family">
   <string>sans-serif</string>
  </test>
  <edit name="family" mode="prepend" binding="strong">
   <string>日本語フォントの名前 (日本語表記可)</string>
   <!-- (以下の項目は表示に影響しない) -->
   <string>フォント名2</string>
   <string>フォント名3</string>
   <!-- ... -->
  </edit>
 </match>
</fontconfig>

しかし、欧文フォントが一番上になっている場合、半角英数以外の文字が豆腐(四角)になるか、あるいは空白(何も表示されない)となってしまう。

  <edit name="family" mode="prepend" binding="strong">
   <string>欧文フォントの名前</string>
   <string>日本語フォントの名前</string>
   <!-- ... -->
  </edit>

なお、Ubuntu 11.10時点では、[ホームディレクトリ]/.fonts.confの「sans-serif」関係の記述を一切しない状態では正常に表示されている(日本語フォントパッケージのインストール状況が影響する可能性はある)。

注意点

一般的なアプリケーションでは、上の[ホームディレクトリ]/.fonts.confの記述における一番上の項目に欧文フォントを指定すると

  • 半角英数部分: 指定した欧文フォント
  • それ以外: 指定した日本語フォント

という描画のされ方がされ、フォントを組み合わせて同時に使うことができるのだが、上にも書いたように、「sans-serif」だけは欧文フォントを一番上に記述するとEvinceで文字化けする原因になるため、避ける必要が出る。
また、Evince側で手動で使用フォントを選択することも、バージョン3.2系の時点ではできない。

参考URL:

関連URL:

使用したバージョン:

  • Evince 3.2.1

*1:PDFファイルによっては他のフォント名に対する作業が必要な場合がある可能性もあるが、そのようなファイルの存在は確認していない