2012年8月19日日曜日

Chrome 21:空白文字の問題

先日の話の続きです。
IE・FirefoxとChromeとの間でコメント表示の互換を図るとしたら、空白文字はどうしたらいいか考えてみます。

まず間違いないのは半角スペース(U+0020)かNBSP(U+00A0)です。
これらは元からArialだと思われ、CJKフォント変化の影響を受けません。Chromeでも同じくArialのようです。下図はU+0020をひらがなとU+2587(SimSun化文字)とで、それぞれはさんだところを比較しています。
U+2587がChromeでも全角幅なのは既に紹介した通りです。


下の図は2つの画像を重ね合わせたところです。
フォント変化は関係ないので両者のコメント幅に差は出ません。幅が短いため、空白部分をたくさん作りたい場合には文字数的に苦しいところです。

次に全角スペースU+3000です。Chromeではゴシックのようです。
IE・Firefoxでもフォント変化が起きなければゴシックですが、下図ではU+2587に隣接するとSimSunの全角幅となりChromeとはコメント幅に差が出ています。


U+2587のようなフォント変化文字と並べて使うなら、U+3000をゴシック状態に保つための仕掛けが必要になります。下図の下段のコメントはその例です。


先頭にU+30FBを置いています(ゴシックを保持する効果)。そしてU+2587と隣接する部分にはArialの文字をはさんでいます(先頭のU+30FBの影響を優先させ、U+3000のSimSun化を回避する効果)。Arialと言っても半角英数字ではコメントの内容が変わってしまうため、ゼロ幅文字を利用しています。
空白部分をたくさん作るのであれば、今のところこれが現実的な方法なのかなと思います。

U+2001も見てみます。ChromeではArialのようです。
IE・Firefoxでは単独またはArialに隣接した場合Arial、ゴシックに隣接した場合はゴシックとなります。


SimSun化・Gulim化・MingLiU化の場合、これらのフォントにU+2001は無いため代替表示となります。フォントリンクによりMincosoft Sans Serifが使われると考えられます。Arialとは文字幅が違うので、U+2587ではさんだケースではChromeと差が出ています。

「あ」ではさんだゴシックのケースは、Arialと同様Chromeとは差が無いように見えます。
これはArialとゴシックでU+2001の文字幅の差が小さいからだと思われます。全く同じではありません。下図はU+2001を10個にして比較してみたところです。


ゴシックだとやはり差が出てしまうのがわかります。
ではArialで使えば大丈夫かと言うと、一つ問題があります。Windows XPではArialにU+2001が無いため豆腐になります。


ちなみにXP上のChromeではArial Unicode MSが使われるらしく、豆腐にはなりません。ただしXPではpepflashplayer有効だと動画再生以外の操作ができず、その状態で視聴することはないでしょう。
というわけで、XPを考慮する必要さえ無くなればArialで使えそうです。

まあ実際には、こんなことを考えたらフォント変化を前提とする既存のコメントは全部作り直さなければならなくなります。Chromeはニコニコの推奨環境ではありませんので、この件は無視するという考え方もできます。しかし現にChromeで視聴することはできるし、そのブラウザシェアは無視するには大きすぎます。
ただでさえネット視聴におけるAndroid・iOSのシェアは急速に伸びています。その結果、Windowsのシェアは相対的に下がっているだろうと考えられます。それがニコニコの視聴にどの程度影響しているのかはわかりませんが、この上Windowsの中でまでコメント表示に差異が発生するのはできれば避けたいなと思います。

ていうか、この話Chromeの「フォントがおかしい」 と書いてしまったんですけど、フォント変化はそもそも起きる方がおかしいのです。
例えばU+2588(ブロック文字)やU+2665(ハートマーク)は、Arialにもゴシックにもある文字です。にもかかわらず、それ自体や隣接した日本語がわざわざ中国語フォントや韓国語フォントに変わる意味はありません。フォント変化が起きなくなった今のChromeは、むしろ「安定した」と言えるのかもしれません。
ひょっとしたら、いずれニコニコのコメントはこういう挙動の方がふつうになるのでは?そんなことも思いました。

2012年8月18日土曜日

Windows 7:ケータイ絵文字などの追加

Windows 8のevaluation for developers(90日評価版)使ってみてます。快適です。
RPはちょっと古いデスクトップとノートにそれぞれ入れて試してました。ノートの方(某メーカー3年前のモデル)は元々7の動作が時々苦しげなスペックで、8RPでだいぶマシになったもののまだモッサリ感が気になってました。評価版はよく見る8の紹介映像そのままにぬるぬる動き、思わず「おお!」と声が出ました。もう7には戻したくないです。

さて本題は7の話なのですが、その最新版(というか製品版と同じはず)の8とも比較しながら見たいと思います。昨日こちらのドキュメントに気づきました:

An update for the Segoe UI symbol font in Windows 7 and in Windows Server 2008 R2 is available - Microsoft サポート

残念な機械翻訳版なのはともかく、要するに7のSegoe UI Symbolに8のEmoji Symbols追加したよという話らしい。見てみたら、いつの間にか7のSegoe UI Symbolが5.00から5.01にバージョンアップしてました。先の月例更新の時でしょうか?とりあえずCMapのデータを比較してみました。

Segoe UI Symbol 5.00(Win7) 5.01(Win7) 5.90(Win8)
BMP領域 2,693 2,842 3,823
拡張領域 171 908 1,410
2,864 3,750 5,233

8ほどの収録文字数ではないですが、5.01では拡張領域を中心に大幅に追加されています。差分の中身を見ると確かにケータイ絵文字や特殊記号が多いようでした。「古イタリア文字」や「ゴート文字」なんていうのもありました。絵文字は8の全部というわけではなく、追加されてないものも多数ありました。

ただし今のところコメントでは表示できないようです。これはChrome(pepflashplayer)でも同じでした。


フォント変化させてもダメでした。まぁ全部試したわけじゃないんですけど。
ZeroWatchのコメントパネルには表示されてました。


8ではこれまで見てきた通り、ちゃんと表示されます。


もっとも、これは7のコメントでSegoe UI Symbolが使われないということではありません。文字によっては表示されるものもあります。下図は5.00の時からあったグリフで、他のフォントにはありません。


 ケータイ絵文字も同じように対応したらおもしろいんですが。

2012年8月12日日曜日

Chrome 21:フォントがおかしい件(ブロック文字について)

さらに前回の続きです。今回もWindows 7での話です。 
ちなみにWindows XPではpepflashplayer有効のままだと原宿で動画の再生のみ可能(コメントその他の操作は不可)、ZeroWatchでは再生もできませんでした。他のブラウザに乗り換えるか、pepflashplayerを無効にするしかないでしょう。このため表示の差異の問題は、結果的には影響無いのではないかと思いました。
Windows 8 RPは見た限り7と同じでした。

さて、Chrome 21でブロック文字(U+2588)が縮む例を見ました。しかし特殊文字がなんでも縮むというわけでもないようです。IEやFirefoxとChromeとの間で表示の互換を図ることは、できなくはないかもしれません。
下図はおなじみな感じのコメントです。ブロック文字U+2581~U+2588を使用しています。


Chromeではフォントが変わっちゃってます。でもよく見ると縮んでいるのは一部です。
あらためて両者を比較してみます。


実はArialにはU+2584とU+2588しかありません。この二つだけがArialの縦長の字形で表示され、それ以外は代替表示だと考えられます。先頭のU+2581も縮んでいますが、またArial Unicode MSではないだろうか?ということで、前回のようにArial Unicode MSを削除した後が下図の表示です。


U+2581だけが細い字形に変わりました。MS Pゴシックかなと思いました。
それぞれのU+2581のグリフをBabelMapを使って出力してみました。まぁMS Pゴシックというのはあくまで憶測ですけど。


それ以外の5文字は何でしょうか。
継ぎ目が無いのでこれらも一見縮んでいるように見えますが、SimSunと同じく全角幅です。すき間が無い字形なのでMingLiU(かPMingLiU)かもしれません。下図はIEでのSimSun・PMingLiUの表示と、Chromeでの表示とを比較しているところです。


Segoe UI Symbolにも、サイズは小さいもののMingLiUとそっくりな字形がありました。もしかしたら他のフォントにもあるかもしれません。特定はできません。
いずれにしろ、この5文字については全角幅のままで使えるということです。例えばU+2588をU+2587で代用して、コメント幅が縮むのを回避することならできるかもしれません。

ただしChrome 21ではフォント変化が起こりません。他の文字との組み合わせはさらに検討する必要があります。下図は二つのU+2587の間に、それぞれ全角スペース(U+3000)・ひらがな・漢字を挟んだところを比較しています。


この場合、両者で同じ幅にできるのは全角の漢字を挟んだ一番下のパターンだけです。 なかなか簡単にはいかないですねw

2012年8月11日土曜日

Chrome 21:フォントがおかしい件(つづき)

先日の日記にも追記しましたが、その後Chromeが21.0.1180.75(「安定版」)にバージョンアップしたのに伴い状況が変わりました。以下、Windows 7で見た話です。

問題があると言われたPPAPI版Flash Player(pepflashplayer)のバージョンが11.3.31.222から11.3.31.225に変わっており、漢字がSimSunらしき字形で表示される現象は直っていました。
一方、フォント変化が起きなくなる現象については変わりませんでした。


いや、それって何か困るだろうか・・・困りません。普通は。

むしろフォント変化が起きないということは、画面上のコメントがいっせいにSimSunになったりするあの現象(いわゆる連れ回し)も起きなくなるのではないかと思います。いいことですね。
ちなみに同じGoogleのAndroid OSでも、フォント変化なんて起きません。PCと違ってそもそも搭載しているフォントが限られてますけど。


ただ、PPAPIが「特定のプラットフォームに依存しない」というのはこういうことなのかなと思いました。
フォント変化という現象が具体的にどういうプロセスで起きているのかはわかりませんが、Windowsコードページに由来するWindows特有の挙動らしいことはわかっています。

さて一部のコメントでは困ることもあります。
下図はフォント変化を利用したコメントの例です。ピンクのブロック記号(U+2588)と黒の文字列とを重ね合わせた、二つのパターンを挙げています。


いずれもフォントを意図的にSimSunへ変化させることで、各文字を全角幅にしています。
これが最新のChromeでは下図のように表示されます。


こちらではブロック記号がArialと思われる縦長の字形となっています。ひらがなと空白部分の全角スペース(U+3000)も、MS Pゴシックで全角幅より狭くなっています。
コメント全体の横幅が縮んだことで見た目がまるで変わってしまいました。特にパターン2では、横幅に依拠した二重リサイズという現象が起きなくなり完全に崩れています。

Chromeはニコニコの推奨環境ではありません。しかしそのシェアを考えると、これはあまり無視できない状況かもしれません。下図はStatCounterによる日本国内の7月のブラウザシェアの統計です。


もうちょっと少ないという数字もありますが:

<参考>インフォメーション - 【OS・ブラウザー国内シェア調査】 2012年7月度発表:(サムライファクトリー )

まぁ無視できないと言っても現状では対処のしようがないんですけど。pepflashplayer.dllを無効にすれば、上の件は一応IE・Firefoxと同じ表示になります。

ついでに細かい話です。
先の日記でArial Unicode MSっぽい字形が表示されていると書きました。あらためて調べたところ、やはりそうだったようです。下図はトランプのマークを表示したところです。


IE・Firefoxでは白抜きのダイヤ(U+2662)以外はGulimです。これはフォント変化によるものです。白抜きのダイヤのみGulimには無く、フォントリンクでMS UI Gothicが表示されていると思われます。
一方ChromeはデフォルトのArialのようですが、白抜きのマークはArialに無いので代替表示のはずです。Arial Unicode MSを削除したところ下図のように変わりました。


Arial Unicode MSはOfficeに添付されるフォントなので、Officeをインストールしていない場合はこちらの表示になるかもしれません。白抜きのスペードとクラブはMSゴシックの字形に変わったように見えます。ダイヤはあまり形に差がないのでなんとも言えないですが。

U+2661が三みたいになったのはMicrosoft Sans Serifでしょう。 このフォントにはトランプマークのうちU+2661だけあり、それが代替で表示されたのだろうと思います。ハートなのに三みたいなこの字形はどうもバグのようです。おそらく数学の合同記号(U+2261)と間違えたのではないか、と個人的には考えてます。

2012年8月7日火曜日

Windows 8 RP:U+20E3(携帯キー囲み文字)

8RPと7でフォントの差分を見ていて気がついたのですが、ケータイのテンキーが表示できるようになってました。7では表示できません。


全角の数字と合成用文字U+20E3というのを組み合わせています。

<参考> Unicode6.0の携帯電話の絵文字の一覧 - Wikipedia

下図は数字が半角の場合と全角の場合を比較しているところです。


U+20E3のフォントが違うようです。7の豆腐の状態からすると、半角に隣接した時はMicrosoft Sans Serif・全角ではMS Pゴシックなのかなと思いました。

8DPの時に、旧ブログで携帯絵文字を全部表示させてみるという実験をやっていました。この時は7と同様にU+20E3は表示できませんでした。


調べてみたところ、8DPのMicrosoft Sans Serif(v5.03)・MS Pゴシック(v5.04)にU+20E3は入っていませんでした。8RPのMicrosoft Sans Serif(v5.08)・MS Pゴシック(v5.10)では入っていました。
なお合成で表示できる囲み文字というのは、8RPでもU+20E3だけのようでした。Segoe UI Symbolだと他のも入ってるんですが。

<参考> 囲み文字/合成用文字 - Wikipedia

全角文字であれば数字に限らず合成することができます。7でも使えるようになればおもしろいのに。


ところで別の話ですけど、ニコニコと言えばZeroWatchが一般会員にも公開されました。
やはり使い勝手や重さに対する不満の声を目にします。個人的にも納得はできませんが、移行するなら早くしていただいた方がいい気がします。両バージョンの併存はコメント的にはありがたくありません。前に書いたコメント表示領域の差異の問題です。移行が進むよう更に改善されることを期待してます。
もっとも、ZeroWatchでは中画面モード・小画面モードというのも新たにできてしまいました。しかしフルスクリーンやブラウザのズームを使用した場合にも、差異は発生します。それを言ったらキリがないのかなと思います。

2012年8月6日月曜日

Chrome 21:フォントがおかしい件

最近ニコニコを見るのはもっぱらWaterfoxかFirefoxで、Chromeを使うことはありませんでした。
ところが先週から「Chromeをアップデートしたらニコニコ見れなくなった」という話を頻繁に目にして、気になって見てみたらちょっとおもしろいことが起きてました。

今回の件で初めて知ったのですが、Chromeでplugins→詳細を開くとFlash Playerが3つありました。
上から優先的に使われる仕組みになっていたらしい。 pepflashplayer・gcswf32というのが組み込みのプラグイン、NPSWF32がシステムのプラグインだそうです。


組み込みのプラグインが優先的に使われるのですが、これまでgcswf32の方が上だったのが21でpepflashplayerが上に変わったらしい。これに問題があったということのようです。

実際にいくつかのWin7・XPのPCで試したところ、マシンによって動画は再生できたりできなかったりでした。そして再生できた場合に共通してたのは、コメントのフォントがおかしくなっていたことでした。
pepflashplayerを無効にすると動画はふつうに再生できるようになり、フォントがおかしいのも直りました。

追記:
その後もアップデートが続いていますが、Googleとしてはあくまでpepflashplayerを使いなさいということだと思います。これを無効にするのはセキュリティ上問題があるかもしれません。
有効の状態でなおも再生等できないのであれば他のブラウザへ乗り換えることをお勧めします。

フォントがおかしかったのは二点で、まず漢字および全角英字(目にしたのは「w」ばかりでしたがw) が明朝体になっていたことです。字形からするにSimSunに見えました。


8/9追記:
今日21.0.1180.75にアップデートしたところ、上の件は直ってました。pepflashplayerのバージョンは11.3.31.222から11.3.31.225に変わっていました。ただし下記の件はそのままでした。

もう一つはCJKフォント変化、すなわちSimSun化・Gulim化・MingLiU化がいずれも無効になっていたことです。


ちなみに不具合発生中のU+2661が見慣れない字形です。ちょっと調べたところArial Unicode MSなのかなと思いました。

8RP(もちろんデスクトップUIの方)でも見てみましたが同様でした。
さらに、以前書いたSegoe UI Symbolの字形が現れる現象も無効になってました。下図のケースでは不具合発生中のU+263AがいずれもArialの字形になっています。


あくまで不具合ですから正されなきゃいかんのですけど、フォント変化の挙動を探るのには貴重な資料だなと思ってしまいましたwヒマがあったらもう少しいろいろ見てみたいです。

2012年8月1日水曜日

Excel:シートコピー時の連続しない名前付きセル範囲

ちょっとおかしなことがあったので。Book1に3つの名前付きセル範囲があるとします。


色をつけた部分をブックレベルで定義しています。「範囲3」が連続しないセルなのがポイントです。


ここで新規のブックBook2へBook1のSheet1をまるごとコピーします。


シート名はSheet1 (2)となります。名前付きセル範囲もSheet1 (2)を参照先としてそのままコピーされます。


ここでBook2を初期の状態に戻します。
次にBook1のSheet2(何もありません)を、同じようにBook2へまるごとコピーしてみます。Book2での名前の定義は下図のようになりました。


なぜか範囲3だけがコピーされました。
Book1のSheet1はコピーしてないので、Book1への外部参照になっています。しかし、なぜ同じブックレベルの範囲1・範囲2はコピーされないんでしょうか。

また初期の状態からSheet1をコピーしてみます。先に試した通り範囲1・範囲2・範囲3がコピーされます。
続けてSheet2をコピーしてみたところ、下図のようになりました。


もう一つの範囲3(外部参照)が、今度はシートレベルの名前付き範囲としてコピーされました。ちなみにExcel 2003でも同じことが起こりました。 連続しないセル範囲特有の挙動なのか?