0.9.5にして、日本語パックをportsからではなく直接インストールしたところ、メニューのフォントが16ピクセルくらいの大きなものになってしまった。
Netscape 4.xは使わなくなっているので、portsのja-netscape-font
はもはや入ってないのだが、念のため試しに入れてみると、今度は、欧文部分は小さくなるが、日本語部分の2バイトフォントは小さなビットマップ・フォントを16ピクセルくらいに拡大したギザギザ状態になってしまう。
おそらく日本語パックをportsからインストールすれば問題ないのだろうが、とりあえず、いい加減に、~/.mozilla/profile_name/xxxxxxxx.slt/chrome/userChrome.css
を以下のようにして、済ますことにする。
* { font-family: helvetica, sans-serif !important; font-size: 14px !important; }
また、入力フォームのテキストボックスやテキストエリア、ボタン、プルダウンメニュー(と言うのか?)も同様になっていた。
~/.mozilla/profile_name/xxxxxxxx.slt/chrome/userContent.css
に、以下を復活されても変わらない。
body { font-family: times, serif !important; } code,kbd,pre,tt { font-family: courier, monospace !important; }
まさかとは思ったが、念のため、以下のようにしてみたら、回復した。
body,input,textarea,select { font-family: times, serif !important; } code,kbd,pre,tt { font-family: courier, monospace !important; }
わざわざ重複して明示しないと、駄目なようだ(笑)。
0.9.2になるとjisx0208.1983-0とjisx0201.1976-0の区別はさらに厳密になったようで、日本語ページ内の1バイト英数字部分は、X-TTで特に指定しない限りはJapaneseフォントで表示されるようになった(Windows版やMacintosh版と同じになった)。
したがって私の環境では、0.9.1のときに~/.mozilla/default/chrome/userContent.css
で出来た方法も無効になった。
実は、単にユーザ・プロファイルが~/.mozilla/default/
ではなく、~/.mozilla/ユーザ名/hoge.slt/
に変わったためだったのだが(笑)。
せっかくの機会なので、プロポーショナルな1バイト英数字を表示させるために、X-TTで指定することにした。
私は2バイトの日本語フォントには、ダイナラブ・ジャパンの『DynaFont Type Museuum』TrueType 100所収のDF平成明朝体W3をmediumに、W9をboldに使っているが、まずMozilla用としては、iso8859-1
に指定しても効かないので、jisx0201.1976-0
として指定する。
また、jisx0201.1976-0
にはfn=1
(DFP平成明朝体)を指定しないと、文字自体は半角固定幅で文字のボックス幅は全角固定幅になってしまう。これをfonts.dir
で、medium-r
、medium-i
、bold-r
、bold-i
の4つとしてp
で指定する。
ついでに、このフォントには2バイトの非漢字部分(かなや句読点など)のプロポーショナルフォントも含まれているので、2バイトプロポーショナルとしてjisx0208.1983-0
にfn=2:vl=y:
付き(DFG平成明朝体)でp
を指定する。
結局、プロポーショナルをHSPMincho
、固定幅をHSMincho
として指定する場合、fonts.dir
の2バイト部分は以下のようになる。
fn=2:vl=y:eb=y:DFHsm3.ttc -DynaLab-HSPMincho-medium-r-normal--0-0-0-0-p-0-jisx0208.1983-0 fn=2:vl=y:eb=y:DFHsm9.ttc -DynaLab-HSPMincho-bold-r-normal--0-0-0-0-p-0-jisx0208.1983-0 fn=2:vl=y:eb=y:ai=0.3:DFHsm3.ttc -DynaLab-HSPMincho-medium-i-normal--0-0-0-0-p-0-jisx0208.1983-0 fn=2:vl=y:eb=y:ai=0.3:DFHsm9.ttc -DynaLab-HSPMincho-bold-i-normal--0-0-0-0-p-0-jisx0208.1983-0 eb=y:DFHsm3.ttc -DynaLab-HSMincho-medium-r-normal--0-0-0-0-c-0-jisx0208.1983-0 eb=y:DFHsm9.ttc -DynaLab-HSMincho-bold-r-normal--0-0-0-0-c-0-jisx0208.1983-0 eb=y:ai=0.3:DFHsm3.ttc -DynaLab-HSMincho-medium-i-normal--0-0-0-0-c-0-jisx0208.1983-0 eb=y:ai=0.3:DFHsm9.ttc -DynaLab-HSMincho-bold-i-normal--0-0-0-0-c-0-jisx0208.1983-0
この場合eb=y:
は無意味なようだが、おまじないとして一応入れている。vl=y:
を外せば表示は少しきれいになるが、異常に遅くなるので妥協するしかない。
Mozillaの標準のWesternのSerif(ヒゲつき)フォントはadobe-times
、固定幅フォントはadobe-courier
なので、日本語ページ内の1バイトもこれらを使うようにする。
まずadobe-times
は本来はビットマップなので、/etc/XF86Config
で、:unscaled
ではないFontPath "/usr/X11R6/lib/X11/fonts/75dpi,/usr/X11R6/lib/X11/fonts/100dpi"
を有効にしないと、表示がきれいにならない。
そして、HSPMincho
の1バイトをadobe-times
、HSMincho
の1バイトをadobe-courier
で表示させるために、fonts.alias
で以下のように指定する。
"-DynaLab-HSPMincho-medium-r-normal--0-0-0-0-p-0-jisx0201.1976-0" "-adobe-times-medium-r-normal--0-0-0-0-p-0-iso8859-1" "-DynaLab-HSPMincho-medium-i-normal--0-0-0-0-p-0-jisx0201.1976-0" "-adobe-times-medium-i-normal--0-0-0-0-p-0-iso8859-1" "-DynaLab-HSPMincho-bold-r-normal--0-0-0-0-p-0-jisx0201.1976-0" "-adobe-times-bold-r-normal--0-0-0-0-p-0-iso8859-1" "-DynaLab-HSPMincho-bold-i-normal--0-0-0-0-p-0-jisx0201.1976-0" "-adobe-times-bold-i-normal--0-0-0-0-p-0-iso8859-1" "-DynaLab-HSMincho-medium-r-normal--0-0-0-0-c-0-jisx0201.1976-0" "-adobe-courier-medium-r-normal--0-0-0-0-m-0-iso8859-1" "-DynaLab-HSMincho-medium-i-normal--0-0-0-0-c-0-jisx0201.1976-0" "-adobe-courier-medium-i-normal--0-0-0-0-m-0-iso8859-1" "-DynaLab-HSMincho-bold-r-normal--0-0-0-0-c-0-jisx0201.1976-0" "-adobe-courier-bold-r-normal--0-0-0-0-m-0-iso8859-1" "-DynaLab-HSMincho-bold-i-normal--0-0-0-0-c-0-jisx0201.1976-0" "-adobe-courier-bold-i-normal--0-0-0-0-m-0-iso8859-1"
ライセンスの問題はあるが、仮にWindows 98SEのMS (P)明朝を使う場合は、jisx0201.1976-0
をプロポーショナルにするためにはfn=1
を指定しないと、文字は半角固定幅になってしまう。
また、2バイトにp
を指定しても、vl=y:
を指定すると、かなや句読点とその周辺で文字欠けがかなり目立ち、読みにくくなる。vl=y:
を止めればきれいに表示されるが、異常に遅くなる。
これまでUNIX版のMozillaは、UNIX版のNetscape 4.*と同じく、日本語ページ内の1バイト英数字部分は、Japaneseで設定したフォントではなくWesternで設定した(プロポーショナルな)ものを使って表示されていた。なので、X-TTをMozillaやNetscape 4.*のためだけに使っていた私は、jisx0208.1983-0
だけを全角固定幅で指定していた。
しかし、0.9.1からは日本語フォントの扱いが変わり、1バイト英数字を含むjisx0201.1976-0が区別されるようになったため、特にX-TTで指定しない場合は、1バイト英数字は、適当な固定幅の半角フォントで表示されるようになってしまった。X-TTでjisx0201.1976-0
を表示させたいフォントで指定すればいいわけだろうが、[moz-users:03548] Re: 0.91 にしたらプロポーショナルフォントが,,,を参考に、~/.mozilla/default/chrome/userContent.css
で以下のように指定すれば、ほぼ以前と同様にさせることができる。
body { font-family: times, serif !important; } code,kbd,pre,tt { font-family: courier, monospace !important; }
0.8がリリースされた。0.7用のportsのパッチpatch-ak、patch-an、patch-ao、patch-ap、patch-aq、patch-mi、patch-qtのうち、patch-aoは当たらないが、この部分はソースでは別の方法で書かれるようになっているので、とりあえずはそのままにしておいてよい。
patch-apも当たらないが、これは当てないとPSMが使えないので、とりあえずこのpacth-ap.txtに入れ換えればよい。そのうちports-currentが出るはずだが。
0.7にはPSMのコードが含まれているが、デフォルトではコンパイルされない。
[moz-users:02060]で教わったgmake BUILD_MODULES=psmをしてみると、
Makefile:34: ../../security/coreconf/FreeBSD4.2.mk: No such file or directory
で止まってしまうので、いい加減に、ln -s FreeBSD.mk FreeBSD4.2.mkしてみると、以下のエラーになる。
/usr/libexec/elf/ld: cannot find -lC gmake[3]: *** [FreeBSD4.2_OPT.OBJ/psm] エラー 1 gmake[3]: 出ます ディレクトリ `/usr/ports/www/mozilla/work/mozilla/security/psm/server'
そこで試しに、さらにいい加減に(笑)、Linuxと同じになるよう、このディレクトリのMakefileを次のようにしてみる。
diff -c Makefile.dist Makefile *** Makefile.dist Wed Dec 20 10:24:58 2000 --- Makefile Sun Jan 21 06:28:33 2001 *************** *** 40,45 **** --- 40,48 ---- ifeq ($(OS_ARCH), Linux) # On linux, we link with libstdc++ (we're always using egcs on linux, right?) CPLUSPLUSRUNTIME = -L /usr/lib -lstdc++ -lm + endif + ifeq ($(OS_ARCH), FreeBSD) + CPLUSPLUSRUNTIME = -L /usr/lib -lstdc++ -lm else # libC, presumably, is what we must link with elsewhere CPLUSPLUSRUNTIME = -lC -lm *************** *** 251,256 **** --- 254,265 ---- endif $(NSINSTALL) -m 755 $(PROGRAM) xpi/psm ifeq ($(OS_ARCH), Linux) + $(NSINSTALL) -m 755 $(DIST)/bin/regxpcom $(PLATFORM) + $(NSINSTALL) -m 755 start-regxpcom $(PLATFORM) + cd $(PLATFORM); start-regxpcom + $(NSINSTALL) -m 644 $(PLATFORM)/component.reg xpi/psm + endif + ifeq ($(OS_ARCH), FreeBSD) $(NSINSTALL) -m 755 $(DIST)/bin/regxpcom $(PLATFORM) $(NSINSTALL) -m 755 start-regxpcom $(PLATFORM) cd $(PLATFORM); start-regxpcom
すると、コンパイルは終るが、SSLのページ(https://)には読みには行くもののそのままハングしてしまう。
結局、[moz-users:02198]でhttp://bugzilla.mozilla.org/show_bug.cgi?id=65549を教わったが、nsprpub/pr/src/misc/prnetdb.c
に、このパッチを当てると、FreeBSDでもPSMが使えるようになる。
その後、ports-currentでもPSMがサポートされた。ほぼ上記のような修正のほかに、いくつかのパッチが加わっているので、それを使った方がよい。
ソースを取って来るのもmakeするのも、だんだん面倒になってきたのに、Mozilla 0.6以降は、mozilla.orgには、リリース版のFreeBSDバイナリも置かれなくなってしまった。
0.7についてはmozdev.orgにあったので、それを使うことにしたが、これはMathML付きのバイナリではなかった。数日後にmozilla.orgにMathML付きのFreeBSDバイナリが置かれたが、これはSVG付きではなかった。FreeBSDのportsも出たが、SVGオプションは付いてない。なので、少し手を加えてビルドする。Broken
だというXSL(XSLT)も付け足したMathML+SVGは、以下のようにインストールする(4.2-RELEASE)。make installでもできそうだが、オプションを変えているのでports/packagesとしての登録はしないようにしている。
# cd /usr/ports/www/mozilla # diff Makefile.dist Makefile > --enable-svg \ > --enable-xsl \ > --with-extensions=default,transformiix \ # rm work/.configure_done # rm work/.build_done # make >& Make.log & # make post-build # make do-install
ちなみに、mozilla-source-0.7.tar.gz
を展開したら、約32000ファイルだった。十数年前は、自動車の部品は約1万個、飛行機が約10万個、ロケットは約100万個と言われていた。今はもっと少なくなっているのだろうが、なんにせよ、Mozillaは自動車数台分だということだ (^_^;)。
ところで、Release noteを久しぶりにちゃんと読んでみたら、UNIXシステムなどのマルチユーザ環境では、一般ユーザの書き込み権限のない共有ディレクトリにインストールするとまずいことが起こるので、現状は個人ディレクトリにインストールすべきらしい。これは今まで知らなかったのだが、インストーラについての話だろうか…。
M18がリリースされたが、mozilla-i386-unknown-freebsdelf4.0-M18.tar.gz
もmozilla-i386-unknown-freebsdelf4.1.1-M18.tar.gz
も、4.0-RELEASEでは、またSegmentation faultで起動できない。
Xサーバには4.0-RELEASEのpackagesにあるXttXF86-SVGAを使っているのだが、これはXFree86 3.3.5ベースのバイナリなので、これが悪いのかとも思い、ports-currentから3.3.6ベースのXttXF86-SVGAをmake installしてみたが、変わりはなかった(ちなみにPentium III 600MHz、メモリ256MBで、約14分だった。昔DX2 66MHzだったかのときはXのmakeに5時間くらいかかった記憶がある)。
やはりソースからコンパイルするか、Xを3.3.6_2に上げるか、OSを4.1以降に上げないとだめなのかもしれない。
というわけで、ソースを取って来て、ビルドした。4.0-RELEASEのpackagesでGTKとGLIBをインストールしている場合は、setenv GTK_CONFIG /usr/X11R6/bin/gtk12-config; setenv GLIB_CONFIG /usr/local/bin/glib12-configしてから、./configure; gmakeでコンパイルできる(Pentium III 600MHz、メモリ256MBで、約1時間20分)。
めでたく起動でき、「―」の表示などは直っているが、逆にページ内のアンカー(<a name="">)に飛べない、などのバグがあった。
上記のやり方は少しいい加減すぎるかとも思い、その後の毎夜(Nightly)のソースのコンパイルでは、Building A Mozilla DistributionとFreeBSDのportsのMakefile
を参考にして、以下のようにインストールする。
% cat .mozconfig ac_add_options --disable-tests ac_add_options --disable-debug ac_add_options --enable-optimize ac_add_options --enable-mathml ac_add_options --enable-svg % setenv GTK_CONFIG /usr/X11R6/bin/gtk12-config % setenv GLIB_CONFIG /usr/local/bin/glib12-config % setenv MOZILLA_OFFICIAL 1 ; setenv BUILD_OFFICIAL 1 % ./configure % gmake -f client.mk build >& Make.log & % su # mkdir /usr/X11R6/lib/mozilla # chmod 755 /usr/X11R6/lib/mozilla # cd dist/bin # tar -chf - * | tar -xf - -C /usr/X11R6/lib/mozilla
下で書いた、日本語文字が標準より小さくならない問題は、設定の問題だった。/usr/X11R6/lib/mozilla/defaults/pref/unix.js
の中のpref("font.min-size.variable.ja", 16); pref("font.min-size.fixed.ja", 16);
を書き換えるか、~/.mozilla/default/prefs.js
にuser_pref
として書き加えれば小さくできる。
FreeBSDを4.0-RELEASEに上げて、五橋研究所発行の『FreeBSD 4.0 Complete Package』のCD-ROMのpackagesに含まれていたmozilla-M14.tar.gz
をインストールしたところ、Segmentation faultで起動できなかった。パッケージが古いのか、コンパイルが4.0用ではないのかと思い、FreeBSDのサイトを見てみると、mozilla-M15.tar.gz
というpackageがあったのでダウンロードしてみたが、同様の結果だった。
ソースは大きいのでダウンロードするのは嫌だったのだが、http://www.mozilla.org/へ行ってみると、Milestone 16のFreeBSD 4.0用のバイナリmozilla-i386-unknown-freebsdelf4.0-M16.tar.gz
があったので、ダウンロードしてみたら問題なく起動できた。a.out形式コンパチのためのライブラリはインストールしているはずなのだが、4.0から何か変わったのか…。どうやら、4.0に含まれているXFree86 3.3.6のパッケージにはa.outのライブラリはデフォルトでは含まれなくなったようだが、詳しくは調べていない…。
なお、このバイナリセットは、FreeBSDのpackagesのM14やM15とはディレクトリの構成が違っている。私の場合、解凍してできるpackages/
以下を/usr/X11R6/lib/mozilla/
以下にコピーし、起動ファイルには、FreeBSDのpackagesと同じ、以下のような内容のファイルを/usr/X11R6/bin/
に用意して使っている。
#!/bin/sh cd /usr/X11R6/lib/mozilla exec ./mozilla $*
当然ながらバグらしきものはいろいろあるが、特に気になるものとしては以下のようなものがある。
font-size
でも、<font size>
、<small>
、<h6>
でも、日本語文字が標準より小さくならない(X-TTとの関連か)。上記の「―」などの問題はM17のFreeBSD版バイナリでも直ってないが、http://bugzilla.mozilla.org/show_bug.cgi?id=33162によるとM18でLinux版がfixしているらしいので、FreeBSD版でも直るのだろう。