2013年4月23日火曜日

Chrome 26:Windows XPでのフォント変化

Chrome特有のフォント変化の話の続きです。XPで見ていて気づいたことがあったので。

pepflashplayerのコメント表示において、Windowsのバージョン間での差異はフォントのバージョンの違いによるグリフの有無を除き基本的にないだろうという認識でした。下図のコメントは7もXPも表示に違いはありません。


ところが下図のケースでは違いが発生しています。フォントが変わるのは前に書いた通りですが、「A」とU+0304の組み合わせだけXPではフォントが変わりません。


これがなんなのかは結局わかりませんが、試しに各文字にU+0304をつけてみたところ明確な違いが現れました。


XPでは罫線記号に関係なくフォントが変わり、かつ「B」「C」「D」との組み合わせでU+0304が豆腐になっています。豆腐については、これがTimes New Romanだとすれば説明はつきます。7のTimes New RomanにU+0304はありますが、XPには無いからです。
ではなぜ「A」「E」との組み合わせでは豆腐にならないのか。思ったのですが、これは合成済み文字というやつなんじゃないでしょうか。




上のアイコンのリンク先「Decomposition Mapping」にあるように、これらは「A」「E」 にU+0304を合成させた文字として別に定義されているものです。Chromeでは表示にだけこっちのグリフに置き換えてるのかなと思いました。U+0304は母音につける記号なので、「B」「C」「D」に合成させた文字というのは存在しません。

<参考>PDF 千夜一夜: PDFと文字 (38) -- Unicode標準形NFCの実装

試しにU+0304との組み合わせと上の合成済み文字との表示を比較してみたところ。左の図では見た目一緒です。


右の図のU+2501との組み合わせでは、合成済み文字の方は何も起こりません。別のグリフに置き換えるというプロセスが発生しないからじゃないですかね。

一方、Lucida Sans UnicodeはXPでもU+0304があって豆腐になることはありません。ただし特殊文字との組み合わせではやはり7との差異が見られました。


XPでは罫線記号に関係なく最初からフォントが変わってます。なんでだかはわかりません。U+2588も同様です。


なお、U+0323との組み合わせではXPだと何も起こりませんでした。


これは組み合わせ方の問題みたいです。U+2584からU+2588を並べたケースで見ると、U+0323の位置を変えればXPでもちゃんとU+2584もU+2588も全角化ができました。


XPでは、はじめからLucida Sans Unicodeで表示されているものにU+0323を組み合わせればいいようです。
U+2592のケース:


U+0323をU+2501の方につければXPでも全角化しました。


どういうロジックなのか全くわかりませんけど。

2013年4月16日火曜日

Excel 2003→2010/2013:コントロールに登録した引数付きマクロでエラー

引数付きのプロシージャを、コマンドボタンなどのコントロールにマクロとして登録しているとします。

Public Sub Message_Show(ByVal sMessage As String)
    MsgBox sMessage
End Sub

登録は下図のようにシングルクォーテーションで囲み、引数の前に半角スペースを入れればできます。


実行結果:


さて、このマクロを登録したブックが2003形式(.xls)だった時、Excel 2010や2013で操作していたらおかしなエラーが発生するのに気づきました(図は2013)。まず、ブックを2007形式(.xlsm)で保存し直そうとするとエラーメッセージが表示されました。

名前 <登録マクロ名> は有効な参照範囲と競合するか、Excelでは無効です。名前は _1<プロシージャ名>(アンダーライン)<引数> に置き換えられました。
この時点ではメッセージだけで何も変化はありません。しかし一度ブックを保存して閉じてから再度開くと、登録してあったマクロが警告通りに書き換えられていました。


もちろんそんなプロシージャはありませんので、実行してもエラーになります。元から2007形式のブックで上のようにマクロを登録していれば、この現象は起きません。

これと原因は同じなのか、もう一つおかしなことがありました。
上の2003形式のブックから、2007形式のブックへシートをまるごとコピーするとします。コピーするのは新規のシートで、データもコントロールも何もありません。


これでもエラーになりました。

移動またはコピーする数式に名前<登録マクロ名>が含まれていますが、この名前は有効なセル範囲またはExcel 2013で内部的に使用されている名前と重複するため、変更する必要があります。
ちょっと何言ってるかわかりません。
ちなみにここで「いいえ」を選択すると、「重複する」名前を変更するためのダイアログが表示されました。


妙なのは、ここで新しい名前を指定しようと先のメッセージで「はい」を選択しようと、コピー自体は完了するということです。手作業でやってるならいいんですが、VBAで自動化している場合は実行が中断してしまうので困ります。

いずれにしても、最初から2007形式で作っていればこんな問題は起きません。早く2003と2007以降が混在した環境がなくなるといいんですが。

2013年4月13日土曜日

Windows 8:niconicoアプリにコマンドパレット追加

ニコニコのMetro版(Windowsストアアプリ)の話のその後です。
あいにくタッチスクリーンのPCは持ってないのですが、早送りというおもしろい機能もありUIが好きなので時々起動してます。


niconico - Windowsストア

今日アップデートしたら、コメント欄が通常の視聴ページと同様「コマンド」と「コメント」に分かれていました。


アイコンをクリックするとコマンドパレットが表示されます。デザインがしゃれてます。


 コマンドを選択して入力したところ。


またチャームからオプションを開くと、NG共有の設定もできてました。


当初にくらべるとコメント部分もだいぶ実用的になってきました。タッチスクリーンで使ってみたいです。

2013年4月9日火曜日

Chrome 26:U+2588をpepflashplayerでも全角幅で表示させるテスト

Chrome(というかpepflashplayer)ではIEのようなフォント変化が起きません。しかしIEとは全く異なる、独特のフォント変化は起きるようです。その一端が垣間見えたので。

下図は「ABCDE」の途中に半角の半濁点U+FF9Fが置いてあります。
先頭の「A」に合成用文字U+0304をくっつけると、ChromeではU+FF9Fが豆腐になってしまいます。


比較のため右側にIEでの表示も示しました。
豆腐になる理由はわかりませんが、この部分だけフォントが変わったということでしょう。どうも合成用文字はフォント変化のトリガーになることがあるみたいです。

次に、下図は「A」とU+0304を合成させた状態で、「ABCDE」の後ろに罫線記号U+2500・U+2501をつけたところです。2つの記号の違いは、U+2500がArialであるのに対してU+2501はArialにはなく、Lucida Sans Unicodeにフォールバックしているのではないかと思われる点です。


ChromeではU+2501をつけた方の「ABCDE」が違うフォントになってしまいました。Times New Roman?でしょうか。U+2501自体は豆腐になってます。


この合成用文字とLucida Sans Unicodeの組み合わせによるフォント変化は、特殊文字でも起きました。下図はニコニコマークU+263Aで試したところです。


ChromeではU+2501をつけた方がLucida Sans Unicodeと思われる字形に変化しています。


なおIEではU+2500もU+2501もゴシックで、U+263Aはそれに従っているのだろうと思われます。
と言うことはChromeではArialで表示され、縮んでしまったブロック文字U+2588も変化させられるのでは?というわけで試したところ。


U+2501をつけた方は全角の字形にになりました。これもLucidaだろうと思います。


ただしIEではU+2588が豆腐になっています。これはU+0304がよくなかったようで、U+0323に替えると豆腐にはなりませんでした。


IEではU+2588が豆腐になっただけでなく、U+0304もフォントが変わっていたのだと思います。U+0304とU+0323の違いはWindowsコードページの定義の有無にあります。

ダイアクリティカルマークのブロック(U+0300~U+036F)において、U+0300・U+0301・U+0303・U+0309・U+0323についてはコードページ1258に定義があります。このためIEではArialから変化しないはずです。
一方U+0304を始めとする他の文字はコードページの定義がなく、Arialから他のフォントに変わることがありえます。U+2588との組み合わせではそれが起きたのかなと思います。U+0300・U+0301・U+0303・U+0309を使った場合はU+0323と同様、それ以外は(全部は試してませんが)U+0304と同様の結果でした。

下図はChromeだと縮んでしまうU+2584・U+2588を全角に変化させて、コメントの幅をIEと合わせたところ。


U+2585・U+2586・U+2587はArialになく、始めからLucidaなのがポイントなんじゃないかと思います。
下図はU+2592を全角にしているところ。


だいぶデザインが変わっちゃいますが・・・縮むよりはマシかなと。以上、とりあえずWindows 7でしか試してません。