pyglet.font

加载字体。

Pyglet将自动加载任何系统安装的字体。您可以使用以下命令添加其他字体(例如,从您的程序资源) add_file()add_directory() 。这些字体的可用方式与系统安装的字体相同:

from pyglet import font
font.add_file('action_man.ttf')
action_man = font.load('Action Man', 16)
# or
from pyglet import resource
resource.add_font('action_man.ttf')
action_man = font.load('Action Man')

请参阅 pyglet.font.base 模块,以获取有关此包使用的基类的文档。

add_directory(directory: str) None

将字体目录添加到pyglet的搜索路径。

此函数简单地调用 pyglet.font.add_file() 对于每个具有 .ttf 给定目录中的扩展名。不搜索子目录。

参数:

directory (str) -- 包含字体文件的目录。

返回类型:

None

add_file(font: str | BinaryIO) None

将字体添加到pyglet的搜索路径。

为了加载系统上未安装的字体,您必须调用此方法来告诉pyglet它存在。您可以提供文件名或任何类似文件的对象。

字体格式取决于平台,但通常是包含单个字体的TrueType字体文件。请注意,要使用通过此方法添加的字体,应将Face名称(而不是文件名)传递给 :meth:pyglet.font.load() 或通常指定字体的任何其他位置。

参数:

font (str | BinaryIO) -- 要从中加载字体的文件名或类似文件的对象。

返回类型:

None

add_user_font(font: UserDefinedFontBase) None

添加用户创建的自定义字体。

需要对字体对象应用强引用,否则侏儒以后可能找不到该字体。

参数:

font (UserDefinedFontBase) -- 用户定义的字体类实例。

抛出:

Exception -- 如果提供的字体不是源自 UserDefinedFontBase

返回类型:

None

have_font(name: str) bool

检查系统数据库或用户字体数据库中是否有指定的字体名称。

返回类型:

bool

load(
name: str | Iterable[str] | None = None,
size: float | None = None,
bold: bool | str = False,
italic: bool | str = False,
stretch: bool | str = False,
dpi: int | None = None,
) Font

加载用于呈现的字体。

参数:
  • name (str | Iterable[str] | None) -- 字体系列,例如“Times New Roman”。 如果提供了名称列表,则使用与已知字体匹配的第一个名称。 如果没有字体可以与名称匹配,则使用默认字体。默认字体将取决于平台。

  • size (float | None) -- 字体大小,以磅为单位。返回的字体可能完全匹配,也可能是最接近的可用字体。

  • bold (bool | str) -- 如果为True,则返回一个粗体变体(如果给定系列和规模存在)。对于某些字体渲染器,粗体是字体的权重,并且可以提供一个字符串来指定权重。例如,“半粗体”或“浅色”。

  • italic (bool | str) -- 如果为True,则返回一个Italian变体(如果给定的族和规模存在)。对于某些字体渲染器,Italian可能有“倾斜”变体,可以指定为字符串。

  • stretch (bool | str) -- 如果为True,则返回拉伸变体(如果给定族和大小存在)。 目前仅通过Windows支持 DirectWrite 字体渲染器。例如,“浓缩”或“扩展”。

  • dpi (int | None) -- int显示设备的假设分辨率,用于确定字体的像素大小。 切换到96。

返回类型:

Font

pyglet.font.user

该模块定义了Pyglet中用户定义字体的使用和创建。

此前,pyglet仅支持内置在操作系统中的字体渲染器,例如 FreeTypeDirectWrite ,或 Quartz .然而,在某些情况下,用户可能不想要或不需要字体可以提供的所有功能。他们只需要将字符按特定顺序放置,而无需麻烦地输出到单独的文件中。

这个 UserDefinedMappingFont 为大多数用例提供,这将允许您制作可用于 font_name 需要识别字体。

用户定义的字体也通过其名称来标识。您选择的名称应该是唯一的,以确保它不会与系统字体冲突。例如,不要使用 Arial ,因为这会与Windows系统发生冲突。

使用 UserDefinedMappingFont 您可以传递指向您的字符映射 ImageData

mappings={'c': my_image_data, 'b': my_image_data, 'a': my_image_data}

对于更多自定义行为,可以使用类似于dict的对象,例如类。

class MyCustomMapping:
    def get(self, char: str) -> ImageData | None:
        # return ImageData if a character is found.
        # return None if no character is found

mappings = MyCustomMapping()
创建字体后,您还必须在pyglet中注册它才能使用它。这可以通过

add_user_font() 功能。

当您注册用户定义的字体时,仅使用这些参数来识别字体。如果您有字体,但想要有 bold 启用版本。您必须创建字体的新实例,但要使用 bold 参数设置为 True .同样适用于 size 参数。

结垢

默认情况下,用户字体不会被缩放。在大多数用例中,您需要使用特定大小的单一字体。

在某些情况下,用户可能想要缩放其字体以使用任何尺寸。我们提供以下功能: get_scaled_user_font() .通过提供用户定义的字体实例和新大小,您将获得一个扩展到新大小的新字体实例。此新实例也必须以与基本字体相同的方式注册。

指定url时 size 参数,该值用于确定新大小之间的缩放比例。因此,如果您的基本字体大小为12,则创建24大小的缩放版本将是基本字体大小的两倍。

警告

这个 PIL 库是使用扩展功能所需的依赖项。

Added in version 2.0.15.

exception UserDefinedFontException

与用户字体创建相关的异常。

class UserDefinedFontBase

用作所有用户定义字体的基础。

Added in version 2.0.15.

glyph_renderer_class

UserDefinedGlyphRenderer 的别名

__init__(
name: str,
default_char: str,
size: int,
ascent: int | None = None,
descent: int | None = None,
bold: bool = False,
italic: bool = False,
stretch: bool = False,
dpi: int = 96,
locale: str | None = None,
) None

初始化用户定义的字体。

参数:
  • name (str) -- 字体名称。用于识别字体。必须是唯一的,以确保它不会与任何系统字体冲突。

  • default_char (str) -- 如果字体中找不到字符串中的字符,它将使用此作为后备。

  • size (int) -- 字体大小,通常以像素为单位。

  • ascent (int | None) -- 基线以上的最大上升(以像素为单位)。如果无,则使用图像高度。

  • descent (int | None) -- 基线以下的最大下降(以像素为单位)。通常是负面的。

  • bold (bool) -- 如果为True,则将在以下情况下使用此字体 bold 为字体名称启用。

  • italic (bool) -- 如果为True,则将在以下情况下使用此字体 italic 为字体名称启用。

  • stretch (bool) -- 如果为True,则将在以下情况下使用此字体 stretch 为字体名称启用。

  • dpi (int) -- 显示设备的假设分辨率,用于确定字体的像素大小。对于标准大小,使用默认值96。

  • locale (str | None) -- 用于指定此字体的区域设置。

enable_scaling(base_size: int) None
返回类型:

None

property name: str

以字符串形式返回字体的族名。

class UserDefinedMappingFont

该类允许从一组映射创建用户定义的字体。

Added in version 2.0.15.

__init__(
name: str,
default_char: str,
size: int,
mappings: DictLikeObject,
ascent: int | None = None,
descent: int | None = None,
bold: bool = False,
italic: bool = False,
stretch: bool = False,
dpi: int = 96,
locale: str | None = None,
) None

初始化字体的默认参数。

参数:
  • name (str) -- 字体名称。必须是唯一的,以确保它不会与任何系统字体冲突。

  • default_char (str) -- 如果字体中找不到字符串中的字符,它将使用此作为后备。

  • size (int) -- 字体大小。应该以像素为单位。如果启用,此值将影响扩展。

  • mappings (DictLikeObject) -- 带有 get 功能。这个 get 函数必须接受字符串字符并输出 ImageData 如果找到的话。它也必须返回 None 如果没有找到字符。

  • ascent (int | None) -- 基线以上的最大上升(以像素为单位)。如果无,则使用图像高度。

  • descent (int | None) -- 基线以下的最大下降(以像素为单位)。通常是负面的。

  • bold (bool) -- 如果 True ,此字体将用于 bold 为字体名称启用。

  • italic (bool) -- 如果 True ,此字体将用于 italic 为字体名称启用。

  • stretch (bool) -- 如果 True ,此字体将用于 stretch 为字体名称启用。

  • dpi (int) -- 显示设备的假设分辨率,用于确定字体的像素大小。对于标准大小,使用默认值96。

  • locale (str | None) -- 用于指定此字体的区域设置。

enable_scaling(base_size: int) None

启用缩放字体大小。

参数:

base_size (int) -- 基本尺寸用于计算新尺寸与原始尺寸之间的比率。

返回类型:

None

get_glyphs(text: str) list[Glyph]

创建并返回Glyphs列表 text

如果任何字符在此字体中没有已知的字形表示,则将用 default_char

返回类型:

list[Glyph]

get_scaled_user_font(
font_base: UserDefinedMappingFont,
size: int,
) UserDefinedMappingFont

此函数将返回一个新的字体实例,该实例可以根据原始基本字体缩放其大小。

备注

扩展功能需要安装PIL库。

Added in version 2.0.15.

参数:
  • font_base (UserDefinedMappingFont) -- 要创建新大小的基本字体对象。

  • size (int) -- 新的字体大小。这将根据基本大小和新大小之间的比例进行缩放。

返回类型:

UserDefinedMappingFont