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

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

もずはっく日記(2006年8月)

2006年8月17日

Re: firefoxのurlライン・ブレーク問題
初回投稿日時: 2006年08月17日04時08分25秒
最終更新日時: 2006年08月17日04時10分44秒
カテゴリ: Mozilla Core
SNS: (list)

geckoはそもそもライン・ブレーク問題を解決するような実装をしていないのであって、UAX#14はさらに間違った方向に行っているのではないか?そもそも他のブラウザができてfirefoxが出来ないのは何故なのだろう?

少し誤解があるようなので現在の改行仕様を紹介しておく。

現在のGeckoは二種類の改行仕様を利用している。ひとつはJIS X 4051(実際にはタイ語と、一部記号への対応のために拡張されている)。名前から分かるように日本語のための改行仕様である。これはテキストのフラグメントにCJK文字が含まれている場合にのみ利用されている。この仕様に従った場合にのみURL文字列内でも改行は発生するため、該当バグのテストケースにあるような不思議な現象を見ることができる。

もうひとつの改行仕様はそれ以外の言語用のもので、それ以外の言語は単純に空白をワードセパレータとして利用しているという前提のもと、半角スペースのある場所でのみ改行するというものである。

一般的なURLは後者のケースに当てはまってしまうため、空白以外の場所では折り返されない。

で、先月に作業していたのは、JIS X 4051を更に拡張し、これをあらゆる場合に適用したものだったが、ご存知の通り、一部の特殊なコンテキスト(例えば日付の表記やドイツ語用の引用符等)で破綻してしまった。

結局の所、このバグの修正にはまず自然言語用の一般的な規則が必要である。これを私たちは現在、UAX#14に頼ろうとしている訳だ。だが、UAX#14の仕様ではURLやファイルパス、プログラムのコード、日付や時間表記といった特殊なコンテキストには対応できない可能性があるので、UAX#14をさらに拡張し、そのへんの調整を時間をかけて行っていく必要があると考えている。(私が先の記事でブラウザ間の完全互換が難しいといったのは、この拡張しなくてはいけない部分にある。)

私がrocから取り付けている妥協案は、ASCII(厳密にはU+100未満の文字)のみのフラグメントにのみUAX#14を先行して適用してしまうというものである。これなら影響を受ける範囲をわずか数十文字に押さえ込むことができるため、テスト期間を大幅に短縮できるという発想だ。

関連するかもしれないエントリ

関連するかもしれないエントリを発見できませんでしたが、無いとは限りません。

このエントリへのリンク元