未解決問題
所謂 2ch 系の AA が貼られたページを Ubuntu 22.04.5 LTS の Firefox で表示すると、レイアウトが崩れる。
「Ubuntu フォント AA」でググってみたところ、
とりあえず、fonts-mona または fonts-monapo を入れておいて、about:preferences のフォントの設定から、「既定のフォント」または「ゴシック体(Sans-serif)」を「Mona」または「Monapo」に変更した上で、「☐ウェブページが指定したフォントを優先する」を外しておけば Mona や Monapo で表示できることは確認した。
ところが、「☑ウェブページが指定したフォントを優先する」が入っていると、
CSS が
どうも以下の設定
なぜか、
また、以下の HTML ではなぜか、fc-match で挙がる "Takao Pゴシック" ではなく "Noto Sans CJK JP" が使われてしまう。
※1 を参考に、
みたいなファイルを置いてみるが、これも上手く Monapo に alias してくれない。
~/.config/fontconfig/conf.d/ ではなく /etc/fontconfig/conf.d/ に置いても駄目。
どうにも、"MS Pゴシック" 周りのエイリアスの処理の挙動が怪しい感じ。
なぜ???
「Ubuntu フォント AA」でググってみたところ、
- パソコン手探り / 2010-02-02: UbuntuデスクトップでAA(アスキーアート)を綺麗に表示させるフォント
- marmooo's blog / 2018-08-15: Linuxのfont-familyの動作が謎過ぎる
- Palm84 某所の日記 / 2018-10-28: UbuntuでAA(アスキーアート)がずれるのはMS Pゴシックが置換されるからだった(かも?) ※1
とりあえず、fonts-mona または fonts-monapo を入れておいて、about:preferences のフォントの設定から、「既定のフォント」または「ゴシック体(Sans-serif)」を「Mona」または「Monapo」に変更した上で、「☐ウェブページが指定したフォントを優先する」を外しておけば Mona や Monapo で表示できることは確認した。
ところが、「☑ウェブページが指定したフォントを優先する」が入っていると、
CSS が
font-family: "MS Pゴシック", "MS PGothic", Mona, IPAMonaPGothic, sans-serif !important;が設定されているにも関わらず、なぜか、"Noto Sans CJK JP" で表示されてしまう。
どうも以下の設定
$ grep "MS Pゴシック" /etc/fonts/conf.d/ -R -B1 -A10 /etc/fonts/conf.d/30-cjk-aliases.conf- <alias> /etc/fonts/conf.d/30-cjk-aliases.conf: <family>MS Pゴシック</family> /etc/fonts/conf.d/30-cjk-aliases.conf- <accept> /etc/fonts/conf.d/30-cjk-aliases.conf- <family>Noto Sans CJK JP</family> /etc/fonts/conf.d/30-cjk-aliases.conf- <family>IPAMonaPGothic</family> /etc/fonts/conf.d/30-cjk-aliases.conf- <family>TakaoPGothic</family> /etc/fonts/conf.d/30-cjk-aliases.conf- <family>IPAPGothic</family> /etc/fonts/conf.d/30-cjk-aliases.conf- <family>VL PGothic</family> /etc/fonts/conf.d/30-cjk-aliases.conf- <family>Sazanami Gothic</family> /etc/fonts/conf.d/30-cjk-aliases.conf- <family>Kochi Gothic</family> /etc/fonts/conf.d/30-cjk-aliases.conf- </accept> /etc/fonts/conf.d/30-cjk-aliases.conf- </alias>
$ grep "MS PGothic" /etc/fonts/conf.d/ -R -B1 -A10 /etc/fonts/conf.d/30-cjk-aliases.conf- <alias> /etc/fonts/conf.d/30-cjk-aliases.conf: <family>MS PGothic</family> /etc/fonts/conf.d/30-cjk-aliases.conf- <accept> /etc/fonts/conf.d/30-cjk-aliases.conf- <family>Noto Sans CJK JP</family> /etc/fonts/conf.d/30-cjk-aliases.conf- <family>IPAMonaPGothic</family> /etc/fonts/conf.d/30-cjk-aliases.conf- <family>TakaoPGothic</family> /etc/fonts/conf.d/30-cjk-aliases.conf- <family>IPAPGothic</family> /etc/fonts/conf.d/30-cjk-aliases.conf- <family>VL PGothic</family> /etc/fonts/conf.d/30-cjk-aliases.conf- <family>Sazanami Gothic</family> /etc/fonts/conf.d/30-cjk-aliases.conf- <family>Kochi Gothic</family> /etc/fonts/conf.d/30-cjk-aliases.conf- </accept> /etc/fonts/conf.d/30-cjk-aliases.conf- </alias>により "MS Pゴシック", "MS PGothic" の alias として設定されている "Noto Sans CJK JP" に fallback されててそうな雰囲気なのだが、
なぜか、
$ fc-match "MS Pゴシック" fonts-japanese-gothic.ttf: "Takao Pゴシック" "Regular"
$ fc-match "MS PGothic" fonts-japanese-gothic.ttf: "Takao Pゴシック" "Regular"みたいに fontconfig では alias 設定されてるはずの "Noto Sans CJK JP" ではなく "Takao Pゴシック" が拾われる。
また、以下の HTML ではなぜか、fc-match で挙がる "Takao Pゴシック" ではなく "Noto Sans CJK JP" が使われてしまう。
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>Font Test</title> <style> body { font-family: "MS Pゴシック", "MS PGothic", Mona, IPAMonaPGothic, sans-serif !important; } </style> </head> <body> これはテストです。 </body> </html>
※1 を参考に、
<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> <!-- Aliases for Japanese Windows fonts --> <alias> <family>MS PGothic</family> <accept> <family>Monapo</family> <family>IPAMonaPGothic</family> <family>TakaoPGothic</family> <family>IPAPGothic</family> <family>VL PGothic</family> <family>Sazanami Gothic</family> <family>Kochi Gothic</family> </accept> </alias> <alias> <family>MS Pゴシック</family> <accept> <family>Monapo</family> <family>IPAMonaPGothic</family> <family>TakaoPGothic</family> <family>IPAPGothic</family> <family>VL PGothic</family> <family>Sazanami Gothic</family> <family>Kochi Gothic</family> </accept> </alias> </fontconfig>
~/.config/fontconfig/conf.d/ ではなく /etc/fontconfig/conf.d/ に置いても駄目。
どうにも、"MS Pゴシック" 周りのエイリアスの処理の挙動が怪しい感じ。
なぜ???
「Ubuntu Firefox "MS Pゴシック"」でググったら、右側の AI によりリコメンド(?)の所に以下のページを見つけた。
ただ、これ、英語名は変更できるんだけど、日本語名の変更方法が分からない。
と言うことで、fontforge を install して、monapo.ttf を読み込ませて、
「エレメント」→「フォント情報」から
「PS Names」のところを
手動でするのは面倒なので Copilot 先生にお伺いを立ててみたところ のような回答だったので、以下のような script を書いてみた。
あとは、以下のような感じで実行すると、期待通りの .ttf が得られて Firefox からも参照できた。
fontconfig のエイリアスが上手く処理できてないのは未解決問題だが、とりあえず AA のレイアウトに関しては解決したということで。
- 京セラ みらいエンビジョン株式会社 ・2024-03-27: 商用利用可能!Linuxに任意のフォント名を追加する手順
ただ、これ、英語名は変更できるんだけど、日本語名の変更方法が分からない。
と言うことで、fontforge を install して、monapo.ttf を読み込ませて、
「エレメント」→「フォント情報」から
「PS Names」のところを
- フォント名 : MS-PGothic
- ファミリー名 : MS PGothic
- 表示用の名前 : MS PGothic
- 日本語 : ファミリー : MS Pゴシック
- 日本語 : UniqueID : MS Pゴシック pretended by Monapo
- 日本語 : フルネーム : MS Pゴシック
- 英語(アメリカ) : UniqueID : MS PGothic pretended by Monapo
- /usr/local/share/fonts/
手動でするのは面倒なので Copilot 先生にお伺いを立ててみたところ のような回答だったので、以下のような script を書いてみた。
import fontforge # フォントファイルを開く font = fontforge.open("/usr/share/fonts/truetype/monapo/monapo.ttf") # フォント情報を設定 font.fontname = "MS-PGothic" font.familyname = "MS PGothic" font.fullname = "MS PGothic" font.appendSFNTName('Japanese', 'Family', 'MS Pゴシック') font.appendSFNTName('Japanese', 'UniqueID', 'MS Pゴシック pretended by Monapo') font.appendSFNTName('Japanese', 'Fullname', 'MS Pゴシック') font.appendSFNTName('English (US)', 'UniqueID', 'MS PGothic pretended by Monapo') # フォントを保存 font.generate("/tmp/mspgothic-monapo.ttf") # フォントを閉じる font.close()
sudo apt install python3-fontforge python3 monapo2mspgothic.py sudo cp -a /tmp/mspgothic-monapo.ttf /usr/local/share/fonts/
fontconfig のエイリアスが上手く処理できてないのは未解決問題だが、とりあえず AA のレイアウトに関しては解決したということで。
タグ
コメントをかく