
Ubuntu日本語フォーラム
ログインしていません。
Ubuntu9.10を使用しています。Flashを用いた学習サイトsmart.fmを利用しているのですが、一部の文字が文字化けしてしまいます。
htmlベースで単語一覧などを表示している時は正常に表示されるのですが、Flashを用いた学習モードに入ると一部の文字が文字化けしてしまうのです。
html表示
Flash表示
この場合、五つ目のcám ơn の「ơ」が文字化けしています。
どうやらフランス語等で使う「á」や「â」等は文字化けしないようですが、ベトナム語固有の文字の場合はほぼ文字化けするようです。
htmlでは問題なくFlashだけ文字化けするのはフォントの問題かなと思うのですが、どうやって使用フォントを変更できるのかよくわかりません。
以下のFlashで文字化けしないように出来ないものでしょうか。
ベトナム語のリスト
※言語サポートで日本語、ベトナム語は設定してあります。
オフライン
tequilaski による投稿:
htmlでは問題なくFlashだけ文字化けするのはフォントの問題かなと思うのですが、どうやって使用フォントを変更できるのかよくわかりません。
フォントに関しては、ホーム以下に .fonts.conf というファイル(隠しファイル)を記述することで、そのユーザ個人用に様々設定が可能なので
# http://www.fontconfig.org/fontconfig-user.html
# http://www.google.co.jp/search?hl=ja&source=hp&q=fonts.conf&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=&aq=f&oq=
「該当Flashが内部で指定しているフォント名」が別のフォントを指すようにしたらどうだろう?と思います。
(Flashの中身がわからないので基本的には勘でアタリをつけるしかないですが)
例えば私は
・IPAモナーゴシックをシステム全体に渡って使いたい
・画面で見る明朝体が好きでないので明朝体もゴシック体で表示させたい
という理由で、
<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> <match target="pattern"> <test qual="any" name="family"> <string>sans-serif</string> </test> <edit name="family" mode="prepend" binding="strong"> <string>IPAMonaPGothic</string> </edit> </match> <match target="pattern"> <test qual="any" name="family"> <string>serif</string> </test> <edit name="family" mode="prepend" binding="strong"> <string>IPAMonaPGothic</string> </edit> </match> <match target="pattern"> <test qual="any" name="family"> <string>monospace</string> </test> <edit name="family" mode="prepend" binding="strong"> <string>IPAMonaGothic</string> </edit> </match> </fontconfig>
このような内容の .fonts.conf を作成し、
明朝体やセリフのフォントを総称するのに使われる「serif」というフォント名に IPAMonaPGothic を使う・・・などというような事をしています。
このような形の応用で、Flashが内部で指定していそうなフォント名が望みのフォントを指すようにすれば解決できるかもしれません。
なお、フォント名の確認は
fc-list
コマンドで行えます。
オフライン
ack様
情報提供ありがとうございます。
.fonts.confを書き換えて、ベトナム語が表示できるフォントを先頭に持ってきてみました。
するとFlashの画面でベトナム語の文字化けは改善され、ちゃんと表示できるのですが、日本語が文字化けするようになりました。
日本語文字化け
両方を含んだフォントがあれば解決しそうです。
オフライン
tequilaski による投稿:
両方を含んだフォントがあれば解決しそうです。
これが正しい書き方である自信はまったくないのですが、手元の環境では例えば
<match target="pattern"> <test qual="any" name="family"> <string>sans-serif</string> </test> <edit name="family" mode="prepend" binding="strong"> <string>DejaVu Sans</string> <string>IPAMonaPGothic</string> </edit> </match>
のように、フォント名を2つ書いてみたところ、
・英語の部分は英字フォントのDejaVu Sans
・DejaVu Sansに含まれていない部分はIPAMonaPGothic
になりましたので、フォントを2種類(以上)書いてみたらうまく行くでしょうか。
オフライン
追記
HAN NOMというUnicodeフォントを見つけたので、それを先頭に指定したところ日本語、ベトナム語とも表示されました。
本当に助かりました。
ただ……このフォントちょっと読みづらいです。またこれを先頭にしたらGNOMEのメニューがみんなこのフォントになってかなり使いづらくなってしまいました。
HAN NOM
オフライン
tequilaski による投稿:
HAN NOMというUnicodeフォントを見つけたので、それを先頭に指定したところ日本語、ベトナム語とも表示されました。
日本語フォントの方を先に書いたら、「日本語フォントに含まれていない部分」だけ別のフォントになるかも、と思います。
オフライン
さらに追記です。
IPAMonaPgothicの下にあったIPAPGothicを一番上に持ってきたら問題なく日本語ベトナム語混在でFlashが表示できました。書体的にもHAN NOMより日本人好みで読みやすいです。
IPAMonaが先頭になっているのは問題あるんじゃないかなぁと思いました。
<string>IPAMonaPGothic</string>
<string>IPAPGothic</string> ← これです。
オフライン
ack様
すみません。書き込みに気づかず連続投稿していました。
Flash以外では二つ以上のフォントが合成されているのですが、Flashでは先頭のしか表示されていないようです。
オフライン
解決して何よりです。
なお、参考までに
tequilaski による投稿:
IPAMonaPgothicの下にあったIPAPGothic
IPAMonaが先頭になっているのは問題あるんじゃないかなぁと思いました。
ホームディレクトリ内の .fonts.conf ファイルは少なくともUbuntuをインストールしたばかりの時は存在しませんので、
今回の作業を行うおうとする際、既に .fonts.conf が存在していたら過去ご自身で設定ファイルを作ったか、何か
管理者権限を必要としないユーティリティソフトのようなものが .fonts.conf を生成していた可能性が考えられます。
オフライン
ack様
ack様の情報を元に以下のサイトを参考にしました。
http://www.k5.dion.ne.jp/~r-f/sicklylife/memo/i_use_ubuntu_810/soft_set.html
そして、以下のコマンドを打ちました。
cp /etc/fonts/conf.avail/69-language-selector-ja-jp.conf ~/.fonts.conf
結果、一つ目がIPAMona 二つ目がIPAになりました。
そこからいろいろフォントを登録したり順番を変えたりしていました。
UbuntuでIPAモナーがデフォルトになっている理由は何かあるんでしょうけど、今回の件でIPAモナーは収録文字数が少ないように感じました。IPAがデフォルトであったならFlashの問題は起きなかったと感じたのです。
ack様のおかげで解決しましたが、標準で不具合無く動作してくれた方が嬉しいかなと。
オフライン
なるほどコピーを取って作業をされたのですね。
tequilaski による投稿:
UbuntuでIPAモナーがデフォルトになっている理由は何かあるんでしょうけど
そもそもUbuntuではIPAモナーフォントはデフォルトではなく(現在はVL Gothic)、追加インストールしてIPAモナーフォントを入れた人向けに
そちらが優先されるよう設定してあるという事と思いますので、IPAモナーフォントを削除しIPAフォントのみ入れる、というのも手かもしれません。
# なお、10.04からはIPAフォントの派生版(ということは同じ量の文字種を持っている事を期待できる)Takaoフォントがデフォルトの可能性が非常に高いようです。
オフライン
ack様
私の場合は日本語Remixを設定していたからだと思うのですがIPAモナーが入っていました。(何度かアップグレードしているのでだんだんよくわからなくなっていますけど)
TakaoフォントがIPAモナーみたいに文字数が少なくなっていなければ助かります。
躓く人が減ると思います。
この件だいぶ前から気がついていたものの諦めかけていて、smart.fmで学習するときだけWindowsを起動していましたから。
オフライン
Takaoフォント試してみました。
Takaoフォントは問題なく日本語もベトナム語も表示できました。
ついでにいくつか調べました。
フランス語等の声調記号付き文字はラテン1補助に入っているようで、IPAモナーにもここは入っています。
ベトナム語の文字はラテン拡張Aとラテン拡張Bに入っています。これはIPAゴシック、Takaoゴシック、VLゴシックには入っていますが、IPAモナーには入っていないようです。
Flash以外ではほとんど問題にならないようですが、Flashでは一つ目のフォントの内容しか表示されないため、Flashで多国語環境を必要とする場合IPAモナーが一つ目になっていると文字化けしてしまいます。
smart.fm等のFlashを用いた学習サイトで多国語表示を行う場合はかなり致命的な問題だと思いますが、10.04でTakaoフォントがデフォルトになるなら今後はあまり発生しないでしょうね。
オフライン
すみません。
昨日解決したと思ったのですが、本日試してみるとまた表示されなくなっていました。
昨日は確かに HAN NOM AやTakaoPGOTHICで表示されていたのですが、本日試すと文字化けしてしまいました。
原因がまったくわかりません。
とりあえず未解決ということでお願いします。
表示できた人いないでしょうか?
<string>HAN NOM A</string>
<string>TakaoPGothic</string>
<string>VL PGothic</string>
オフライン
ひとまず .fonts.conf の記述がおかしくなってしまっていないかチェックしてみて、その後
効果があるかわかりませんが、端末より
fc-cache -fv
と実行して、フォントキャッシュを作り直してみるのはいかがでしょうか。
オフライン
ack様
どうやら昨日の成功はキャッシュが都合良く効いた為のようです。
日本語が表示できるフォントを先頭に持ってきた後、ブラウザを再起動せずにベトナム語が表示できて日本語が表示できないLucida Sans Unicodeを先頭に持っくるとおそらくキャッシュの影響で両方表示できることを確認しました。
しかし、教えていただいたfc-cache -fvを行いブラウザを再起動するとベトナム語は表示できるものの日本語は表示できなくなりました。
もう少しいろいろ試してみます。
昨日私が書いた情報はかなり間違っているようです。
オフライン
フォントキャッシュのクリアとブラウザ再起動を毎回行いながらフォントの順番を変更してみました。
結論としてはVLゴシックのみがベトナム語と日本語の双方文字化けしないフォントでした。
IPAゴシックやTakaoゴシックが文字化けしないというのは勘違いでフォントキャッシュの影響によるものでした。
なお、VLゴシックのみPCを再起動して確認しましたが問題なく日越混在フラッシュを利用できました。
VLゴシックでは正常に動作するので解決ですが、Takaoフォントがデフォルトになるなら足りない部分を補完するようにしてもらいたいですね。
越× 日○IPAPGothic
越○ 日○VL PGothic
越× 日×HAN NOM B
越× 日○HAN NOM A
越○ 日×Lucida Sans Unicode
越× 日○TakaoPGothic
越× 日○IPAMonaPGothic
越× 日○Sazanami Gothic
オフライン
初めまして、関連する事項かと思い、以前の話題に続けて質問させていただきます。
こちらの環境は以下のとおりです。
・lubuntu 11.04 のクリーンインストール
・Language Support から日本語入力とフォントのインストール
・ttf-unfonts-coreのアンインストール(参考: http://blog.minawa.net/2010/08/ubuntu_11.html )
これでChromiunのウェブ閲覧はほぼ問題無いのですが、唯一、Youtubeでの日本語字幕が
正しく表示できず、すべて□□表示になってしまいます。 (例: http://www.youtube.com/watch?v=1OEj7_j2z7Q )
少し調べて、 http://d.hatena.ne.jp/over80/20100504/1272993532 を参考にし、フォントを確認して見たところ
標準?やsans-serif、monospaceは TakaoPGothic の指定になっているのですが、serifについて
$ fc-match serif:lang=ja
lohit_ta.ttf: "Lohit Tamil" "Regular"
となっておりました。
そこで以下のような .fonts.conf を作成しました
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<match target="pattern">
<test qual="any" name="lang" compare="contains">
<string>ja</string>
</test>
<test name="family" qual="any">
<string>serif</string>
</test>
<edit name="family" mode="prepend" binding="strong">
<string>TakaoPMincho</string>
</edit>
</match>
</fontconfig>
しかしながら、フォントキャッシュクリアをしてみましたが、$ fc-match serif:lang=ja の結果は変わりません。
何か確認すべきポイントなど、ご示唆いただければ幸いです。
オフライン