SC3ヘルプファイル─フォント最適化スクリプト(Mac->Win)
ところでこれらの和訳済ファイルをWindows用のSC3クライアントPsyCollider(wxPython)上のRTFビューワで開くと、ヒラギノやOsakaなどのMac系フォントが見つからないせいか*1、フォントの幅や形がグチャグチャになってしまいます。(その他のHelveticaやMonacoなども同様、Windows上ではきれいに表示してくれません)
そこで、Benからもらったフォント変換用のマクロに、日本語フォントの変換部分も付け足しました。コードは以下に。ちなみに僕はVBAマクロの書き方をよく知りません。
Sub SCMacRTFToWinRTF() ' ' Macro1 Macro ' Macro enregistr馥 le 16/10/2004 par Benjamin Golinvaux ' ' Helvetica --> Arial Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find.Font .Name = "Helvetica" End With With Selection.Find .Text = "" .Replacement.Text = "" .Replacement.Font.Name = "Arial" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll ' Helvetica-Bold --> Verdana(bold) Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find.Font .Name = "Helvetica-bold" End With With Selection.Find .Text = "" .Replacement.Text = "" .Replacement.Font.Name = "Verdana" .Replacement.Font.Bold = True .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll ' Monaco --> Courier New Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find.Font .Name = "Monaco" End With With Selection.Find .Text = "" .Replacement.Text = "" .Replacement.Font.Name = "Courier New" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll ' Geneva --> Courier New Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find.Font .Name = "Geneva" End With With Selection.Find .Text = "" .Replacement.Text = "" .Replacement.Font.Name = "Courier New" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll ' Helvetica-Oblique --> Arial(italic) Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find.Font .Name = "Helvetica-Oblique" End With With Selection.Find .Text = "" .Replacement.Text = "" .Replacement.Font.Name = "Arial" .Replacement.Font.Italic = True .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll ' Osaka−等幅 --> MS ゴシック Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find.Font .Name = "Osaka−等幅" End With With Selection.Find .Text = "" .Replacement.Text = "" .Replacement.Font.Name = "MS ゴシック" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll ' HiraKakuPro-W6 --> MS Pゴシック(bold) Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find.Font .Name = "HiraKakuPro-W6" End With With Selection.Find .Text = "" .Replacement.Text = "" .Replacement.Font.Name = "MS Pゴシック" .Replacement.Font.Bold = True .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll 'HiraKakuPro-W3 --> MS Pゴシック Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find.Font .Name = "HiraKakuPro-W3" End With With Selection.Find .Text = "" .Replacement.Text = "" .Replacement.Font.Name = "MS Pゴシック" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll End Sub
「ヒラギノ角ゴシックPro-W3/W6」は「MS Pゴシック-normal/bold」へ、「Osaka」は「MS Pゴシック」へ自動変換します(注)*2。また一部僕の個人的な好みから、太字タイトルに使用されている「Helvetica-Bold」は「Verdana(Bold)」へ、斜体の「Helvetica-Oblique」は「Arial(italic)」へ等と、オリジナルのスクリプト*3とは多少異なる部分があるのでご了承ください。
次に、PythonからWindowsのCOMを扱えるようにするため、Python for Windows Extensionsモジュールをインストールしましょう。
http://www.python.jp/Zope/download/win32all
ここの2.3用のwin32all-153.exeでいいと思います。
あとはこのVBAスクリプトを、MSワードのツール→マクロから新しいマクロを「作成」するか、「編集」を選択してVisualBasicエディタを開き、そこにそのままコピペして保存するだけです。ここでWordは閉じておいた方がいいようです。僕の場合、Wordが起動したままだと失敗することがありました。その後、コンバートしたいファイル(rtf)を置いたディレクトリ(フォルダ)上に同梱のConvertHelpFolderToWinRTF.pyを持ってきてダブルクリックで起動させるだけでOK*4です。しばらく待ってればPython君がうまくWordと連携プレーをやってくれて、フォルダのサブツリーを含め全て自動巡回→変換してくれます。
また、Psycollider上でヘルプファイルを読んでいるとき、フォントが大きすぎる、または小さすぎると感じた場合は、「Ctrl+マウスホイールボタン」でクリクリやるのが便利です。ちなみに僕はたいてい2サイズほど落として読んでます。
*1:これらのフォントをWindows上でも表示できる(持っている)人は問題ないと思います。
*2:といいつつOsakaだけ何故か変換できません。現在原因究明中です。…数時間前は究明中でしたが、もう原因がよくわからないので、Pythonで"Osaka"の文字列を"MS PGothic"で置換するような、かなり強引な方法で対処することにしました。Osakaがうまく表示できない人は、僕の配布しているモノに同梱したConvertHelpFolderToWinRTF.pyの方を使ってコンバートしてください。RTFファイルフォーマットの解析が不十分なので幾分不安ですが、なんとかうまくやれてるみたいです。
*3:今回、ConvertHelpFolderToWinRTF.pyのコメント部分に、フォント変換用のVBAスクリプトをのっけてもらいました(by Benjamin)。CVSからも、僕の配布場所からもこれは入手可能です。
*4:僕は"d:\usr\bin"という実行ファイルパスの通ったディレクトリを作ってあるので、そこに前述のpythonスクリプトをrtfconv.pyとリネームしておいてます。きちんと現在のディレクトリを取得してくれるので、変換したいrtfが置いてあるディレクトリでコマンドラインから"rtfconv"とタイプするだけで使えるのでとっても便利です。シンボリックリンクが使えればもっといいんだけど。