按名称查询 Windows 字体
项目描述
windows-fonts
枚举和发现 Windows 上的字体
为什么这个模块存在
大多数(所有?)Python 模块在将文本渲染到图像时(如 matplotlib、PIL/Pillow 等)需要在 Windows 上指定一个 文件名,但在其他平台上却愿意接受字体名,这对于跨平台来说很讨厌,并且需要用户进行一些“繁琐”的操作来发现特定字体的文件。
概述
>>> from windows_fonts import FontCollection, Weight
>>> fonts = FontCollection()
>>> # Get the first variant (light/regular/bold etc) for a named family
>>> family = fonts['Arial']
>>> variant = family[0]
>>> variant
<FontVariant name=Regular, family=<FontFamily name="Arial">, style=Style.NORMAL weight=Weight.REGULAR>
>>> print(variant.filename, variant.weight, variant.style)
C:\WINDOWS\FONTS\ARIAL.TTF Weight.REGULAR Style.NORMAL
>>> # Find the "closest" variant for a given family
>>> variant = family.get_best_variant(weight=Weight.BOLD) # Or `style=Style.ITALIC, or both
>>> variant
<FontVariant name=Bold, family=<FontFamily name="Arial">, style=Style.NORMAL weight=Weight.BOLD>
>>> # Or to find all "matching" variants in priority order:
>>> for variant in family.get_matching_variants(weight=Weight.BOLD):
... variant
...
<FontVariant name=Bold, family=<FontFamily name="Arial">, style=Style.NORMAL weight=Weight.BOLD>
<FontVariant name=Bold, family=<FontFamily name="Arial">, style=Style.NORMAL weight=Weight.BOLD>
<FontVariant name=Black, family=<FontFamily name="Arial">, style=Style.NORMAL weight=Weight.BLACK>
<FontVariant name=Narrow Bold, family=<FontFamily name="Arial">, style=Style.NORMAL weight=Weight.BOLD>
<FontVariant name=Narrow Bold, family=<FontFamily name="Arial">, style=Style.NORMAL weight=Weight.BOLD>
<FontVariant name=Bold Italic, family=<FontFamily name="Arial">, style=Style.ITALIIC weight=Weight.BOLD>
<FontVariant name=Italic Bold, family=<FontFamily name="Arial">, style=Style.ITALIIC weight=Weight.BOLD>
<FontVariant name=Narrow Bold Italic, family=<FontFamily name="Arial">, style=Style.ITALIIC weight=Weight.BOLD>
<FontVariant name=Narrow Italic Bold, family=<FontFamily name="Arial">, style=Style.ITALIIC weight=Weight.BOLD>
查找特定的字体变体
一些字体家族是聚合的,例如 Arial 和 Arial Narrow 都被 Win32 API 放在了“Arial”家族下。但是,如果您想要直接获取 Arial Narrow 字体的文件,您需要使用顶级的 get_matching_variants
函数
>>> get_matching_variants(win32_family_names="Arial Narrow")
[<FontVariant name=Narrow, family=<FontFamily name="Arial">, style=Style.NORMAL weight=Weight.REGULAR>,
<FontVariant name=Narrow Italic, family=<FontFamily name="Arial">, style=Style.ITALIIC weight=Weight.REGULAR>,
<FontVariant name=Narrow Bold, family=<FontFamily name="Arial">, style=Style.NORMAL weight=Weight.BOLD>,
<FontVariant name=Narrow Bold Italic, family=<FontFamily name="Arial">, style=Style.ITALIIC weight=Weight.BOLD>]
或者如果您已经知道完整的名称
>>> get_matching_variants(full_name="Arial Narrow Bold Italic")
[<FontVariant name=Narrow Bold Italic, family=<FontFamily name="Arial">, style=Style.ITALIIC weight=Weight.BOLD>]
获取字体变体的信息
.information
是一个类似于字典的对象。一些键可能不是每个字体都有的。
>>> info = variant.information
>>> import pprint
>>> pprint.pprint(dict(info))
{'copyright': '© 2008 The Monotype Corporation. All Rights Reserved.',
'description': ...,
'designer': 'Robin Nicholas, Patricia Saunders',
'full_name': 'Arial Narrow Italic',
'license_description': ...,
'manufacturer': 'The Monotype Corporation',
'postscript_name': 'ArialNarrow-Italic',
'preferred_family_names': 'Arial',
'preferred_subfamily_names': 'Narrow Italic',
'trademark': 'Arial is a trademark of The Monotype Corporation in the United '
'States and/or other countries.',
'typographic_subfamily_names': 'Narrow Italic',
'typographic_family_names': 'Arial',
'versions': 'Version 2.40',
'win32_family_names': 'Arial Narrow',
'win32_subfamily_names': 'Italic'}
要求
Python >= 3.7
Windows Vista 及以上版本
某些函数或方法需要 Windows 10(顶级函数 get_matching_variants
以及在带有 width
、slant
、optical_size
或 italic
参数时调用 FontFamily.get_matching_variants
)。
项目详情
下载文件
下载适用于您平台的项目文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分布
windows_fonts-1.0.0.tar.gz (22.1 kB 查看哈希值)
构建分布
windows_fonts-1.0.0-cp39-none-win_amd64.whl (198.1 kB 查看哈希值)
windows_fonts-1.0.0-cp38-none-win_amd64.whl (197.6 kB 查看哈希值)
windows_fonts-1.0.0-cp37-none-win_amd64.whl (197.7 kB 查看哈希值)
关闭
windows_fonts-1.0.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b87e8ee54936fd9a46b9d23f84011e076044c15febf40a902ffb289a89f1b26f |
|
MD5 | 098bff3a1a3df3ece66b3318d065bc5a |
|
BLAKE2b-256 | ba575d66d0b9464582993ef54b810e63de482134b1cc7223a9edf10dab9dc301 |
关闭
windows_fonts-1.0.0-cp311-none-win_amd64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2426cda4cb5839166f74e7bb78cc20c66546873667fbbd7a78be0b365d1536db |
|
MD5 | adc5bc2f2d134e23bff6594f2f276277 |
|
BLAKE2b-256 | ffd6641de124bdc73eda758ceec30440c7a6c830d675821d9bd6c343bcf817bd |
关闭
windows_fonts-1.0.0-cp310-none-win_amd64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 05a20d9ebe29fd993eba1b9f9489b5978631c7a28e6cb47ccfa315940ebfa3a0 |
|
MD5 | a0a3c36d68702ea005acf8b883b65bc2 |
|
BLAKE2b-256 | b866097e1b715d49687cd38ab94710d8ddb6546a59f6c2beafe5dc68d436d9a3 |
关闭
windows_fonts-1.0.0-cp39-none-win_amd64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2b7c5f76525b15e2c1139062dd4bf4693bc2ce72e4d3f9a08c6a178e0026a603 |
|
MD5 | 72a4877d8ab237e5d29961ff1bfd3a0c |
|
BLAKE2b-256 | f009cead05bc9411acf702cbca4ba389e1387fcfeddaae1d436e2d8ff8504759 |
关闭
windows_fonts-1.0.0-cp38-none-win_amd64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 51585401b3677204ea84bc1db2b46439960cd9fb7fda32b9b95fbb41823113c8 |
|
MD5 | 0f9f7e869d37e04067b09815afd8466e |
|
BLAKE2b-256 | ad323b14e6b3994daebe813afce062d451898dbc1f923e475026b3b4a97afeb3 |
关闭
windows_fonts-1.0.0-cp37-none-win_amd64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ff8fd5d351d32ad03f44b20e990833fcef9411d76035961822b80c7053f81848 |
|
MD5 | 41f3541a89e885946a9181a60ac9b221 |
|
BLAKE2b-256 | 0ea8fd8af2430b56e6dc6416b106e71462499925c87992d21780b9429d898629 |