ヘッダー
Python サンプル集
 

インストールされているフォント名を列挙する

2022/11/6

→ C# のサンプルに切り替える → Visual Basic のサンプルに切り替える

 

インストールされているフォントの名前を日本語と英語で列挙する

この例は Windows のみを対象としています。

from fontTools.ttLib import TTFont
import glob
import os

fontPath = r'C:\Windows\Fonts'

for fileName in glob.glob(f'{fontPath}\*'):
    if not (fileName.upper().endswith('.TTF') or fileName.upper().endswith('.TTC')):
        #拡張子 .ttf または .ttc 以外のファイルは扱いません。
        continue

    font = TTFont(fileName, fontNumber=0)
    names = font['name'].names

    jpName = ''
    enName = ''

    for name in names:
        #platformID 3 は Windows です。Windowsだけ対応しました。(力尽きました。)
        #https://learn.microsoft.com/ja-jp/typography/opentype/spec/name

        #日本語でのフォント名(存在しない場合もあります) 
        if name.platformID == 3 and name.langID == 0x0411 and name.nameID == 1:
            jpName = name.string.decode('utf-16-be')

        #英語でのフォント名
        if name.platformID == 3 and name.langID == 0x0409 and name.nameID == 1:
            enName = name.string.decode('utf-16-be')

    print(f'{enName} ({jpName})')

メモ:ごめんなさい。このプログラムはなかなか大変で力尽きました。参考程度にご活用ください。

メモ:同じフォント名が複数出力される場合があります。複数のフォントファイルが論理上1つのフォントを構成する場合があるからです。

メモ:このプログラムを実行するには fonttools をインストールする必要があります。その一般的な方法は pip install fonttools コマンドの実行です。fonttoolsについてはこちらを参照してください。 https://fonttools.readthedocs.io/en/latest/

メモ:実行するとたとえば次のように出力されます。(これは抜粋です。もっとたくさん出力されます。)

Verdana ()
Verdana ()
Webdings ()
Wingdings ()
Wingdings 2 ()
Wingdings 3 ()
Yu Gothic (游ゴシック)
Yu Gothic Light (游ゴシック Light)
Yu Gothic Medium (游ゴシック Medium)

 

 

インストールされているフォントの名前を登録されている全言語で列挙する

この例は Windows のみを対象としています。

from fontTools.ttLib import TTFont
import glob
import os

fontPath = r'C:\Windows\Fonts'

for fileName in glob.glob(f'{fontPath}\*'):
    if not (fileName.upper().endswith('.TTF') or fileName.upper().endswith('.TTC')):
        #拡張子 .ttf または .ttc 以外のファイルは扱いません。
        continue

    font = TTFont(fileName, fontNumber=0)
    names = font['name'].names

    print('')

    for name in names:
        #platformID 3 は Windows です。Windowsだけ対応しました。(力尽きました。)
        #https://learn.microsoft.com/ja-jp/typography/opentype/spec/name

        if name.platformID == 3 and name.nameID == 1:
            langID = name.langID
            fontName = name.string.decode('utf-16-be')
            print(f'{langID}: {fontName}') 

Debug.WriteLineが表示される場所

メモ:ごめんなさい。このプログラムはなかなか大変で力尽きました。参考程度にご活用ください。

メモ:同じフォント名が複数出力される場合があります。複数のフォントファイルが論理上1つのフォントを構成する場合があるからです。

メモ:このプログラムを実行するには fonttools をインストールする必要があります。その一般的な方法は pip install fonttools コマンドの実行です。fonttoolsについてはこちらを参照してください。 https://fonttools.readthedocs.io/en/latest/

メモ:1033、1041などの langID は 1033 が英語、1041が日本語です。参考(16進数で掲載されています):https://learn.microsoft.com/ja-jp/typography/opentype/spec/name

 メモ:実行するとたとえば次のように出力されます。(これは抜粋です。もっとたくさん出力されます。)

1033: Malgun Gothic Semilight
1042: 맑은 고딕 Semilight

1033: Marlett

1033: Meiryo
1041: メイリオ

1033: Meiryo
1041: メイリオ

1033: Microsoft Sans Serif

1028: 細明體-ExtB
1033: MingLiU-ExtB
3076: 細明體-ExtB