FontDescription
- class FontDescription(*args, **kwargs)
- Constructors:
new() -> Pango.FontDescription
Constructors
- class FontDescription
- classmethod new() FontDescription
Creates a new font description structure with all fields unset.
Methods
- class FontDescription
- better_match(old_match: FontDescription | None, new_match: FontDescription) bool
Determines if the style attributes of
new_match
are a closer match fordesc
than those ofold_match
are, or ifold_match
isNone
, determines ifnew_match
is a match at all.Approximate matching is done for weight and style; other style attributes must match exactly. Style attributes are all attributes other than family and size-related attributes. Approximate matching for style considers
OBLIQUE
andITALIC
as matches, but not as good a match as when the styles are equal.Note that
old_match
must matchdesc
.- Parameters:
old_match – a
PangoFontDescription
, orNone
new_match – a
PangoFontDescription
- equal(desc2: FontDescription) bool
Compares two font descriptions for equality.
Two font descriptions are considered equal if the fonts they describe are provably identical. This means that their masks do not have to match, as long as other fields are all the same. (Two font descriptions may result in identical fonts being loaded, but still compare
False
.)- Parameters:
desc2 – another
PangoFontDescription
- from_string(str: str) FontDescription
Creates a new font description from a string representation.
The string must have the form
“[FAMILY-LIST] [STYLE-OPTIONS] [SIZE] [VARIATIONS]”,
where FAMILY-LIST is a comma-separated list of families optionally terminated by a comma, STYLE_OPTIONS is a whitespace-separated list of words where each word describes one of style, variant, weight, stretch, or gravity, and SIZE is a decimal number (size in points) or optionally followed by the unit modifier “px” for absolute size. VARIATIONS is a comma-separated list of font variation specifications of the form “``axis``=value” (the = sign is optional).
The following words are understood as styles: “Normal”, “Roman”, “Oblique”, “Italic”.
The following words are understood as variants: “Small-Caps”, “All-Small-Caps”, “Petite-Caps”, “All-Petite-Caps”, “Unicase”, “Title-Caps”.
The following words are understood as weights: “Thin”, “Ultra-Light”, “Extra-Light”, “Light”, “Semi-Light”, “Demi-Light”, “Book”, “Regular”, “Medium”, “Semi-Bold”, “Demi-Bold”, “Bold”, “Ultra-Bold”, “Extra-Bold”, “Heavy”, “Black”, “Ultra-Black”, “Extra-Black”.
The following words are understood as stretch values: “Ultra-Condensed”, “Extra-Condensed”, “Condensed”, “Semi-Condensed”, “Semi-Expanded”, “Expanded”, “Extra-Expanded”, “Ultra-Expanded”.
The following words are understood as gravity values: “Not-Rotated”, “South”, “Upside-Down”, “North”, “Rotated-Left”, “East”, “Rotated-Right”, “West”.
Any one of the options may be absent. If FAMILY-LIST is absent, then the family_name field of the resulting font description will be initialized to
None
. If STYLE-OPTIONS is missing, then all style options will be set to the default values. If SIZE is missing, the size in the resulting font description will be set to 0.A typical example:
“Cantarell Italic Light 15 ``wght``=200”
- Parameters:
str – string representation of a font description.
- get_family() str | None
Gets the family name field of a font description.
See
set_family
.
- get_gravity() Gravity
Gets the gravity field of a font description.
See
set_gravity
.Added in version 1.16.
- get_size_is_absolute() bool
Determines whether the size of the font is in points (not absolute) or device units (absolute).
See
set_size
andset_absolute_size
.Added in version 1.8.
- get_stretch() Stretch
Gets the stretch field of a font description.
See
set_stretch
.
- get_variant() Variant
Gets the variant field of a
PangoFontDescription
.See
set_variant
.
- get_variations() str | None
Gets the variations field of a font description.
See
set_variations
.Added in version 1.42.
- get_weight() Weight
Gets the weight field of a font description.
See
set_weight
.
- hash() int
Computes a hash of a
PangoFontDescription
structure.This is suitable to be used, for example, as an argument to
new()
. The hash value is independent ofdesc
->mask.
- merge(desc_to_merge: FontDescription | None, replace_existing: bool) None
Merges the fields that are set in
desc_to_merge
into the fields indesc
.If
replace_existing
isFalse
, only fields indesc
that are not already set are affected. IfTrue
, then fields that are already set will be replaced as well.If
desc_to_merge
isNone
, this function performs nothing.- Parameters:
desc_to_merge – the
PangoFontDescription
to merge from, orNone
replace_existing – if
True
, replace fields indesc
with the corresponding values fromdesc_to_merge
, even if they are already exist.
- merge_static(desc_to_merge: FontDescription, replace_existing: bool) None
Merges the fields that are set in
desc_to_merge
into the fields indesc
, without copying allocated fields.This is like
merge
, but only a shallow copy is made of the family name and other allocated fields.desc
can only be used untildesc_to_merge
is modified or freed. This is meant to be used when the merged font description is only needed temporarily.- Parameters:
desc_to_merge – the
PangoFontDescription
to merge fromreplace_existing – if
True
, replace fields indesc
with the corresponding values fromdesc_to_merge
, even if they are already exist.
- set_absolute_size(size: float) None
Sets the size field of a font description, in device units.
This is mutually exclusive with
set_size
which sets the font size in points.Added in version 1.8.
- Parameters:
size – the new size, in Pango units. There are
SCALE
Pango units in one device unit. For an output backend where a device unit is a pixel, asize
value of 10 * PANGO_SCALE gives a 10 pixel font.
- set_family(family: str) None
Sets the family name field of a font description.
The family name represents a family of related font styles, and will resolve to a particular
PangoFontFamily
. In some uses ofPangoFontDescription
, it is also possible to use a comma separated list of family names for this field.- Parameters:
family – a string representing the family name.
- set_family_static(family: str) None
Sets the family name field of a font description, without copying the string.
This is like
set_family
, except that no copy offamily
is made. The caller must make sure that the string passed in stays around untildesc
has been freed or the name is set again. This function can be used iffamily
is a static string such as a C string literal, or ifdesc
is only needed temporarily.- Parameters:
family – a string representing the family name
- set_gravity(gravity: Gravity) None
Sets the gravity field of a font description.
The gravity field specifies how the glyphs should be rotated. If
gravity
isAUTO
, this actually unsets the gravity mask on the font description.This function is seldom useful to the user. Gravity should normally be set on a
PangoContext
.Added in version 1.16.
- Parameters:
gravity – the gravity for the font description.
- set_size(size: int) None
Sets the size field of a font description in fractional points.
This is mutually exclusive with
set_absolute_size
.- Parameters:
size – the size of the font in points, scaled by
SCALE
. (That is, asize
value of 10 * PANGO_SCALE is a 10 point font. The conversion factor between points and device units depends on system configuration and the output device. For screen display, a logical DPI of 96 is common, in which case a 10 point font corresponds to a 10 * (96 / 72) = 13.3 pixel font. Useset_absolute_size
if you need a particular size in device units.
- set_stretch(stretch: Stretch) None
Sets the stretch field of a font description.
The
Stretch
field specifies how narrow or wide the font should be.- Parameters:
stretch – the stretch for the font description
- set_style(style: Style) None
Sets the style field of a
PangoFontDescription
.The
Style
enumeration describes whether the font is slanted and the manner in which it is slanted; it can be eitherNORMAL
,ITALIC
, orOBLIQUE
.Most fonts will either have a italic style or an oblique style, but not both, and font matching in Pango will match italic specifications with oblique fonts and vice-versa if an exact match is not found.
- Parameters:
style – the style for the font description
- set_variant(variant: Variant) None
Sets the variant field of a font description.
The
Variant
can either beNORMAL
orSMALL_CAPS
.- Parameters:
variant – the variant type for the font description.
- set_variations(variations: str | None = None) None
Sets the variations field of a font description.
OpenType font variations allow to select a font instance by specifying values for a number of axes, such as width or weight.
The format of the variations string is
AXIS1=VALUE,AXIS2=VALUE…
with each AXIS a 4 character tag that identifies a font axis, and each VALUE a floating point number. Unknown axes are ignored, and values are clamped to their allowed range.
Pango does not currently have a way to find supported axes of a font. Both harfbuzz and freetype have API for this. See for example hb_ot_var_get_axis_infos.
Added in version 1.42.
- Parameters:
variations – a string representing the variations
- set_variations_static(variations: str) None
Sets the variations field of a font description.
This is like
set_variations
, except that no copy ofvariations
is made. The caller must make sure that the string passed in stays around untildesc
has been freed or the name is set again. This function can be used ifvariations
is a static string such as a C string literal, or ifdesc
is only needed temporarily.Added in version 1.42.
- Parameters:
variations – a string representing the variations
- set_weight(weight: Weight) None
Sets the weight field of a font description.
The weight field specifies how bold or light the font should be. In addition to the values of the
Weight
enumeration, other intermediate numeric values are possible.- Parameters:
weight – the weight for the font description.
- to_filename() str | None
Creates a filename representation of a font description.
The filename is identical to the result from calling
to_string
, but with underscores instead of characters that are untypical in filenames, and in lower case only.
- to_string() str
Creates a string representation of a font description.
See
from_string
for a description of the format of the string representation. The family list in the string description will only have a terminating comma if the last word of the list is a valid style option.