Python サンプル集 |
Visual Basic 中学校 > Python サンプル集 > 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}')
メモ:ごめんなさい。このプログラムはなかなか大変で力尽きました。参考程度にご活用ください。
メモ:同じフォント名が複数出力される場合があります。複数のフォントファイルが論理上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