2008-02-17

MSゴシック と MS明朝 をClearTypeで表示する

Windows 2000 では単純なアンチエイリアスで、Windos XP以降ではClearTypeでフォントのスムージングが出来ますが、MSゴシックやMS明朝は16pt以下のサイズではビットマップフォントが使用されるため、スムージングが行われません。(この情報が正確であるかは確認していません。全てこのサイトの情報を元にしています。)

高解像度な液晶画面を使用しているのであればClearTypeを使用すると文字がかなり見やすくなります。
そこで、MSゴシックとMS明朝をClearType対応にしてフォントを置き換えてしまいます。

リンク先の情報は非常によくまとまっているため、今更私が書く事もないのですが、再インストールとかの度に同じ作業をするのは面倒なので作業手順のメモ、と言う事で…
  1. 適当なフォルダ(8.3形式で認識できるフォルダが望ましい)を作成し、中に以下のバッチファイルを6個作成します。
    • 0PrepareFolders.cmd
      mkdir 0OrgTtc
      mkdir 1BrknTtf
      mkdir 2NBmpTtf
      mkdir 3AaTtf
      mkdir 4NewTtc
      mkdir 5Backup
      mkdir Tools
    • 1BreakTtc.cmd
      (ファイル名が8.3形式なのはMAKETTC.EXEが認識してくれないため)
      del /q ".\1BrknTtf\*.ttf"
      cd .\1BrknTtf
      "..\Tools\ttsdk\TTC\BREAKTTC.EXE" "..\0OrgTtc\msmincho.ttc"
      move ".\FONT00.TTF" ".\msmincho.ttf"
      move ".\FONT01.TTF" ".\mspminch.ttf"
      "..\Tools\ttsdk\TTC\BREAKTTC.EXE" "..\0OrgTtc\msgothic.ttc"
      move ".\FONT00.TTF" ".\msgothic.ttf"
      move ".\FONT01.TTF" ".\mspgothi.ttf"
      move ".\FONT02.TTF" ".\msuigoth.ttf"
      cd ..
    • 2RemoveBmp.cmd
      (参考にしたサイトのスクリプトだと他のプロセスがファイル使用中でコケました。プロセス終了を待つとか正しい対応は私のスキル不足により却下)
      del /q ".\2NBmpTtf\*.*"

      for /l %%I in ( 7,1,22 ) do (
      echo PPEM %%I > ".\2NBmpTtf\mtemp%%I.txt"
      echo END >> ".\2NBmpTtf\mtemp%%I.txt"
      )

      for %%I in (".\1BrknTtf\*.ttf") do (
      ".\Tools\ttsdk\SBIT\sbit32.exe" -d "%%~fI" ".\2NBmpTtf\mtemp7.txt" ".\2NBmpTtf\%%~nI7.ttf"
      ".\Tools\ttsdk\SBIT\sbit32.exe" -d ".\2NBmpTtf\%%~nI7.ttf" ".\2NBmpTtf\mtemp8.txt" ".\2NBmpTtf\%%~nI8.ttf"
      ".\Tools\ttsdk\SBIT\sbit32.exe" -d ".\2NBmpTtf\%%~nI8.ttf" ".\2NBmpTtf\mtemp9.txt" ".\2NBmpTtf\%%~nI9.ttf"
      ".\Tools\ttsdk\SBIT\sbit32.exe" -d ".\2NBmpTtf\%%~nI9.ttf" ".\2NBmpTtf\mtemp10.txt" ".\2NBmpTtf\%%~nI10.ttf"
      ".\Tools\ttsdk\SBIT\sbit32.exe" -d ".\2NBmpTtf\%%~nI10.ttf" ".\2NBmpTtf\mtemp11.txt" ".\2NBmpTtf\%%~nI11.ttf"
      ".\Tools\ttsdk\SBIT\sbit32.exe" -d ".\2NBmpTtf\%%~nI11.ttf" ".\2NBmpTtf\mtemp12.txt" ".\2NBmpTtf\%%~nI12.ttf"
      ".\Tools\ttsdk\SBIT\sbit32.exe" -d ".\2NBmpTtf\%%~nI12.ttf" ".\2NBmpTtf\mtemp13.txt" ".\2NBmpTtf\%%~nI13.ttf"
      ".\Tools\ttsdk\SBIT\sbit32.exe" -d ".\2NBmpTtf\%%~nI13.ttf" ".\2NBmpTtf\mtemp14.txt" ".\2NBmpTtf\%%~nI14.ttf"
      ".\Tools\ttsdk\SBIT\sbit32.exe" -d ".\2NBmpTtf\%%~nI14.ttf" ".\2NBmpTtf\mtemp15.txt" ".\2NBmpTtf\%%~nI15.ttf"
      ".\Tools\ttsdk\SBIT\sbit32.exe" -d ".\2NBmpTtf\%%~nI15.ttf" ".\2NBmpTtf\mtemp16.txt" ".\2NBmpTtf\%%~nI16.ttf"
      ".\Tools\ttsdk\SBIT\sbit32.exe" -d ".\2NBmpTtf\%%~nI16.ttf" ".\2NBmpTtf\mtemp17.txt" ".\2NBmpTtf\%%~nI17.ttf"
      ".\Tools\ttsdk\SBIT\sbit32.exe" -d ".\2NBmpTtf\%%~nI17.ttf" ".\2NBmpTtf\mtemp18.txt" ".\2NBmpTtf\%%~nI18.ttf"
      ".\Tools\ttsdk\SBIT\sbit32.exe" -d ".\2NBmpTtf\%%~nI18.ttf" ".\2NBmpTtf\mtemp19.txt" ".\2NBmpTtf\%%~nI19.ttf"
      ".\Tools\ttsdk\SBIT\sbit32.exe" -d ".\2NBmpTtf\%%~nI19.ttf" ".\2NBmpTtf\mtemp20.txt" ".\2NBmpTtf\%%~nI20.ttf"
      ".\Tools\ttsdk\SBIT\sbit32.exe" -d ".\2NBmpTtf\%%~nI20.ttf" ".\2NBmpTtf\mtemp21.txt" ".\2NBmpTtf\%%~nI21.ttf"
      ".\Tools\ttsdk\SBIT\sbit32.exe" -d ".\2NBmpTtf\%%~nI21.ttf" ".\2NBmpTtf\mtemp22.txt" ".\2NBmpTtf\%%~nI.ttf"
      )

      for /l %%I in ( 7,1,22 ) do (
      del /q ".\2NBmpTtf\*%%I.*"
      )
    • 3EnableAntialiasing.cmd
      del /q ".\3AaTtf\*.*"

      copy ".\2NBmpTtf\*.*" ".\3AaTtf\"

      for %%I in (".\3AaTtf\*.ttf") do (
      ".\Tools\ttfmod\ttfmod.exe" "%%~fI"
      )
    • 4MakeTtc.cmd
      del /q ".\4NewTtc\*.*"
      copy ".\3AaTtf\*.ttf" ".\4NewTtc\"
      ".\Tools\ttsdk\TTC\MAKETTC.EXE" ".\4NewTtc\msmincho.ttc" ".\4NewTtc\msmincho.ttf" ".\4NewTtc\mspminch.ttf"
      ".\Tools\ttsdk\TTC\MAKETTC.EXE" ".\4NewTtc\msgothic.ttc" ".\4NewTtc\msgothic.ttf" ".\4NewTtc\mspgothi.ttf" ".\4NewTtc\msuigoth.ttf"
      del /q ".\4NewTtc\*.ttf"
    • 5ReplaceFonts.cmd(動作未確認)
      move "%SystemRoot%\msgo*.tt?" ".\5Backup\"
      move "%SystemRoot%\msmi*.tt?" ".\5Backup\"
      copy ".\4NewTtc\msgothic.ttc" "%SystemRoot%\Fonts\"
      copy ".\4NewTtc\msmincho.ttc" "%SystemRoot%\Fonts\"
  2. コマンドプロンプトを開き、作成したフォルダに移動します。
  3. 0PrepareFolders.cmd を実行します。
  4. Toolsにttsdkttfmodを解凍しておきます。
    ttsdkはTools\ttsdk\TTC以下にBREAKTTC.EXEとMAKETTC.EXEが、ttsdkはTools\ttsdk\SBIT以下にSBIT32.EXEが置かれるように解凍します。
    ttfmodはTools\ttfmod以下にttfmod.exeが置かれるように解凍します。
    ttsdkは現在、Microsoftで配布していない模様、エクセルソフトさんからダウンロード可能ですが、再配布OKなのか?改変されていないか?は謎です。
    ttfmodは開発停止しているようですがまだダウンロード可能でした。
  5. 作成されたフォルダ、0OrgTtc にコントロールパネル→フォントからMSゴシックとMS明朝のファイルをコピーします。コピーしたファイルは msgothic.ttc と msmincho.ttc にリネームしておきます。
    (中途半端にスクリプトが用意してないのは突っ込まないように)
  6. コマンドプロンプトから 1BreakTtc.cmd 2RemoveBmp.cmd 3EnableAntialiasing.cmd 4MakeTtc.cmd を順に実行します。それぞれの実行結果は 1BrknTtf 2NBmpTtf 3AaTtf 4NewTtc に出力されます。ちなみにスクリプトには
    エラー処理が一切入っていません。
  7. コントロールパネル→フォントからコピーしたファイルが msgothic.ttc msmincho.ttc 以外の名称だった場合はファイル名でレジストリを検索して msgothic.ttc msmincho.ttc で置き換えるか、5ReplaceFonts.cmd でコピーするファイル名をコピーしたファイル名になるように書き換えておきます。
  8. リブートして回復コンソールを起動して 5ReplaceFonts.cmd を実行します。
    (私はMacからBootCamp上のファイルを置き換えたのでこれは動かしていません)
以上でMSゴシックとMS明朝が全てのサイズでスムージングされるハズです。
(もちろんOSの設定は必要です)
後はClearType Tunerでチューニングすればキレイなフォントで快適生活?なはずです。

ただし、スムージングを強制的に無効にしているアプリもあり、このようなアプリでは非常に不快な思いをします。また、Javaアプリは今までスムージングされたものを見た事がないです。

そうそう、一つ注意が

Windows Updateでフォントのアップデートがありますけど、これでフォントを置き換えているとアップデートに失敗します。
そんな時は5Backupにあるフォントで元に戻してアップデートしましょう。
(元に戻すバッチが用意されていないのも突っ込まないでくだされ)

0 件のコメント: