mcfonts.providers.space

A space provider, defining simple widths for characters.

Module Contents

Classes

SpaceProvider

The space provider defines only the width of a character.

Functions

to_glyph_sizes(advances[, default_width])

Create a glyph_sizes.bin bytearray from a template of characters and their starting and ending positions.

class mcfonts.providers.space.SpaceProvider(provider, origin)

Bases: mcfonts.providers.base.Provider

The space provider defines only the width of a character.

It's the simplest provider: it only contains the "advances" map.

The keys of the advances are the characters as 1-length strings, and the values are the widths as integers. In mcfonts only, uniranges can also be used as the keys.

The default width for U+0020 SPACE is 4.

Construct a Provider base class.

Parameters:
provider_type

A string of the value in the JSON "type" field.

origin : os.PathLike[str] | str

The absolute path to the provider's JSON file.

chars_covered

A set of the individual characters covered by this provider.

provider : mcfonts.utils.types.TypedProviderSpace

construct_glyphs()

Yield a tuple of (character, glyph) for every glyph available in the provider's resource.

Some glyphs may be empty or have no content.

Returns:

A yield of (character, Glyph), or None if there are no glyphs.

Return type:

collections.abc.Iterable[tuple[str, mcfonts.glyphs.SpaceGlyph]]

get_contents()

Return the contents of the provider.

Returns:

Dictionary of the provider.

Return type:

mcfonts.utils.types.TypedProviderSpace

get_icon()

Return a Unicode character that can be used to represent this provider in shorthand descriptions.

Returns:

A 1-character string.

Return type:

str

get_pack_versions()

Return a tuple of the minimum and maximum pack versions for which this provider is valid.

The first element is guaranteed to be an integer. There will always be a minimum version, even if it's 0. The second element may be an integer, or None. If it is None, there is no maximum version bound.

Returns:

A 2-element tuple of the minimum and maximum valid pack versions.

Return type:

tuple[int, None]

pretty_print()

Return a short one line description of the provider.

Returns:

A string of the provider's info, normally <icon> <type>: <info,...>.

Return type:

str

print_info()

Print information about this provider.

Return type:

None

validate()

Specific tests for validating a provider.

This function checks values to ensure that they're correct and in an acceptable range.

If applicable, textures are checked to ensure all characters have a defined glyph, and that the dimensions are correct.

Warnings are printed through mcfonts.logger.warning().

Returns:

Nothing; problems are either raised or warned.

Return type:

None

yield_characters()

Yield strings of the individual characters this provider supports.

Returns:

A yield of strings of length 1, or None if no characters are present.

Return type:

collections.abc.Iterable[str]

yield_glyphs()

Yield a tuple of (character, glyph) for every glyph available in the provider's resource.

This is different from construct_glyphs() because it yields glyphs that have already been constructed and stored.

Returns:

A yield of (character, Glyph).

Return type:

collections.abc.Iterable[tuple[str, mcfonts.glyphs.SpaceGlyph]]

yield_glyphs_in_unirange(unirange_notation)

Given unirange_notation, return a dictionary of the requested characters to their glyphs.

Parameters:
unirange_notation : str

A string representing the requested range of chars. See https://pypi.org/project/unirange/.

Returns:

A yield of the requested glyphs that match unirange_notation.

Return type:

collections.abc.Iterable[tuple[str, mcfonts.glyphs.SpaceGlyph | None]]

mcfonts.providers.space.to_glyph_sizes(advances, default_width=(0, 14))

Create a glyph_sizes.bin bytearray from a template of characters and their starting and ending positions.

>>> to_glyph_sizes({"\0": 15}, (0, 0))
bytearray(b'\x0e\x00\x00\x00...')
Parameters:
advances : dict[str, int]

A dictionary of {character: width}.

default_width : tuple[int, int]

The width to fall back to if advances doesn't define one for a character.

Returns:

Bytearray of glyph_sizes.bin.

Return type:

bytearray


Last update: 2023 November 30