2012年3月29日木曜日

Excel:「塗りつぶしの色」を2回クリックしないと塗りつぶせない件

ふとおかしなことに気づきました。
あるシートでセルに色をつけようとしたら、「塗りつぶしの色」を一回クリックしても何も変わりません。もう一回クリックすると色が変わりました。何度やっても同じです。


シートはAccessからエクスポートしたものでした。書式設定を見てみたところ、妙なことが起こっていました。
「塗りつぶしの色」をクリックする前の状態:


背景色が何も設定されていません。「色なし」もオフの状態です。VBEで値を見ると-4142(xlNone)になっています。パターンの色はなんでだか黒になってますが、背景色がxlNoneなのでこちらもxlNoneとなっています。
一回クリックした後の状態:


背景色は「色なし」がオンになり、パターンの色は「自動」に変わりました。VBEでの値は変わりません。
もう一回クリックした後の状態:


これで色がつきました。パターンの色もVBEで-4105(xlAutomatic)に変わっています。

「塗りつぶしの色」をクリックする前がおかしかったわけですが、このシートはVBAからDoCmd.OutputToでacFormatXLSX(.xlsx形式)を指定してエクスポートしたものでした。
.xls形式を指定した場合このようなことは起きませんでした(余談ですがacFormatXLSではなく"Excel 97-2003 ブック (*.xls)"という文字列を指定すると、5.0/95ブックではなく97-2003ブックにできることを最近知りました)。

まあExcelにエクスポートした時におかしいのは、以前のAccessからあったことですが。

2012年3月28日水曜日

あらためてMingLiUについて(1)

旧ブログで書いてたことをまとめつつ書いていきたいと思います。
Windows上のニコニコプレーヤーでコメントのフォントが変化する現象について、次のようなことがわかっています。
  1. 文字コードによりロケール(地域、言語)が識別され、コメントのフォントが決定される。この挙動はWindowsコードページでの定義の有無に由来すると思われる。
  2. 既定のフォントはArial。Arialが対応するコードページ1250~1258に定義がある文字は、そのままArialで表示される。
  3. コードページ1250~1258に定義が無い文字のうち、CJKコードページ932・936・949・950に定義がある文字はCJKフォントで表示される。既定はMS Pゴシック(CP932)。
  4. ただしCJKコードページの定義の有無によっては、MS Pゴシック以外のCJKフォントで表示される。すなわち、SimSun(CP936)・Gulim(CP949)・PMingLiU(CP950)。
  5. 一つのコメントにおいて4.の文字が3.の文字より前にある場合または隣接した場合は、MS Pゴシックで表示される文字が他のCJKフォントに変化する。
  6. コメント表示のプロセスに過度な負荷がかかった場合、5.とは別に画面上のコメント全体が他のCJKフォントへ変化することがある(「フォントの連れ回し」)。具体的な発生条件は不明。
  7. コードページ932にのみ定義がある文字は、5.および6.の効果を打ち消す(フォント変化解除・「ゴシック保護」)。既定の表示が維持される。
以上は大ざっぱな話で、他にもいろいろな挙動を確認しています。また、ここにフォントリンクなどによるグリフ代替の挙動も加わります。全体像は今のところ掴みあぐねています。

掴みあぐねながらもこの現象をコメント技に利用するわけですが、 ずっと注目しているのがMingLiU(PMingLiU)です。

「明朝化」と言えばSimSunのことです。このもう一つの明朝、PMingLiUはWindows XPでは表示されません。またSimSun化と比べてMingLiU化を起こす文字が少ないため、Vista以降でもフォント変化としてすぐには認識されなかったのではないかと思います。
※リンク先はただのテキストファイルです。ブラウザで表示できない場合はDLしてください。

前者はSimSun化を、後者はMingLiU化を起こします(実は私用領域にもフォント変化文字がありますが、これについてはまた別で触れたいと思います)。
そして936・950両方に定義がある場合、SimSun化を起こします。
SimSunが優先される理由はわかりません。
ただ実際に表示させてみると、MingLiUの方がSimSunより字形のデザインが大きくなっています。特にbigのコメントでは、こちらの方が見栄えがするんじゃないでしょうか。


よく使われるブロック文字(U+258X)は上の「936・950に定義がある」グループで、そのままだとSimSunで表示されます。これをMingLiU化させるとすき間が無くなり、きれいにつながります。
U+2588だけなら丸文字化(Gulim)でも同じですが:


他のブロック文字が混ざるとGulimでは幅が縮んでしまいます:


上のケースだとGulimにはU+2584とU+2588しかなく、他はフォントリンクによりMS UI Gothicの縦長の字形が表示されてしまうためです。PMingLiUはU+2581~U+2588いずれのグリフも持っています。

ネックなのがWindows XPでは表示されないことです。
MingLiU化文字によるフォント変化が起きると、なぜか既定のフォント(ArialまたはMS Pゴシック)に戻るという挙動になります。下図ではブロック文字がすべてArialに戻っています。


この問題については次で書きたいと思います。

2012年3月21日水曜日

はじめに

Bloggerに新ブログ開設しました。
どうにも勘が悪くて、新しいものを覚えるのはいつも時間がかかります。徐々に慣れていきたいと思います。

今まではYahoo!ブログで投稿してました:旧ブログ
主にニコニコ動画のCA(コメントアート) の話や、Excel・Access・VBAの話などを書いてました。こちらでも引き続きそういう話を書いていくつもりです。

Yahoo!ブログはカスタマイズ性の無さが不満で、ずっと移転することを考えていました。また時が経つにつれて過去記事が陳腐になっていくのが気になり、早く移転して閉鎖したいとも思ってました。
が生来ずぼらなもので、これまでズルズルと続けてしまいました。開設から5年も経とうという今になってようやく移転することにしました。

ただし旧ブログの方も、当面は過去記事の保管庫として維持しておくことにしました。いまだに自分で参照したり、リンクを貼っていただいてる記事があったりするからです。要らないと思った記事は削除していきます。自分で見ることもなくなったら閉鎖します。

ちなみにこのブログのタイトル・URLは旧ブログのそれをそのまま引き継いだものです。
深い意味はありません。 旧ブログを開設したのが5月で自分に縁のある数字が13だったことから、「5月のバルディエル(エヴァンゲリオンの第十三使徒)」という思いつきでした。初めてやったブログがまるでいろいろと作りつけの賃貸マンションのように見えたので、「号室」としました。
ニックネームは単にURLから採って、ツイッターその他でも統一して使っているものです。顔のアイコンはニコニコで大好きな動画に貼ったコメントアートの一部です。