この日記はMozillaのプロダクトへの貢献者としての私の成果を中心に、気になったバグやWeb界隈の話題について書いていますが、 断り書きがある場合を除き、いかなる団体のオフィシャルな見解ではありません。あくまでも個人的なものです。 Mozilla Foundation、Mozilla Corporation、及び関連企業の公式情報ではないことに注意してください。

現在、XHTML 1.0 (もどき)から、HTML5なコンテンツに修正中です。古い日記は修正が完了していませんので表示が崩れます。 順次、修正していく予定ですのでしばらくお待ちください。

もずはっく日記(2005年5月)

2005年5月1日

2005年5月2日

2005年5月3日

2005年5月5日

<table>のrules属性で細い罫線にしかならない(border-collapse:collapse;になる) 初回投稿日時: 2005年05月05日03時19分26秒
最終更新日時: 2005年05月05日03時22分21秒
カテゴリ: Mozilla Core
固定リンク: id=2005050502
SNS: (list)

table[rules="all"]table[rules="none"]の場合にborder-collapse: collapse;となっていた問題。

-table[rules] {
+table[rules]:not([rules="all"]):not([rules="none"]) {
   border-collapse: collapse;
 }

という修正内容なので、Webページの作者は注意。 もっとも、IEを基準に作っているサイトが多いので、あまり実害は無いと思うが。

Bug-org 255941 Highlight colour / color does not contrast with document text or background 初回投稿日時: 2005年05月05日03時53分52秒
カテゴリ: Firefox
固定リンク: id=2005050503
SNS: (list)

修正方法は思いついたのだが、我ながら大がかりな修正方法。

  1. 文字色を黒に固定する
  2. CSSに-moz-auto-color-reverseプロパティを追加する
  3. ハイライト要素のスタイルをcolor: black; background-color: yellow; -moz-auto-color-reverse: auto;とする
  4. nsTextFrameでテキスト描画の際に-moz-auto-color-reverseautoなら、自分を除き、祖先要素の背景色と、自身の背景色が似ていたら文字色と反転させる(アルゴリズムは選択色のものと同じ)

こんな感じ。 Mozilla 1.9aになったら作業するか。

Bug 4286 ファイルの保存ダイアログでショートカットファイルをダブルクリックすると、そのショートカットファイルを上書きしようとする 初回投稿日時: 2005年05月05日05時34分56秒
カテゴリ: Mozilla Core
固定リンク: id=2005050504
SNS: (list)

本家でEreから良い感じのパッチが出たので再開した。

Ereのパッチでは、ダウンロードさせようとしたファイルのデフォルトの拡張子が、.url、.lnk、.pifのいずれかの場合、ファイルの保存ダイアログから返ってきたパス(ショートカットファイルなら、ショートカットの参照先)の拡張子が別の物に変わっていたら、ショートカットファイルを選択した疑いがあるので、そのパスに既にファイルが存在するか検査し、もしあったら(上書き保存なら)保存を禁止するというものである。

2005年5月6日

今、不足している人材 初回投稿日時: 2005年05月06日01時02分36秒
カテゴリ: Firefox Mozilla Core Suite Thunderbird
固定リンク: id=2005050601
SNS: (list)

bug 4421で改めて感じたが、もじら組BBSやMozillaZine-JPフォーラムにあった不具合報告のBugzilla-jpへのエスカレーションが無さすぎる。このバグも迅速にエスカレーションされていれば、4月上旬の間に修正されていた可能性が高いからだ。

Bugzilla-jpスタッフは何かと兼任していたり、もともと忙しい中を時間作って作業してくれている人ばかりなので、現状ではBBSのチェックまでは行き届いていない。

もじら組BBS等からバグ報告をBugzilla-jpに橋渡ししてくれる人、募集。

Bug-org 255941 Highlight colour / color does not contrast with document text or background #2 初回投稿日時: 2005年05月06日02時32分27秒
カテゴリ: Firefox
固定リンク: id=2005050602
SNS: (list)

よくよく考えてみたら、背景を描画しているのはnsTextFrameじゃなく、nsInlineFrameじゃないか、ということで見直し。

背景色の描画と、テキストの描画で2回、色反転するかどうかを判定しなくてはいけなくなる。 これはパフォーマンス的に嫌な感じだ。

それに背景色の描画に割り込むとするなら、nsCSSRendering::PaintBackgroundしか無い訳だが、ここだとありとあらゆる要素の場合にインライン要素かどうかの判定を加えなくてはいけない。 やはりパフォーマンス的にヤな感じだ。

2005年5月10日

ビルドに関するメモ 初回投稿日時: 2005年05月10日02時25分37秒
最終更新日時: 2005年05月10日23時08分04秒
カテゴリ: Firefox Memo
固定リンク: id=2005051000
SNS: (list)

Turbolinux10の開発ワークステーションで成功したビルドは、

  • GTK(Xft無し)
  • GTK2(Xft)
  • xlib
  • cairo-gtk2
  • Qt

失敗したビルド

  • Qt(ビルドの失敗原因不明)
  • GTK2 + Pango(pangoのバージョンが古いため)
  • cairo-gtk2(content/canvas/src/nsCanvasRenderingContext2D.cppでeDOMClassInfo_CanvasGradient_idが未定義というエラー)

cairo-gtk2の場合のコンパイルエラーは--enable-cairoを追加することで解決。 しかし、なぜかビルドはこける。

クリーンナップ後に、--disable-shared--enable-staticを外してビルドしてみたところ、ビルドに成功した。

しかし、とても遅くて使い物にはならない。rocがMozillaZineで速度をぼろっかすに書いていた理由が分かった。だが、その表示結果はとても綺麗なので、Win/Linux/MacでCairoで何もかもレンダリングするようになれば面白いかもしれない。

Qtでもビルドできた。--with-qtdir=/usr/lib/qt3を追加し忘れていたのが原因だった。

これは.mozconfigのチェック時にエラーを出すべきじゃないのかなぁ。

2005年5月11日

2005年5月12日

1.8b2は遅れるのかもしれない 初回投稿日時: 2005年05月12日04時56分39秒
カテゴリ: Mozilla Core
固定リンク: id=2005051200
SNS: (list)

Bug-org 293135の修正が不完全で、フォーム周りがボロボロ。 リリースは遅れさせられるかもしれない。

Pangoのコードをいじっていると…… 初回投稿日時: 2005年05月12日23時49分15秒
最終更新日時: 2005年05月13日19時00分13秒
カテゴリ: Mozilla Core
固定リンク: id=2005051201
SNS: (list)

Fedora Core 3でpangoを使ったビルドを作れるようになったので、現在テスト中。 しかし、pangoではletter-spacing等を使っていると、文字を選択したときに「揺れる」バグが。 コード上(nsFontMetrricsPango::DrawStringSlowly)でも明らかにやり方が間違っている

どうも考えていた原因とは違う模様。 Fedora Core 3に最初からインストールされているFirefoxもpangoを利用しているが、問題が再現しないし、本家にもバグがあがっていないので、pangoの一部のバージョン固有の問題なのだろうか??

2005年5月13日

2005年5月15日

Bug 4437 テキストの選択範囲をIMEで上書きした後undoすると、選択範囲直後の文字を失う 初回投稿日時: 2005年05月15日02時07分15秒
最終更新日時: 2005年05月15日14時07分42秒
カテゴリ: Mozilla Core
固定リンク: id=2005051500
SNS: (list)

負け戦気分。

かなり重大なバグなので調査したものの、Mozillaのエディタのトランザクション処理が複雑すぎて理解できない。デバッグで追いかけてみると、IMETextTxnがうまくマージされていないため、本来、ひとつにまとまっているべき、複数のIMEトランザクションが分裂してしまっている上、Undo/Redoはこれらがひとつにまとまっている前提で動作しているという不一致が原因なのは分かった。しかし、そこまで。

個人的にhelpwanted。

とりあえず原因となるif文は完全に特定できた。

編集開始時点で選択範囲があれば、トランザクションのマージを許可しない、という条件文だったのだが、これが問題。「入力中」という状態の無い、通常のテキスト入力ではうまく機能していたが、ユーザにとってはひとつのトランザクションで無数のトランザクションを生み出すIMEではこれはうまく機能していなかったわけだ。

ということで、blameで、なぜそのif文が追加されたのかを確認した上で、削除したパッチを作ってみた。 現在、review申請中だ。

できあがってから検証してみたら、パッチ適用後の方が「直感的な」トランザクションが構成される。 これで良いのかもしれない。

2005年5月17日

2005年5月20日

Bug 4439 インストーラが古いプロダクトのレジストリを完全に消去できていない 初回投稿日時: 2005年05月20日02時07分37秒
カテゴリ: Firefox Thunderbird
固定リンク: id=2005052000
SNS: (list)

FirefoxとThunderbirdのインストーラで上書きインストールした際に、前のバージョンの情報がレジストリにゴミとして残り、それがFlashのインストーラ等で拾われてしまうというバグ。

Trunkでは修正が完了した。現在、aviary branchへのチェックイン承認待ち。

ちなみに、Suiteの問題はbug 4441で対応中。

2005年5月21日

今日のビルド #2 初回投稿日時: 2005年05月21日03時46分17秒
カテゴリ: Firefox
固定リンク: id=2005052100
SNS: (list)

タブの不調により、タブバーを常に表示する設定にしていると、ウインドウの初期化にすら失敗する。要注意。

2005年5月22日

Bug 4368 [CSS3] text-autospaceの実装 初回投稿日時: 2005年05月22日03時09分01秒
最終更新日時: 2005年05月22日03時10分52秒
カテゴリ: Mozilla Core
固定リンク: id=2005052200
SNS: (list)

実装のために、仕様書を訳してみた

This property is additive with the 'word-spacing' and 'letter-spacing' [CSS2] properties. That is, the amount of spacing contributed by the 'letter-spacing' setting (if any) is added to the spacing created by 'text-autospace'. The same applies to 'word-spacing'.

というくだりが、イマイチよく分からない。 'text-autospace'で追加した空白には'letter-spacing'と'word-spacing'の値も加算される、ということで良いのだろうか。

だとすると、WinIEの実装は、また互換性が無いことになる。 Microsoftはいつも頭痛の種を惜しみなく提供してくれる。 ちゃんとベンダプリフィックスは付けろ、と言いたい。

2005年5月23日

text-autospaceにまつわる大嘘 初回投稿日時: 2005年05月23日02時55分57秒
カテゴリ: CSS IE
固定リンク: id=2005052300
SNS: (list)

text-autospaceの実装は開けてはいけないパンドラの箱だったような気がしなくも無い今日この頃。 まあ、その理由は追々察してもらえるんじゃないかと思います。

昨日書いたように、Windows版InternetExplorerでは中途半端な先行実装がマナーに反して行われている訳ですが、この現状、唯一text-autospaceを取り扱えるUAでも実装されていないideograph-space値について調べてみると不思議な現象が。NOFRAME要素(NOFRAMES要素ではない)の話を思い出しましたよ。

まずはideograph-space値の解説から。原典であるCSS3 Text Moduleでは、

Extends the width of the space character while surrounded by ideographs.

この様に書かれており、また、さらに歴史的に原典となるMSの文書を調べてみると、

Extends the width of the space character when it is adjacent to ideographs.

となっています。

どちらも同じ意味で、表意文字に隣接するスペースの幅を拡張する、と書いています。

私にはこれ以外に原典となる文書が思い当たらないのですが、日本語のWebサイトでtext-autospaceを調べてみると、次のような解説が見つかります。(最初に見つかった20件から調査)

日本語・中国語・韓国語などの表意文字と、アルファベットなどの非表意文字との境い目の間隔を広めに空けます。

この解説を書いていたサイトは

日本語、中国語などの表意文字と、それ以外の文字すべてとの間に空白を追加します。

この解説を書いていたのは

他に書いてる意味が分からなかったのが、

そして、仕様書通りの解説が書いてあったのは、

わずか、この一サイトだけ。

どこかのサイトの情報を鵜呑みにして、したり顔で情報を再公開しているのが浮き彫りな感じがします。

Bug-org 289652 [regression] -moz-selection fails to work 初回投稿日時: 2005年05月23日03時13分10秒
カテゴリ: Mozilla Core
固定リンク: id=2005052301
SNS: (list)

例のMacで::-moz-selectionを無効にしたことに対する、反対意見のバグ。

私もMacだけ特別扱いするのは変だと思うので、Borisの誘いにのって修正。

今回の修正で、Macでもテキストの色を変更できるようにした(今までは、Macでは背景色しか変更できなかった)。

Windows版、インストーラのNightlyビルドユーザへの警告 初回投稿日時: 2005年05月23日03時24分58秒
カテゴリ: Firefox
固定リンク: id=2005052302
SNS: (list)

各所で既報の通り、アプリケーション名がMozilla Firefoxから、Deer Park Alpha 1に変更されている。これに伴い、インストーラのデフォルトのインストール先が、c:\Program Files\Mozilla Firefoxから、c:\Program Files\Deer Park Alpha 1に変更されている。

今後の面倒を考えると、新しいインストール先にインストールした人も多いのではないかと思うが、その場合、アンインストールには注意が必要。

まず、プログラムの追加と削除からDeer Park Alpha1をアンインストールすると、このフォルダに保存した情報のみがアンインストールされる。これだけでは、Mozilla Firefox時代のゴミが残ることになるので、以下のようにして再度、アンインストールしなければならない。

まず、一度アンインストールを実行したことにより、プログラムの追加と削除にはMozilla Firefoxのアンインストールが無くなっているので、C:\Program Files\Mozilla Firefox\uninstall\uninstall.exeを直接実行してMozilla Firefox時代の内容を全てアンインストールする。

この手順を踏むまでに、uninstallフォルダにあるインストールログを削除してしまうと、レジストリにゴミが残る原因になるので、くれぐれもMozilla Firefoxのフォルダを手動で削除したりしないように注意して欲しい。

2005年5月24日

Bug 4440 インストールする環境によっては文字化けしたフォルダや"!uninstall"ができる 初回投稿日時: 2005年05月24日03時29分22秒
カテゴリ: Firefox Thunderbird
固定リンク: id=2005052400
SNS: (list)

FirefoxやThunderbirdのインストーラで、環境等々、様々な要因に基づいて、文字化けしたフォルダが作られたり、!uninstallというフォルダが作られていたバグ。

ようやく原因が分かった。Suiteのxpinstallから、toolkitのinstallerにソースコードを移植する際に、コピペで不要なコードまで持ってきていたのが原因。

未初期化のバッファを文字列とみなして、これと"uninstall"という文字列を連結させたフォルダを、(c:\Program Files\Mozilla Firefoxではなく)カレントフォルダに作成していたのが原因。ウインドウプロシージャから呼び出された関数がこのような処理を行っていたので、OSや環境の影響を多分に受ける形となっていた。

このフォルダは一切必要無いので、見つけたら手動で削除しておいて欲しい。 アンインストーラから、このフォルダの削除には失敗するようなので、手動で削除しておかないと、アンインストール時にこのフォルダが残ってしまう可能性が高い。

2005年5月27日

word-spacingに仕様変更 初回投稿日時: 2005年05月27日03時43分02秒
最終更新日時: 2005年05月27日03時44分49秒
カテゴリ: CSS
固定リンク: id=2005052700
SNS: (list)

word-spacingはCSS 2.1では、

This value indicates inter-word space in addition to the default space between words. Values may be negative, but there may be implementation-specific limits.

とだけ記述されていたのだが、CSS 3のテキストモジュールの草案では、

This value indicates inter-word space in addition to the default space between words. If there are no word-separating characters, or if the word-separating character have a zero advance width (such as the zero width space U+200B) the user agent should not create an additional character advance width between words. If there are several word-separating characters (for example, multiple non collapsed white space characters), the added <length> can only be applied once. Values may be negative, but there may be implementation-specific limits.

と、変更されている。Mozilla 1.9a サイクル中に修正したい。

2005年5月30日

とりあえずひとこと。 初回投稿日時: 2005年05月30日06時56分43秒
カテゴリ: 雑談
固定リンク: id=2005053000
SNS: (list)

Bugzilla-jpはBBSではありません。 あれは開発ツールです。

Bug 1959 用紙サイズが保存されない 初回投稿日時: 2005年05月30日07時04分59秒
最終更新日時: 2005年05月30日07時07分08秒
カテゴリ: Firefox Mozilla Core Suite Thunderbird
固定リンク: id=2005053001
SNS: (list)

問題山積。

  • Windowsでは日本語名のプリンタだと常に紙のサイズがLetterになる
  • Linux以外では紙のサイズが保存されない

このバグで扱っているのはこのふたつ。

Windowsの問題はA系APIにUTF-8にエンコードした文字列を渡していたのが原因。 A系APIに渡すべき文字列はネイティブコード。

二つめの問題は、印刷時に設定を全く保存していなかったのが原因。 ただし、例外があって、javascript:window.print;の場合は、印刷直後に設定を保存している。

Bug 3020 プリンタ名に漢字を使うと about:config で文字化けをする。 初回投稿日時: 2005年05月30日07時14分10秒
カテゴリ: Firefox Mozilla Core Suite
固定リンク: id=2005053002
SNS: (list)

こちらも問題が二つ。

  • prefs.jsにプリンタ名をUTF-8で保存していない
  • about:configがキー名の表示にUTF-8で受け取ったものをISO-8859-1として表示している

とりあえず、prefs.jsへの保存問題は簡単に修正できたので、現在チェックイン承認待ち。

問題はもうひとつの方。xpcomにメソッドを追加するしかないのか。

2005年5月31日

そろそろ 初回投稿日時: 2005年05月31日00時25分10秒
カテゴリ: Firefox
固定リンク: id=2005053100
SNS: (list)

1.8b2(Deer Park Alpha1)をリリースしてもらわないと、チェックインが進まないなぁ。