2013年9月30日月曜日

「ご使用のOS環境では、通常の動画プレーヤーを表示できないため~」

Waterfoxのフォーラムを見たら、先日公開されていた"24 Preview 1"に続いて試作版がアップされていました。試しにインストールした際、ちょっとおかしなことがありました。

ニコニコの視聴ページを開いてみると、Qwatchではなく懐かしい原宿の画面になってしまいました。よく見ると、ページの下に「ご使用のOS環境では、通常の動画プレーヤーを表示できないため、一部機能が制限された動画プレーヤーをご利用いただいています。」と表示されていました。


ググるとこういうエラーが起きることはあるらしいのですが、自分は初めて見ました。どういうわけかOS(Windows 8)を正しく認識してくれていないようです。
トラブルシューティングを開いたところ:


一方、Firefox(25 Beta)で同じくトラブルシューティングを開いたところ:


Waterfoxの方のユーザエージェント文字列では、OSのバージョンが「Windows NT」としか表示されていません。調べたら、この値はabout:configのgeneral.useragent.overrideで変更できることがわかりました。
「Windows NT」の部分を「Windows NT 6.2」と修正しました。


これでふつうにQwatchが表示されるようになりました。なぜ「6.2」が入らなかったのかはわかりませんが、勉強になりました。

なお、このWaterfoxはFirefoxのプロファイルを読み込まないという問題もありました。C:\Users\<ユーザー名>\AppData\Roaming以下のパスの設定が、現在のFirefoxと違っているためでした。とりあえずSyncで同期させて使っています。軽くて快適だったので安定版の公開が待たれます。

2013年9月20日金曜日

Chrome 29:半角カナの表示とフォント変化

Chromeでの半角カナの表示において、記号類だけがなぜかゴシックになりません。Arial Unicode MSが使われているようです。


Officeが入っていない環境であれば下の図のような表示になるのではないでしょうか。
半角カタカナと混ぜて並べてみると、Arial Unicode MSが適用されている方はなんかバランスが悪いです。


意味の分からない仕様です。何か他の目的のアルゴリズムの副作用なんでしょうか。

さて下図は、ひらがなの「あ」・半角半濁点・罫線のU+2501を並べたコメントです。上の段はU+2501にU+0323を合成させて「Lucida化」の形にしています。
上の段と下の段はコメントの幅が異なっています。


上下で幅が違う文字は真ん中のU+FF9Fです。このケースにおいて、Arial Unicode MSが無ければChromeの表示はIEと同様になります。


つまり上の段のU+FF9Fは、「Lucida化」によりArial Unicode MSからゴシックへ変化しているようです。
この挙動には後ろのU+2501とU+0323だけでなく、先頭の「あ」(というかゴシック)も必要です。「あ」が無いと「ただのLucida化」になります。


LucidaにU+FF9Fは無いので豆腐です。
なお冒頭の半角記号がすべてこのやり方でゴシックになるわけではありません。半角読点だと「ただのLucida化」でした。


濁点と読点を何で区別しているのかは謎です。

2013年9月4日水曜日

顔文字の豆腐化を見て

どこかからコピペしたようなコメントが豆腐になっているのを見かけることがあります。先日下図のような顔文字を見て、もしやとChromeで表示させてみると豆腐になりませんでした。ちょっと気になって調べてみました。


この顔文字を構成する文字は下図の通りでした。

これらの文字のWindowsコードページにおける定義の有無と、Arial・Lucida Sans Unicode・MS Pゴシックの各CMapにおける定義の有無を以下に示します。CMapはWindows 7のもので見ています。

Unicode ブロック名 Windowsコードページ Arial LSU MS Pゴ
0020 基本ラテン文字 (ASCII互換) CJK各コードページおよび1250~1258 3 3 16076
0028 基本ラテン文字 (ASCII互換) CJK各コードページおよび1250~1258 11 11 16084
0029 基本ラテン文字 (ASCII互換) CJK各コードページおよび1250~1258 12 12 16085
03C9 ギリシア文字及びコプト文字 CJK各コードページおよび1253 550 752 16616
1555 統合カナダ先住民音節 - - - -
1557 統合カナダ先住民音節 - - - -
207E 上付き・下付き - - 1041 16951
208D 上付き・下付き - - 1056 16966
25D3 幾何学模様 - - 1691 17799
25D4 幾何学模様 - - 1692 17800

表の上4文字はコードページ1250~1258のいずれかに定義があることから、IEではArialで表示されていると思います。ChromeでもArialにあるものはArialで表示されるようなのでIEと同じでしょう。
「統合カナダ先住民音節」の2文字(手の部分)に対応するフォントは、Windows 7に2つしかありませんでした(8でも同様)。


Gadugiは丸の部分の幅が均一な字形のようなので、Euphemiaの方でしょうか。しかしこんなのよく見つけますね。

表の下4文字はいずれもArialにありませんが、LucidaにはあるのでChromeではこれが表示されているのでしょう。問題はIEの表示です。Lucidaやゴシック以外にも対応しているフォントは多数あるのに、3文字がArialの豆腐になっています。
なぜ右端のU+207Eは豆腐にならないのでしょうか。上の推測からすると、これだけがArialではない文字と隣接しています。試しに左の部分からU+0020(半角スペース)を削除してU+208DをU+1555に隣接させると、豆腐にならなくなりました。


ちなみにこうして表示されたU+208Dは、Windows 7と8ではフォントが異なるようです。


Windows 7ではゴシックに隣接した場合と同じ字形に見えますが、8では違っています。Segoeなのかもしれません。

さて、この顔文字を修正してみます。Arialに定義が無いゼロ幅文字を、豆腐化している文字の前へ挟んで隣接させました。
U+FEFFを使った場合:


Windows 7では上手くいきましたが8ではなぜかU+FEFFが豆腐になってしまいました。U+FEFFの使い方はもっと研究が必要なようです。
U+2029を使った場合:


これは大丈夫でした。上でも触れたように、8では豆腐でなくなった文字のフォントが7と違うようですが。
なおU+2029はワードパッド上でコピペすると改行に変換されてしまうという問題があったので、もう一つ試しました。
U+0085を使った場合:


表示はU+2029の時と変わりませんでした。U+0085・2029は制御文字なので、そもそもフォントは関係ないかもしれません。少なくともArialでないことは確かです。Arial以外の文字と隣接することにより、豆腐化せずに他のフォントへフォールバックするという仕組みなんでしょうか。
一方Chromeでは上のどのパターンも表示に影響はありませんでした。


ただしこの顔文字、XPでは豆腐化を避けられません。「統合カナダ先住民音節」に対応するフォントが入っていないからです。


VistaはEuphemiaが入っているようなので7と同じ表示かもしれません。
参考までにAndroidでも見てみました。


XP上のIEで豆腐化した部分が空白になった形です。
ググったら、この顔文字がFacebookなどで使われているケースをいくつか見つけました。こうして見ると、元々あまりおすすめの顔文字とは言えなそうですが。