maidsphere

A quantization noise whispers through the net.

Windowsで管理者権限がなくても好きなフォントを使う方法

May 23, 2015 22:58:39 JST

AddFontResource関数の引数にフォントファイルへのパスを指定して呼んであげるといいです. どの形式のフォントファイルを指定できるかなどの詳細は,関数のドキュメントを参照してください. TTFもOTFも指定できます.

関数を呼ぶ方法はネイティブアプリからでもRubyやPerlのWin32 APIからでも,どんな方法でもかまいません. 何らかの方法で呼んであげさえすればOKです. たとえば,RubyからだとWin32APIを使って以下のように呼び出せます.

require 'Win32API'

api = Win32API.new('GDI32.DLL', 'AddFontResource', %w(p), 'i')
api.call(path_to_font_file)

なお,この方法は再起動すると登録が元に戻ってしまいます. 永久的にこの方法でフォントを使い続けたい場合は,ログオン時などに毎回AddFontResourceを呼んでやる必要があります.


Windowsにおけるフォントの取り扱いは,MSDNのFont Installation and Deletionのページがよくまとまっています. 実際,このページには

To temporarily install a font, call AddFontResource or AddFontResourceEx. These functions load a font that is stored in a font-resource file. However, this is a temporary installation because after a reboot the font will not be present.

との記述があり,一時利用目的でフォントをシステムに登録するためにAddFontResource関数の使用を推奨しています.