FC2ブログ

xine文字化けの原因と対策

xineで右クリのメニューが文字化けすると言うのはよく知られています。 しかも、distributionに依らないようです。 workaroundとして知られているのは以下のようなものです。

○ 一般的な回避策
(1) 強制的に英語メニューを表示
$ LANG=C xine
これの欠点は、日本語名のファイルを再生した場合に、
タイトルバーに表示されるファイル名が文字化けすることです。

(2) 日本語訳ファイルを削除して英語メニューを表示
# cd /usr/share/locale/ja/LC_MESSAGES/
# mv xine-ui.mo xine-ui.mo.hoge
この場合、タイトルバーに表示されるファイル名が文字化けすることはありません。
が、根本的な解決にはなっていません。


と言うわけで、fedora12での原因を調べてみました。
#以下の内容は他のディストリの場合は異なるかもしれません。


○ 原因
(1) helvetica決め打ち
http://myht.org/modules/d3pipes/index.php?page=clipping&clipping_id=1088
http://www.poared.com/wordpress/?p=64
xineのソースコードには以下のようにhelveticaで表示するように決め打ちされているようです。
xine-ui-0.99.5/src/xitk/event_sender.c
static char            *eventerfontname = "-*-helvetica-bold-r-*-*-12-*-*-*-*-*-*-*";
まず、これが原因の一つです。

(2) helveticaで日本語表示未対応
もう一つは、(1)のようにhelveticaを指定された場合に、日本語を表示できないことです。


○ 対策
(1) ソースコードを変更
ソースコード中のhelvetica指定を以下の例のように変更してリコンパイル、、
//static char            *eventerfontname = "-*-helvetica-bold-r-*-*-12-*-*-*-*-*-*-*";
static char            *eventerfontname = "-misc-*-*-*-*-*-*-*-*-*-*-*-jisx0208.1983-*";
ですが、あんまりスマートでありません(バイナリ中の文字列を変更するのはもっと、、、)。
ということで別の方法(2)を考えます。

(2) font設定を変更してhelveticaでも日本語表示
おもむろに/etc/fonts/conf.dの中を以下のようにgrepします。
$ cd /etc/fonts/conf.d
$ find | xargs grep -n -i helvetica
すると、30-metric-aliases.confが、helveticaを他のフォントにremapしており、
こいつが怪しそうと言うことが分かります。で、これをコメントアウト。
        <!-- PostScript -->
<!--    <alias binding="same">
          <family>Helvetica</family>
          <accept>
          <family>Nimbus Sans L</family>
          </accept>
        </alias> -->
以上で文字化けは解消されるはずです。。。。

comment

Secre

カウントダウン
  • プロフィール

    idak

    Author:idak
    If you gaze long into an abyss, the abyss also gazes into you.

    最近の記事
    最近のコメント
    最近のトラックバック
    月別アーカイブ
    カテゴリー
    カウンター
    ブログ内検索
    RSSフィード
    リンク
    ブロとも申請フォーム

    この人とブロともになる