Ubuntu で Flash 動画の日本語字幕が文字化けするのは Arial フォントをインストールしているのが原因だった

※2015年4月8日、 TED の文字化けも Arial が原因だった様子。
※2014年9月5日、 Hulu の文字化けについて最下部に追記。

UbuntuYoutubeHuluTED を見ると日本語字幕が文字化けする(トーフになる)バグがある、という話は日本の Ubuntu ユーザーの間では割と有名?で、しかも環境によっては何もしなくても文字化けしなかったり、あるいは何をしても文字化けが直らなかったりと、何が原因なのか長年サッパリサッパリだったのだが、ついに文字化けの原因を突き止めた猛者が現れたらしい。

2ちゃんねるで以下の書き込みを発見。

604 :login:Penguin [sage] :2014/08/11(月) 10:50:03.57 id:afSRgRxtYouTubeFlash版プレーヤーで広告の日本語文字化けの件(Lubuntu14.04.1@i386)
  結論から言うとMSのArialを外してみるといいかも。以下、経緯。

  synapticの履歴にて「font」をキーワードに入れて文字化けの原因特定を試みる。
  すると原因はマイクロソフトのWeb用欧文フォントたち(ttf-mscorefonts-installer)を外す段階で文字化けが解消されるという結果に。

  WebをMS基準で表示しなくても構わないならはじめから入れなくても問題ないかも。
  ちなみに中身は /usr/share/fonts/truetype/msttcorefonts にあるAndale MonoからWebdingsの11種類。

  PCManFMの[ツール>現在のフォルダでコマンドを実行する]gksudo pcmanfmにて入りつつ、1種づつ検証してどれが原因かを突き止める。

  結果:各フォントのウェイトとシンボリックリンクを合わせると計60個。この内の Arial.ttf と arial.ttf(シンボリックリンク)の2つ外すだけで文字化けしない感じ
  できるだけMSフォントで見たいけど文字化けは嫌という人はこの2つだけ外すのがいいかもしれない
  fonts.confイジれる人は外さなくてもArialを日本語ゴシック系フォントに置換するコマンド書くだけでも解消する感じ


http://maguro.2ch.net/test/read.cgi/linux/1399156619/

この書き込みを見て色々と設定を弄ってみた結果、 Youtube や Hulu の字幕が文字化けする条件は、

  • Arial フォントがインストールされている

又は、

  • fonts.conf で sans-serif に割り当てる最優先フォントを英字フォントにしている

という事が確認できた。
fonts.conf を弄っている人は少ないだろうからさておき、 Arial は ubuntu-restricted-extras をインストールすると他のコアフォントと一緒にインストールされるので、端末で、

cd /usr/share/fonts/truetype/msttcorefonts/ 
sudo mv Arial.ttf arial.ttf Arial_Bold.ttf arialbd.ttf Arial_Italic.ttf ariali.ttf Arial_Bold_Italic.ttf arialbi.ttf /tmp/ 

と実行するなどして Arial だけ削除しておけば字幕の文字化けは避けられる。

何で Arial をインストールしたら文字化けするのか、という新たな謎が出てきたので誰か解明してくだしあ。

追記。このページの方法では Hulu の字幕が化けるのは直らないので、 Hulu の字幕を直したい場合は以下を参考にする。