CAD日記

主にAutoCADのことについて書いているけど、近頃は投資系ネタに注力している。自動売買、仮想通貨、PC関係、プログラミングなど。@caddiary

ソフト開発

Pythonでプロポーショナルフォントかどうかをチェックする

投稿日:

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

-ソフト開発

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.

関連記事

クリップボード履歴を一括でまとめて取得したいだろ?

Windows 10 1809の新機能「クリップボード履歴」はそこそこ使えるんだけど、惜しいんだよね。最大25個までのコピーした履歴を取れるところまではよいが、その履歴を一括でまとめて取得できないのだ …

PDFアレコレをコマンドラインから実行できるようにするための設計

PDFアレコレ起動時のパラメータを受け取って、アレコレの操作をコマンドラインから実行できるようにするプランを考えた。 これによって、UI操作なしで大量のPDFファイルに対して一括でアレコレの操作が可能 …

no image

zlibの研究結果

zip圧縮・解凍のフリーソフトであるzlibについていろいろと調べた結果。最新版の1.2.11を使ってzlibwapi.dllを作ることはできたが、それを実際に使ってみるとまともに動かなかった。圧縮は …

no image

いたちごっこ2

恐るべしクラッカー。万全と思われた対策も空しく、2回目のクラックが行われたところから話は始まります。 ●2度目のクラック 開発者は、某シリアル系クラックサイトで2度目の衝撃の遭遇しました。クラック結果 …

no image

random

JavaScriptと格闘してみたよ。 テーマはランダム。 10個の画像の中から、任意の3個の画像をWebサイトに表示する、 ってのが要求仕様。 Math.floor(Math.random() * …