pyface.util.font_parser module

exception pyface.util.font_parser.FontParseError[source]

Bases: ValueError

An exception raised when font parsing fails.

pyface.util.font_parser.simple_parser(description)[source]

An extremely simple font description parser.

The parser is simple, and works by splitting the description on whitespace and examining each resulting token for understood terms:

Size

The first numeric term is treated as the font size.

Weight

The following weight terms are accepted: ‘thin’, ‘extra-light’, ‘light’, ‘regular’, ‘medium’, ‘demi-bold’, ‘bold’, ‘extra-bold’, ‘heavy’, ‘extra-heavy’.

Stretch

The following stretch terms are accepted: ‘ultra-condensed’, ‘extra-condensed’, ‘condensed’, ‘semi-condensed’, ‘semi-expanded’, ‘expanded’, ‘extra-expanded’, ‘ultra-expanded’.

Style

The following style terms are accepted: ‘italic’, ‘oblique’.

Variant

The following variant terms are accepted: ‘small-caps’.

Decorations

The following decoration terms are accepted: ‘underline’, ‘strikethrough’, ‘overline’.

Generic Families

The following generic family terms are accepted: ‘default’, ‘fantasy’, ‘decorative’, ‘serif’, ‘roman’, ‘cursive’, ‘script’, ‘sans-serif’, ‘swiss’, ‘monospace’, ‘modern’, ‘typewriter’, ‘teletype’.

In addtion, the parser ignores the terms ‘pt’, ‘point’, ‘px’, and ‘family’. Any remaining terms are combined into the typeface name. There is no expected order to the terms.

This parser is roughly compatible with the various ad-hoc parsers in TraitsUI and Kiva, allowing for the slight differences between them and adding support for additional options supported by Pyface fonts, such as stretch and variants.

Parameters

description (str) – The font description to be parsed.

Returns

properties – Font properties suitable for use in creating a Pyface Font.

Return type

dict

Notes

This is not a particularly good parser, as it will fail to properly parse something like “10 pt times new roman” or “14 pt computer modern” since they have generic font names as part of the font face name.