跳转到主要内容

按名称查询 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 以及在带有 widthslantoptical_sizeitalic 参数时调用 FontFamily.get_matching_variants)。

项目详情


下载文件

下载适用于您平台的项目文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

windows_fonts-1.0.0.tar.gz (22.1 kB 查看哈希值)

上传时间

构建分布

windows_fonts-1.0.0-cp311-none-win_amd64.whl (197.8 kB 查看哈希值)

上传时间 CPython 3.11 Windows x86-64

windows_fonts-1.0.0-cp310-none-win_amd64.whl (197.8 kB 查看哈希值)

上传时间 CPython 3.10 Windows x86-64

windows_fonts-1.0.0-cp39-none-win_amd64.whl (198.1 kB 查看哈希值)

上传时间 CPython 3.9 Windows x86-64

windows_fonts-1.0.0-cp38-none-win_amd64.whl (197.6 kB 查看哈希值)

上传时间 CPython 3.8 Windows x86-64

windows_fonts-1.0.0-cp37-none-win_amd64.whl (197.7 kB 查看哈希值)

上传时间 CPython 3.7 Windows x86-64

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面