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

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

もずはっく日記(2015年6月)

2015年6月6日

Bug-org 1130935 [IMM] Support vertical writing mode
初回投稿日時: 2015年06月06日13時04分55秒
最終更新日時: 2015年06月06日13時31分39秒
カテゴリ: Mozilla Core Mozilla41 Windows バグ修正
SNS: (list)

writing-mode: vertical-lr;や、writing-mode: vertical-rl;でエディタを縦書きにした際にIMMのIMEも縦書きに対応させようというバグです。

IMMでは縦書きはAPIレベルではサポートされていないのですが、composition fontに@で始まる縦書き用のフォント名を指定した場合に、IMEが縦書きをサポートしているなら、縦書きのUIや操作形態に切り替えるという暗黙のルールがあります。ですので、最初は単純にcomposition fontを取得し、その頭に@を付けたり外したりして再設定することでIMMモードで動いているIMEのUIも切り替える予定でした。しかし、色々とIMEごとに問題があり、様々なprefを追加することで、最悪の場合はユーザ自身で自分の利用しているIME用に設定を変更する必要があります。

intl.imm.composition_font

通常、Geckoはcomposition fontを取得し、それを横書き用、@を付けて縦書き用とします。しかし、特定のフォントを指定しておかないとUIが崩れる環境では、この設定にフォント名を設定しておけば、常にそのフォントを利用するようになります。

縦書き時には自動的に@を追加して利用されますので、@で始まらない、横書き用のフォントを指定しておいてください。また、そのフォントが縦書きに対応していることも確認しておいてください。

intl.imm.composition_font.japanist_2003

通常、デフォルトのcomposition fontはSystemです。しかし、Japanist 2003に対して@Systemを設定すると、候補ウインドウのレイアウトが壊れるバグがあります。これを回避するために、Japanist 2003専用のcomposition fontを指定するprefを用意しています。

このprefのデフォルト値はMS PGothicです。

intl.imm.vertical_writing.always_assume_not_supported

Geckoは、現在アクティブなIMEが縦書きに対応しているかどうか、IMEのプロパティを取得して検査します。しかし、Google Chromeのように、未確定文字列の表示にだけ縦書き対応しているものの、候補ウインドウ位置の配置が縦書きに対応していないようなケースも考えられます。

もし、あなたの利用しているIMEが縦書きに対応していない場合、このprefをtrueに変更しておけば、Geckoは常に、そのIMEが縦書きに対応していないものと仮定して、未確定文字列と候補ウインドウが重ならないように、候補ウインドウ位置を調整します。

intl.imm.japanese.assume_active_tip_name_as

Windowsは、アクティブなIMEがTSFに対応しているTIPの場合にTSFに対応していないアプリ上では、CUASという仕組みを用いて、アプリから見ると複数のTIPが一つの同じIMEに見えるようなトリックを使っています。

例えば、Windows 8以降では、Google日本語入力はTIPとしてインストールされていますので、IMMモードで動作しているGeckoからは、アクティブなIMEの名前やプロパティが取得できないため、縦書き非対応のIMEとして処理することができません。

もし、Windows 8以降でGoogle日本語入力のみを利用している場合、この設定値をGoogle 日本語入力 IMM32 モジュールとしておくと、TIPがアクティブな間は、常にそのIMEをGoogle日本語入力だと仮定して動作するようになります(ちなみに、Firefox 40以降、TSFモードが標準で有効になるため、Google日本語入力のユーザは、自分でTSFモードを無効化しない限りはこの設定を行う必要はありません)。

現在、縦書きのサポートがいつからリリース版で標準で有効になるかは不明ですが、縦書きがサポートされた場合、TSFモードを無効にしない方が無難です。また、縦書きのエディタを使うことがある場合は、Google日本語入力以外の縦書きに対応したTIP(MS-IMEやATOK等)を利用することをお勧めします。

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

bug-org 1130935を含むエントリ