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

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

高速なPDFビューアをC#とPDFiumでサクっと作ってみよう!

どんなPDFビューアを作ったのかというと、こんなモノ。 開いたPDFがCADの図面っぽいが、れっきとしたPDFファイルであり、ベクトル情報をちゃんと表現しているかを明らかにしたかったので使ったデータ。 …

Hyper-Vのvhdxを圧縮するのはPowerShellでやるんだけど、その自動化手法がおもしろいじゃん(2)

Hyper-Vのvhdxを圧縮するのはPowerShellでやるんだけど、その自動化手法がおもしろいじゃんの続き。以下2点の改修をしたスクリプトを作ってみた。 ・vhdファイルが存在しなければ、エラー …

no image

プロパティシート

ソフト開発の話です。 私はVC6でソフトを作ってます。 ダイアログボックスの作りこみは、おもしろいものです。 プログラマーにとっては、デザイン的センスを問われる分野ですかね。 プロパティシートとは、ペ …

no image

アプリでzip圧縮と解凍をやりたくてzlibを組み込んでみたんだけど。。

でかいファイルは、圧縮してコンパクトに扱いたくなる。 テキスト形式で定義されているファイルをアプリで読み書きする。 テキストは圧縮すれば1/5くらいになるので、その結果小さくなった ファイルをアプリの …

no image

C++

プログラム言語で唯一まともに使えるのがC++だったりするおいらなわけだが、 C++のことをずいぶん知っているかというとそうでもなかったりする。 absという関数があって、絶対値を求めるものだっていうの …