mcfonts.render¶
A simple font rendering module. This is experimental, rudimentary, and should not be relied upon.
Submodules¶
Package Contents¶
- class Glyph¶
Bases:
abc.ABCThe Glyph class represents any visible character glyph.
Glyphs are immutable. To change them, create another with different fields and overwrite the previous glyph.
- abstractmethod bake() PIL.Image.Image¶
Return a image rendering of this glyph.
This does not include any right padding.
- Return type:¶
PIL.Image.Image
- abstractmethod get_metrics() GlyphMetrics¶
Return the metrics of this glyph.
- is_empty() bool¶
Return if glyph is entirely empty.
- class MinecraftFont¶
Bases:
collections.abc.MutableSequence[mcfonts.provider.Provider[mcfonts.glyph.Glyph]]The MinecraftFont class contains a list of providers which supply character-glyph mappings.
By default, these do not have any "not defined" glyphs. Items that expect such default fallbacks must generate their own. You can manually create and add a
NotdefProvideror similar that implements it.This class is a MutableSequence:
font = MinecraftFont() BitmapProvider(...) in font glyph = font.get_first_provider_covering("A") del font[BitmapProvider(...)] for provider in font: ... if len(font) > 0: ... if font: ...- __getitem__(index: int) mcfonts.provider.Provider[mcfonts.glyph.Glyph]¶
- __getitem__(index: slice) list[mcfonts.provider.Provider[mcfonts.glyph.Glyph]]
- __iter__() collections.abc.Generator[mcfonts.provider.Provider[mcfonts.glyph.Glyph]]¶
- Return type:¶
collections.abc.Generator[mcfonts.provider.Provider[mcfonts.glyph.Glyph]]
- __reversed__() collections.abc.Generator[mcfonts.provider.Provider[mcfonts.glyph.Glyph]]¶
- Return type:¶
collections.abc.Generator[mcfonts.provider.Provider[mcfonts.glyph.Glyph]]
- __setitem__(index: int, value: mcfonts.provider.Provider[mcfonts.glyph.Glyph])¶
- __setitem__(index: slice, value: collections.abc.Iterable[mcfonts.provider.Provider[mcfonts.glyph.Glyph]])
- delete_providers_with_character(character: str) None¶
Delete all providers from this font which cover character.
- get_characters() collections.abc.Generator[str]¶
Yield all characters this font covers.
- get_first_provider_covering(character: str, /) mcfonts.provider.Provider[mcfonts.glyph.Glyph] | None¶
- get_notdef() mcfonts.provider.Provider[mcfonts.glyph.Glyph] | None¶
Return the first provider which responds to/has a glyph for the character "notdef".
- get_provider_count() dict[type[mcfonts.provider.Provider[mcfonts.glyph.Glyph]], int]¶
Return a count of the providers stored.
- Returns:¶
Dictionary of provider type field to amount.
- Return type:¶
dict[type[mcfonts.provider.Provider[mcfonts.glyph.Glyph]], int]
-
get_providers(order: PrioritySortOrder | None =
None) collections.abc.Generator[mcfonts.provider.Provider[mcfonts.glyph.Glyph]]¶ Yield providers by their priority, ascending by default.
- Parameters:¶
- order : PrioritySortOrder | None¶
Order to yield in. Default is None - insertion order regardless of priority
- Returns:¶
Generator yielding Provider.
- Return type:¶
collections.abc.Generator[mcfonts.provider.Provider[mcfonts.glyph.Glyph]]
- get_providers_covering(characters: collections.abc.Iterable[str], /) collections.abc.Generator[tuple[set[str], mcfonts.provider.Provider[mcfonts.glyph.Glyph]]]¶
Yield providers that cover at least 1 of any of the characters in characters.
Providers will be yielded at most once, and in descending priority order.
Warning
Multiple providers may overlap and cover the same character.
- Parameters:¶
- characters : collections.abc.Iterable[str]¶
Set of characters.
- Returns:¶
Generator that yields tuple of
(set of characters this provider covers, the provider).- Return type:¶
collections.abc.Generator[tuple[set[str], mcfonts.provider.Provider[mcfonts.glyph.Glyph]]]
- insert(index: int, value: mcfonts.provider.Provider[mcfonts.glyph.Glyph]) None¶
S.insert(index, value) -- insert value before index
- Parameters:¶
- index : int¶
- value : mcfonts.provider.Provider[mcfonts.glyph.Glyph]¶
- Return type:¶
None
- with_filter(game_filter: mcfonts.provider.ProviderFilter) MinecraftFont¶
Return a new font with a filter applied, including only providers which would be enabled for it.
- Parameters:¶
- game_filter : mcfonts.provider.ProviderFilter¶
ProviderFilter reflecting the game's state.
- Returns:¶
New MinecraftFont with filtered providers.
- Return type:¶
- class RenderContext(*args, **kwds)¶
Bases:
enum.EnumCreate a collection of name/value pairs.
Example enumeration:
>>> class Color(Enum): ... RED = 1 ... BLUE = 2 ... GREEN = 3Access them by:
attribute access:
>>> Color.RED <Color.RED: 1>value lookup:
>>> Color(1) <Color.RED: 1>name lookup:
>>> Color['RED'] <Color.RED: 1>
Enumerations can be iterated over, and know how many members they have:
>>> len(Color) 3>>> list(Color) [<Color.RED: 1>, <Color.BLUE: 2>, <Color.GREEN: 3>]Methods can be added to enumerations, and members can have their own attributes -- see the documentation for details.
-
ACTIONBAR =
2¶
-
CHAT =
0¶
-
DEBUG =
4¶
-
TITLE =
1¶
-
UI =
3¶
- class RenderResult¶
- advance_delta : int¶
- baseline : int¶
- image : PIL.Image.Image¶
- pre_advance_delta : int¶
- class Renderable¶
Bases:
ProtocolFunctional interface for providers to render the glyphs they contain.
- render(character: str, metrics: RenderMetrics) RenderResult | None¶
Draw a character contained in this provider.
- Parameters:¶
- character : str¶
The character to render.
- metrics : RenderMetrics¶
Current rendering metrics.
- Returns:¶
RenderResult, or
Noneif character cannot be rendered by this provider.- Return type:¶
RenderResult | None
-
alpha_paste(first: PIL.Image.Image, second: PIL.Image.Image, offset: tuple[int, int], mask: PIL.Image.Image | None =
None) PIL.Image.Image¶
- apply_render(canvas: PIL.Image.Image, rendered: RenderResult, metrics: RenderMetrics) PIL.Image.Image¶
- Parameters:¶
- canvas : PIL.Image.Image¶
- rendered : RenderResult¶
- metrics : RenderMetrics¶
- Return type:¶
PIL.Image.Image
-
canvas_extend(image: PIL.Image.Image, *, left: int =
0, up: int =0, right: int =0, down: int =0) PIL.Image.Image¶ Extend the canvas of an image by adding transparent space in specified directions.
- get_notdef(font: mcfonts.font.MinecraftFont, metrics: RenderMetrics) RenderResult¶
- Parameters:¶
- font : mcfonts.font.MinecraftFont¶
- metrics : RenderMetrics¶
- Return type:¶
-
render_text(font: mcfonts.font.MinecraftFont, text: str, kerning: int =
1, scale: int =1) PIL.Image.Image¶ Render text with font.
- resolve_caching(font: mcfonts.font.MinecraftFont, character: str, metrics: RenderMetrics, cache: collections.abc.MutableMapping[str, RenderResult], notdef: RenderResult, cached_provider: Renderable | None) tuple[RenderResult, Renderable | None]¶
- Parameters:¶
- font : mcfonts.font.MinecraftFont¶
- character : str¶
- metrics : RenderMetrics¶
- cache : collections.abc.MutableMapping[str, RenderResult]¶
- notdef : RenderResult¶
- cached_provider : Renderable | None¶
- Return type:¶
tuple[RenderResult, Renderable | None]
-
shadow(image: PIL.Image.Image, color: int | None, offset: tuple[int, int], brightness_factor: float =
SHADOW_BRIGHTNESS_FACTOR) PIL.Image.Image¶ Create a shadow on an image.
-
standard_render_glyph(glyph: mcfonts.glyph.Glyph, nominal_height: int, baseline: int, gui_scale: int =
2) RenderResult¶
- DUMMY_RENDERRESULT : Final[RenderResult]¶
- LOGGER : Final[logging.Logger]¶
- NOTDEF_FALLBACK_IMAGE : PIL.Image.Image¶