2014年12月26日金曜日

追加漢字面でのフォント変化

IE上では拡張領域の文字でもコメントのフォント変化が起きるのですが、BMPの文字とは挙動が異なるようです。下図は追加漢字面にあるU+20DE1を投稿したところです。


デフォルトはSimSun-ExtBというSimSunの拡張フォントだと思われます(SimSunにはBMPの文字しか収録されていません)。SimSun化文字なのかと思いきや、下段の通り後ろにゴシックの文字を隣接させただけでゴシックに変化しています。


BMPの文字では見られない変化の仕方です。
ちなみにSimSun化させたコメントの中に置いた場合、デフォルトの方の字形のままです。ただし少し縮んでいるように見えます。


代替表示で呼び出されてサイズを調整されたような感じです。下の重ねた図はpurpleの方がU+20DE1を単独で投稿した場合です。


下図は各フォント変化をさせたコメントの中に置いてみたところです。
この文字はGulimにはありません。MingLiU(PMingLiU)はSimSunと同様、ExtBという拡張フォントに収録されています。


「あ」の字形から各フォント変化が有効であることはわかります。
MingLiU化ではExtBの字形が表示されているようです。右下の部分のSimSunとの違いが特徴的です。


Gulim化ではなぜかSimSunと同じ字形が表示されています。「なぜか」というのは、BMPの漢字であればフォントリンクによりMS UI Gothicが代替表示されるからです。


下図の漢字は妹(U+59B9)に似ていますが、妺(I+59BA)というまた別の文字です。これは4つのCJKフォントの中でGulimにだけありません。


Gulim化の場合、MS UI Gothicが代替表示されていると考えられます。字形はデフォルトのMS Pゴシックと同じです。

U+20DE1はMS UI Gothicにもあります。SimSun-ExtBが表示されるということはフォントリンクは機能しないみたいです。 そもそも冒頭の時点でBMPの文字とは全く違うルールがあるようでしたが。

2014年12月14日日曜日

Excel 2013:ActiveXコントロールが認識されなくなった件

今月のOfficeのセキュリティ更新後にActiveXコントロールが認識されなくなった件です。

本日実施した Windows Update 後から Excel 2010 の VBA が動作しなくなった - マイクロソフト コミュニティ

今のところ2010では直接確認していないのですが、2013・2007では同様のケースを確認できました。
下図は2013でシート上に配置したコマンドボタンです。


別のPCでこのシートを開いてコマンドボタンをクリックしたところ、2010(セキュリティ更新済み)では問題ありませんでした。一方、2013では下図のようになりました。デザインモードになっているわけではありません。


カーソルの形が変わるだけで押し下げすることはできません。CommandButton1_Clickプロシージャも実行されません。

下図は元のPC、別のPCそれぞれでデザインモードにしてみたところです。別のPCの方ではプロパティウィンドウにCommandButton1が表示されません。

シートを作成した元のPC
 
別のPC
当然ながらコードからCommandButton1を参照すればエラーになります。また、この状態から新たにActiveXコントロールを挿入しようとしてもエラーになりました。


なお図の通り元のPCは8.1、別のPCは7でした。Windowsのバージョンの違いが関係あるのかはわかりません。

この不具合を起こしているセキュリティ更新は特定されており、アンイストールすれば解決すると言われています。しかしセキュリティ更新なので削除はやめた方がいいように思います。
もう一つの回避策として冒頭のリンク先でも紹介されている、MSForms.exdを削除する方法を試してみました。


このファイルは、削除してもActiveXコントロールを含むシートを開けば自動的に再作成されます。

ところがこれだけでは解決しませんでした。それどころか2013で再作成されたMSForms.exdだと、同じPC上でなんともなかった2010でも同様の不具合が発生するようになりました。
うっかりしてたのですが、2013はWindows Updateとは別に更新が行われます。確認したところ元のPCも別のPCも最新のバージョンになっていませんでした。手動で更新を実行しました。


更新後、再度MSForms.exdを削除・再作成したところ不具合は起きなくなりました。
逆に、元のPCで不具合が発生するようになりました。こちらもMSForms.exdを削除・再作成したら直りました。要は更新前のバージョンで作成されたMSForms.exdが問題を起こすということでしょうか。

公式でもこの問題は認識されていて、対応中のようです。

Office 2010 ActiveX Disabled - December Update KB2553154 - TechNet Blogs

早く修正パッチが出るといいんですが。