Mozilla

0.9.5での日本語メニュー・フォントと入力フォームのフォント

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;
    }
Written: Mon Oct 29 JST 2001

また、入力フォームのテキストボックスやテキストエリア、ボタン、プルダウンメニュー(と言うのか?)も同様になっていた。

‾/.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;
}

わざわざ重複して明示しないと、駄目なようだ(笑)。

Written: Sat Dec 1 JST 2001

0.9.2での1バイト英数字フォント

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バイトで使っている日本語フォントを使う場合

私は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-rmedium-ibold-rbold-iの4つとしてpで指定する。

ついでに、このフォントには2バイトの非漢字部分(かなや句読点など)のプロポーショナルフォントも含まれているので、2バイトプロポーショナルとしてjisx0208.1983-0fn=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:を外せば表示は少しきれいになるが、異常に遅くなるので妥協するしかない。

X標準の欧文フォントを使う場合

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-timesHSMinchoの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:を止めればきれいに表示されるが、異常に遅くなる。

Written: Thu Aug 16 JST 2001
Modified: Fri Aug 17 JST 2001

0.9.1での1バイト英数字フォント

これまで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;
}
Written: Sun Jul 8 JST 2001

0.8でのPSMのコンパイル

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が出るはずだが。

Written: Sat Feb 17 JST 2001

0.7でのPSMのコンパイル

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が使えるようになる。

Written: Mon Jan 22 JST 2001

その後、ports-currentでもPSMがサポートされた。ほぼ上記のような修正のほかに、いくつかのパッチが加わっているので、それを使った方がよい。

Modified: Mon Jan 29 JST 2001

SVG、XSLT付きの0.7のインストール

ソースを取って来るのも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システムなどのマルチユーザ環境では、一般ユーザの書き込み権限のない共有ディレクトリにインストールするとまずいことが起こるので、現状は個人ディレクトリにインストールすべきらしい。これは今まで知らなかったのだが、インストーラについての話だろうか…。

Written: Sun Jan 14 JST 2001
Modified: Mon Jan 29 JST 2001

M18のビルド

M18がリリースされたが、mozilla-i386-unknown-freebsdelf4.0-M18.tar.gzmozilla-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以降に上げないとだめなのかもしれない。

Written: Sat Oct 21 JST 2000

というわけで、ソースを取って来て、ビルドした。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="">)に飛べない、などのバグがあった。

Written: Wed Oct 25 JST 2000

上記のやり方は少しいい加減すぎるかとも思い、その後の毎夜(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
Written: Fri Dec 08 JST 2000

標準より小さい日本語フォントを表示させる方法

下で書いた、日本語文字が標準より小さくならない問題は、設定の問題だった。/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.jsuser_prefとして書き加えれば小さくできる。

Written: Tue Oct 24 JST 2000

M14、M15、M17のバイナリ

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 $*

バグらしきもの

当然ながらバグらしきものはいろいろあるが、特に気になるものとしては以下のようなものがある。

Modified: Sat Jun 17 JST 2000

上記の「―」などの問題はM17のFreeBSD版バイナリでも直ってないが、http://bugzilla.mozilla.org/show_bug.cgi?id=33162によるとM18でLinux版がfixしているらしいので、FreeBSD版でも直るのだろう。

Written: Sat Sep 12 JST 2000

FreeBSD目次 | トップページ