PythonからWin32APIを呼び出すには、ライブラリpywin32を使う必要がある。
けっこうな数のWin32APIを使えるのはいいんだけど、使い方にくせがあってしかもネットに情報がないので、以下で「プロポーショナルフォントかどうかをチェックする方法」を掲載。
import win32gui
# フォントがプロポーショナルかどうか
def IsFontProportional(name):
stat = False
hdc = win32gui.GetDC(0)
lf = win32gui.LOGFONT()
lf.lfFaceName = name
lf.lfHeight = lf.lfWidth = 256 # 高さと幅は何でもいい
hf = win32gui.CreateFontIndirect(lf)
if (hf == 0):
return stat
old = win32gui.SelectObject(hdc, hf) # 作ったフォントを選択
tm = win32gui.GetTextMetrics(hdc)
if (tm["PitchAndFamily"] & 0x01):
stat = True
win32gui.SelectObject(hdc, old) # 元のフォントを選択
win32gui.ReleaseDC(0, hdc)
win32gui.DeleteObject(hf)
return stat
ret1 = IsFontProportional("MS ゴシック") # 0
ret2 = IsFontProportional("MS Pゴシック") # 1
ret3 = IsFontProportional("メイリオ") # 1
ret4 = IsFontProportional("HGPゴシックE") # 1