アップグレード時のデータ移行手順メモ および Verdanaとの闘い
Microsoft OneNote2010
段取り八分といって、仕事や著述の前に、6W3Hで必要な資料やリンクをひととおりそろえておくと作業が軽快になるが、Microsoft
OneNoteはその点でマインドマップのように使うことができる。
OneNoteは手軽にメモやスクラップがとれるってのがいいね。
それ以前は「知子の情報」(テグレット)をすこし使っていたが、OneNoteは
Webからのコピーアンドペースト、写図まるごとドラッグアンドドロップできる点で優れており、OneNote2003から使っている。
2010年6月に OneNote2010が発売されたので、今回アップグレードすることにしたが
・2003→2010 へのデータの切り替え・移行方法
がヘルプに詳しく載っておらず、作業で少々 戸惑ったのでメモに残しておくことにした。
OneNote2010は、2003/2007のファイルを開いて閲覧することはできる。
その際にデータ変換が可能であり、そうすればOneNote 2010で編集できるようにもなるが、変換(コンバート)後は
2003/2007側からは読み取れなくなってしまう。
なので、念のため旧版はそのままにしておいて、2010用にあらたにフォルダを作成・まるごとコピーして、そちらを
OneNote2010用のデータとして使うことにする。
すると、ノートブック(他のセクションも含めてまるごと)を開くか、選んだセクションファイルだけを開くかを問うダイアログが表示される。
今回は、全コンバートが前提なので、[ノートブックを開く]を選択する。
読み込まれると、各ページの上部にアップグレードを推奨する情報バーが表示される。
[ノートブック全体を 2010形式にアップグレードする]を選択する。
OneNote2010へのアップグレード完了。
「Verdana」(ヴァーダナ)とか言われたところで、OneNote
になじみのない人にはわけわからんと思うが。
しかし、2003や2007から使ってきた人たちは、おそらく知らない人はいないであろう OneNote
のバグのことである。
OneNoteでは既定のフォントにどれだけ日本語を設定しても、半角入力についてはそれらを一切無視してVerdanaフォントになってしまうバグがあるのだ。
この影響で、たとえば \ は \ になってしまう。
→
フォント設定はあっさり無視されてしまう
今回のメモが、OneNote2003から いきなり2010になっている理由とも関係するのだけど、
じつは、私は OneNote2007では Verdana問題が解決されていないから買わなかったのである。
そのかわり、MSDNを通じて「この現象は明らかにバグと考えられるので」と不具合報告をした。担当者の方からも「かならず開発担当に報告いたします」と返事をいただいていた。
だから2010まで待って買ったのである。
さすがに OneNote2010では修正されていると思ったし、これだけ再現性の高い障害を7年も放置するとは思っていなかった。
なのに OneNote2010でも、修正されてないじゃんよっ!
これはさすがにまいったね。 うかつだった。
いずれ対応するとは思うけど、その「いずれ」を待って、すでに7年である。もう、あてにはできない。
そもそも「Verdana」になってしまう原因はなにか。
外観からはどうにもわからんので、Windowsを いじって(ぷちハックして)確かめてみることにした。
ちきしょー このWindows7 入れたばっかりなのになぁ。
-
まずレジストリまわりを確認してみた。
HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\OneNote\Options
で、フォント関係の設定はあるが、削除したり加えたりしてみたけどOneNoteの挙動に変化はない。
さらによく調べてみると、OneNote は半角入力において ダブルバイトフォント指定だけをキャンセルしているようだ。
シングルバイトフォント指定した場合は、素直に入力できている。
このことからキー入力関係(keydown等)の処理かパッチに不具合があると推測するが、現時点ではリバースまでして確かめる必要性は感じない。
-
さて。
半角入力で既定のフォント(レジストリ)を無視したときは、何を基準にこのフォント(Verdana)が選ばれているのだろうか。
それを確かめるため、Windowsから Verdanaフォントを削除してみた。
これでどういう挙動をするか興味があったからである。
すると
なんと、OneNoteの半角デフォルトは MS Serif になった。
・・・ほほう、ちょっと読めてきた。ずいぶん前だが、この順序のフォントファミリーを見たことがあるぞ。
Verdanaは、1990年代のWindowsプログラマー(特に海外)では比較的知られたフォントで、サンセリフに近い形状をしている。
UI(ユーザーインターフェース、はやい話がWindowsソフト)でVerdanaを使用するなら、第二優先フォントをMS
Serif(Windows95用)にして、文字化けしないように保険をかけておく必要があった。
日本のWindowsプログラムは、MS Pゴシック
で作られることが多かったので馴染みの薄い処理だったが、国際的に使用されるソフトを作るときは(私の場合はプロキシランチャーなど)この順序を気にかけておかねばならなかった。
なつかしいな。
Verdanaは Windows Vista
からは標準的なフォントであるし、それにあわせてメイリオ(日本版Verdana)が作られたはずなので、現在このような実装の方法は少ないと思う。
ひょっとすると、OneNote
を作った人たちは、90年代の価値観やライブラリを使ったのかもしれない。
・・・もちろんVerdanaがない環境でも動作する堅牢性を考慮したかもしれないが、とはいえ、ユーザーによるフォント指定があるのに、それを無視する理由はないはずだ。
単に、ダブルバイト文字用のコーディングをしくじっているか、自ら打ち消す順序にしてしまったかのどちらかだろう。
いずれにせよ、これは修正されるべきバグであり、ハードコーディング状態になっている可能性が強いようなので、OneNoteの設定まわりをいじってもムダっぽい。
ちなみに、MS Serif を削除するとどうなるか試してみたかったが、システムフォントとしてWindowsに拒否された。
ここまでの分析から導き出される対策はおおきくふたつ。
そのひとつ。
日本語フォントの種類にこだわりはなく、\ が \ になってしまうのがイヤなだけ・・・というのなら。
Tahoma など \ が表示されるシングルバイト系フォントを既定フォントにすれば、その対策になる。
おそらくこれが最もかんたんな方法だと思う。
漢字・かなが MS ゴシックに自動代替されることが気にならなければだけどね。
この対策は
OneNoteのVerdana問題が、単にダブルバイト系フォントが半角入力されるのを嫌がってることによるものである。転じて シングルバイト系フォントを既定フォントにすることについては、OneNoteもすんなり受け入れてくれるので、この方法が有効になる。
当然だけど、Arial や Courier
を指定すると、きっちり \
になってしまうので注意。
Tahomaを指定すると\が表示され ダブルバイト文字はMS ゴシックになる
相手を変えるより、自分が変わったほうが実入りが大きい・・・というのはコミュニケーションの基本のひとつであるが。
どうしても自分が決めた日本語フォントで表示させたいというのなら、OneNote を変えるより、OSを変えたほうがよさげだ。
注意 この記事は、Windowsの改造を解説しています。OSの不用意な改造は修復不能なデータ損傷を起こす可能性があります。筆者はこの記事に起因するいかなる責任も負いません。すべて自己責任でおこなってください。
その場合の方法としては、
などが考えられる。
1の方法は最も確実だが、OSに対して侵襲の強い不可逆的な影響を作ることになる。
2の方法は相対的な指定であり、ソフトウェアによっては有効でないこともあるが、前者に比較して侵襲も最低限で済むし、元にも戻しやすい。
したがって、[2]のフォントのリダイレクトから行うのが穏当であろう。
フォントのリダイレクトは
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\FontSubstitutes
で行うことができ、
値名=データ
フォント名=リダイレクトするフォント名
の関係にある。
今回の場合は、verdana という値を文字列型(REG_SZ)で新規作成し、
Windows XPの場合は、MS UI Gothic
Windows 7/Vistaの場合は、Meiryo UI
を指定するとよいと思われる。
・テスト用レジストリセット
以下はレジストリを作成して、それぞれに再起動して、半角入力した結果である。
MS UI GOTHIC
Meiryo UI
いずれも認識としては「Verdana」であるが、それぞれ
MS UI GOTHIC および Meiryo UI で入力に成功していることがわかる。
ちなみに、かるくリダイレクトしただけなので、あらためて Veradana に指定すると、ちゃんと Veradana になる。
これはこれで便利なのだが、ただし、この状態には欠点があって、OneNote
を再起動すると、入力した値はVeradanaで再現され元の \ に戻ってしまう。
一時的に見せているだけだからね。
-
フォントの比較・Meiryo UIがVerdanaに
近いことがわかる。
恒久的なリダイレクトにするなら、レジストリに記入する値とデータを
verdana,0 = Meiryo UI,0
verdana,128 = Meiryo UI,128
というふうにキャラクターセットとの関係を指定して固定化する。
・固定化版レジストリセット
こうすれば、OneNote を再起動しても、リダイレクトしたフォントの状態で見ることができる。
システムのUIを変更するので、このページのこれ→ \
が\に見えるようになる。
-
一見してこれで整ったように見えるが、それでも問題は残されている。
代替フォントを使って「自分には他のフォントに見えている」のであって、保管されたOneNoteのデータのほうは Verdanaのままだからである。たとえば、そのページを他の環境で閲覧したり、共有している他の誰かが閲覧する場合はVerdanaの状態で再現・表示されるだろう。
根本的には、フォントをあらためて再指定したほうがいいことには変わりない。
あくまで、究極的な方法のひとつとして検討されるにすぎない。・・・私はやっちゃったけどね。いまは戻してるが。
そもそも ポピュラーに使用される特定の文字コードに、まったく異なる字形が表記されていることのほうが問題なんだけどね。
しかも \ は「0x5C/0x7C問題」といって因縁やいわくの歴史が存在する文字なので、プログラム上ではうかつに触れないというのも、修正が遅れている(なされていない)理由のひとつになっているかもしれない。
いずれにせよ、ここで解説した、大きくふたつの対策のうち、一般的には「既定のフォントにシングルバイト系フォントを使用する」ほうを第一選択肢としておすすめしたい。
OneNoteのバグが修正されるまでの「つなぎ」として私は考えているので、この程度でいいと思っている。
(2010/11/19・山崎はるか)