Welcome to Python-flavored Magnum! Please note that, while already being rather stable, this functionality is still considered experimental and some APIs might get changed without preserving full backwards compatibility.

magnum.text module

Text rendering

Classes

class AbstractFont
Interface for font plugins
class AbstractGlyphCache
Base for glyph caches
class AbstractShaper
Base for text shapers
class DistanceFieldGlyphCacheGL
OpenGL glyph cache with distance field rendering
class FeatureRange
OpenType feature for a text range
class FontManager
Manager for AbstractFont plugin instances
class GlyphCacheGL
OpenGL implementation of a glyph cache
class Renderer
Text renderer
class RendererCore
Text renderer core
class RendererGL
OpenGL text renderer

Enums

class Alignment: LINE_LEFT = 0 LINE_LEFT_GLYPH_BOUNDS = 128 LINE_CENTER = 1 LINE_CENTER_INTEGRAL = 65 LINE_CENTER_GLYPH_BOUNDS = 129 LINE_CENTER_GLYPH_BOUNDS_INTEGRAL = 193 LINE_RIGHT = 2 LINE_RIGHT_GLYPH_BOUNDS = 130 LINE_BEGIN = 3 LINE_BEGIN_GLYPH_BOUNDS = 131 LINE_END = 4 LINE_END_GLYPH_BOUNDS = 132 BOTTOM_LEFT = 16 BOTTOM_LEFT_GLYPH_BOUNDS = 144 BOTTOM_CENTER = 17 BOTTOM_CENTER_INTEGRAL = 81 BOTTOM_CENTER_GLYPH_BOUNDS = 145 BOTTOM_CENTER_GLYPH_BOUNDS_INTEGRAL = 209 BOTTOM_RIGHT = 18 BOTTOM_RIGHT_GLYPH_BOUNDS = 146 BOTTOM_BEGIN = 19 BOTTOM_BEGIN_GLYPH_BOUNDS = 147 BOTTOM_END = 20 BOTTOM_END_GLYPH_BOUNDS = 148 MIDDLE_LEFT = 32 MIDDLE_LEFT_INTEGRAL = 96 MIDDLE_LEFT_GLYPH_BOUNDS = 160 MIDDLE_LEFT_GLYPH_BOUNDS_INTEGRAL = 224 MIDDLE_CENTER = 33 MIDDLE_CENTER_INTEGRAL = 97 MIDDLE_CENTER_GLYPH_BOUNDS = 161 MIDDLE_CENTER_GLYPH_BOUNDS_INTEGRAL = 225 MIDDLE_RIGHT = 34 MIDDLE_RIGHT_INTEGRAL = 98 MIDDLE_RIGHT_GLYPH_BOUNDS = 162 MIDDLE_RIGHT_GLYPH_BOUNDS_INTEGRAL = 226 MIDDLE_BEGIN = 35 MIDDLE_BEGIN_INTEGRAL = 99 MIDDLE_BEGIN_GLYPH_BOUNDS = 163 MIDDLE_BEGIN_GLYPH_BOUNDS_INTEGRAL = 227 MIDDLE_END = 36 MIDDLE_END_INTEGRAL = 100 MIDDLE_END_GLYPH_BOUNDS = 164 MIDDLE_END_GLYPH_BOUNDS_INTEGRAL = 228 TOP_LEFT = 48 TOP_LEFT_GLYPH_BOUNDS = 176 TOP_CENTER = 49 TOP_CENTER_INTEGRAL = 113 TOP_CENTER_GLYPH_BOUNDS = 177 TOP_CENTER_GLYPH_BOUNDS_INTEGRAL = 241 TOP_RIGHT = 50 TOP_RIGHT_GLYPH_BOUNDS = 178 TOP_BEGIN = 51 TOP_BEGIN_GLYPH_BOUNDS = 179 TOP_END = 52 TOP_END_GLYPH_BOUNDS = 180
Text rendering alignment
class Feature: ACCESS_ALL_ALTERNATES = 1953259873 ABOVE_BASE_FORMS = 1719034465 ABOVE_BASE_MARK_POSITIONING = 1836474977 ABOVE_BASE_SUBSTITUTIONS = 1937138273 ALTERNATIVE_FRACTIONS = 1668441697 AKHAND = 1852336993 KERNING_FOR_ALTERNATE_PROPORTIONAL_WIDTHS = 1852534881 BELOW_BASE_FORMS = 1719102562 BELOW_BASE_MARK_POSITIONING = 1836543074 BELOW_BASE_SUBSTITUTIONS = 1937206370 CONTEXTUAL_ALTERNATES = 1953259875 CASE_SENSITIVE_FORMS = 1702060387 GLYPH_COMPOSITION_DECOMPOSITION = 1886217059 CONJUNCT_FORM_AFTER_RO = 1918985827 CONTEXTUAL_HALF_WIDTH_SPACING = 1937205347 CONJUNCT_FORMS = 1952672355 CONTEXTUAL_LIGATURES = 1734962275 CENTERED_CJK_PUNCTUATION = 1952673891 CAPITAL_SPACING = 1886613603 CONTEXTUAL_SWASH = 1752658787 CURSIVE_POSITIONING = 1936880995 CHARACTER_VARIANTS1 = 825259619 CHARACTER_VARIANTS2 = 842036835 CHARACTER_VARIANTS3 = 858814051 CHARACTER_VARIANTS4 = 875591267 CHARACTER_VARIANTS5 = 892368483 CHARACTER_VARIANTS6 = 909145699 CHARACTER_VARIANTS7 = 925922915 CHARACTER_VARIANTS8 = 942700131 CHARACTER_VARIANTS9 = 959477347 CHARACTER_VARIANTS10 = 808547939 CHARACTER_VARIANTS11 = 825325155 CHARACTER_VARIANTS12 = 842102371 CHARACTER_VARIANTS13 = 858879587 CHARACTER_VARIANTS14 = 875656803 CHARACTER_VARIANTS15 = 892434019 CHARACTER_VARIANTS16 = 909211235 CHARACTER_VARIANTS17 = 925988451 CHARACTER_VARIANTS18 = 942765667 CHARACTER_VARIANTS19 = 959542883 CHARACTER_VARIANTS20 = 808613475 CHARACTER_VARIANTS21 = 825390691 CHARACTER_VARIANTS22 = 842167907 CHARACTER_VARIANTS23 = 858945123 CHARACTER_VARIANTS24 = 875722339 CHARACTER_VARIANTS25 = 892499555 CHARACTER_VARIANTS26 = 909276771 CHARACTER_VARIANTS27 = 926053987 CHARACTER_VARIANTS28 = 942831203 CHARACTER_VARIANTS29 = 959608419 CHARACTER_VARIANTS30 = 808679011 CHARACTER_VARIANTS31 = 825456227 CHARACTER_VARIANTS32 = 842233443 CHARACTER_VARIANTS33 = 859010659 CHARACTER_VARIANTS34 = 875787875 CHARACTER_VARIANTS35 = 892565091 CHARACTER_VARIANTS36 = 909342307 CHARACTER_VARIANTS37 = 926119523 CHARACTER_VARIANTS38 = 942896739 CHARACTER_VARIANTS39 = 959673955 CHARACTER_VARIANTS40 = 808744547 CHARACTER_VARIANTS41 = 825521763 CHARACTER_VARIANTS42 = 842298979 CHARACTER_VARIANTS43 = 859076195 CHARACTER_VARIANTS44 = 875853411 CHARACTER_VARIANTS45 = 892630627 CHARACTER_VARIANTS46 = 909407843 CHARACTER_VARIANTS47 = 926185059 CHARACTER_VARIANTS48 = 942962275 CHARACTER_VARIANTS49 = 959739491 CHARACTER_VARIANTS50 = 808810083 CHARACTER_VARIANTS51 = 825587299 CHARACTER_VARIANTS52 = 842364515 CHARACTER_VARIANTS53 = 859141731 CHARACTER_VARIANTS54 = 875918947 CHARACTER_VARIANTS55 = 892696163 CHARACTER_VARIANTS56 = 909473379 CHARACTER_VARIANTS57 = 926250595 CHARACTER_VARIANTS58 = 943027811 CHARACTER_VARIANTS59 = 959805027 CHARACTER_VARIANTS60 = 808875619 CHARACTER_VARIANTS61 = 825652835 CHARACTER_VARIANTS62 = 842430051 CHARACTER_VARIANTS63 = 859207267 CHARACTER_VARIANTS64 = 875984483 CHARACTER_VARIANTS65 = 892761699 CHARACTER_VARIANTS66 = 909538915 CHARACTER_VARIANTS67 = 926316131 CHARACTER_VARIANTS68 = 943093347 CHARACTER_VARIANTS69 = 959870563 CHARACTER_VARIANTS70 = 808941155 CHARACTER_VARIANTS71 = 825718371 CHARACTER_VARIANTS72 = 842495587 CHARACTER_VARIANTS73 = 859272803 CHARACTER_VARIANTS74 = 876050019 CHARACTER_VARIANTS75 = 892827235 CHARACTER_VARIANTS76 = 909604451 CHARACTER_VARIANTS77 = 926381667 CHARACTER_VARIANTS78 = 943158883 CHARACTER_VARIANTS79 = 959936099 CHARACTER_VARIANTS80 = 809006691 CHARACTER_VARIANTS81 = 825783907 CHARACTER_VARIANTS82 = 842561123 CHARACTER_VARIANTS83 = 859338339 CHARACTER_VARIANTS84 = 876115555 CHARACTER_VARIANTS85 = 892892771 CHARACTER_VARIANTS86 = 909669987 CHARACTER_VARIANTS87 = 926447203 CHARACTER_VARIANTS88 = 943224419 CHARACTER_VARIANTS89 = 960001635 CHARACTER_VARIANTS90 = 809072227 CHARACTER_VARIANTS91 = 825849443 CHARACTER_VARIANTS92 = 842626659 CHARACTER_VARIANTS93 = 859403875 CHARACTER_VARIANTS94 = 876181091 CHARACTER_VARIANTS95 = 892958307 CHARACTER_VARIANTS96 = 909735523 CHARACTER_VARIANTS97 = 926512739 CHARACTER_VARIANTS98 = 943289955 CHARACTER_VARIANTS99 = 960067171 PETITE_CAPITALS_FROM_CAPITALS = 1668297315 SMALL_CAPITALS_FROM_CAPITALS = 1668493923 DISTANCES = 1953720676 DISCRETIONARY_LIGATURES = 1734962276 DENOMINATORS = 1836019300 DOTLESS_FORMS = 1936487524 EXPERT_FORMS = 1953527909 FINAL_GLYPH_ON_LINE_ALTERNATES = 1953259878 TERMINAL_FORMS = 1634625894 TERMINAL_FORMS2 = 846096742 TERMINAL_FORMS3 = 862873958 FLATTENED_ACCENT_FORMS = 1667329126 FRACTIONS = 1667330662 FULL_WIDTHS = 1684633446 HALF_FORMS = 1718378856 HALANT_FORMS = 1852596584 ALTERNATE_HALF_WIDTHS = 1953259880 HISTORICAL_FORMS = 1953720680 HORIZONTAL_KANA_ALTERNATES = 1634626408 HISTORICAL_LIGATURES = 1734962280 HANGUL = 1818717800 HOJO_KANJI_FORMS = 1869246312 HALF_WIDTHS = 1684633448 INITIAL_FORMS = 1953066601 ISOLATED_FORMS = 1819243369 ITALICS = 1818326121 JUSTIFICATION_ALTERNATES = 1953259882 JIS78_FORMS = 943157354 JIS83_FORMS = 859336810 JIS90_FORMS = 809070698 JIS2004_FORMS = 875589738 KERNING = 1852990827 LEFT_BOUNDS = 1684170348 STANDARD_LIGATURES = 1634167148 LEADING_JAMO_FORMS = 1869441644 LINING_FIGURES = 1836412524 LOCALIZED_FORMS = 1818455916 LEFT_TO_RIGHT_ALTERNATES = 1634890860 LEFT_TO_RIGHT_MIRRORED_FORMS = 1836217452 MARK_POSITIONING = 1802658157 MEDIAL_FORMS = 1768187245 MEDIAL_FORMS2 = 845440365 MATHEMATICAL_GREEK = 1802659693 MARK_TO_MARK_POSITIONING = 1802333037 MARK_POSITIONING_VIA_SUBSTITUTION = 1952805741 ALTERNATE_ANNOTATION_FORMS = 1953259886 NLC_KANJI_FORMS = 1801677934 NUKTA_FORMS = 1953199470 NUMERATORS = 1919776110 OLDSTYLE_FIGURES = 1836412527 OPTICAL_BOUNDS = 1684172911 ORDINALS = 1852076655 ORNAMENTS = 1835954799 PROPORTIONAL_ALTERNATE_WIDTHS = 1953259888 PETITE_CAPITALS = 1885430640 PROPORTIONAL_KANA = 1634626416 PROPORTIONAL_FIGURES = 1836412528 PRE_BASE_FORMS = 1717924464 PRE_BASE_SUBSTITUTIONS = 1936028272 POST_BASE_FORMS = 1718907760 POST_BASE_SUBSTITUTIONS = 1937011568 PROPORTIONAL_WIDTHS = 1684633456 QUARTER_WIDTHS = 1684633457 RANDOMIZE = 1684955506 REQUIRED_CONTEXTUAL_ALTERNATES = 1953260402 RAKAR_FORMS = 1718774642 REQUIRED_LIGATURES = 1734962290 REPH_FORMS = 1718120562 RIGHT_BOUNDS = 1684173938 RIGHT_TO_LEFT_ALTERNATES = 1634497650 RIGHT_TO_LEFT_MIRRORED_FORMS = 1835824242 RUBY_NOTATION_FORMS = 2036495730 REQUIRED_VARIATION_ALTERNATES = 1852995186 STYLISTIC_ALTERNATES = 1953259891 SCIENTIFIC_INFERIORS = 1718511987 OPTICAL_SIZE = 1702521203 SMALL_CAPITALS = 1885564275 SIMPLIFIED_FORMS = 1819307379 STYLISTIC_SET1 = 825258867 STYLISTIC_SET2 = 842036083 STYLISTIC_SET3 = 858813299 STYLISTIC_SET4 = 875590515 STYLISTIC_SET5 = 892367731 STYLISTIC_SET6 = 909144947 STYLISTIC_SET7 = 925922163 STYLISTIC_SET8 = 942699379 STYLISTIC_SET9 = 959476595 STYLISTIC_SET10 = 808547187 STYLISTIC_SET11 = 825324403 STYLISTIC_SET12 = 842101619 STYLISTIC_SET13 = 858878835 STYLISTIC_SET14 = 875656051 STYLISTIC_SET15 = 892433267 STYLISTIC_SET16 = 909210483 STYLISTIC_SET17 = 925987699 STYLISTIC_SET18 = 942764915 STYLISTIC_SET19 = 959542131 STYLISTIC_SET20 = 808612723 MATH_SCRIPT_STYLE_ALTERNATES = 2037674867 STRETCHING_GLYPH_DECOMPOSITION = 1751348339 SUBSCRIPT = 1935832435 SUPERSCRIPT = 1936749939 SWASH = 1752397683 TITLING = 1819568500 TRAILING_JAMO_FORMS = 1869441652 TRADITIONAL_NAME_FORMS = 1835101812 TABULAR_FIGURES = 1836412532 TRADITIONAL_FORMS = 1684107892 THIRD_WIDTHS = 1684633460 UNICASE = 1667853941 ALTERNATE_VERTICAL_METRICS = 1953259894 VATTU_VARIANTS = 1970561398 KERNING_FOR_ALTERNATE_PROPORTIONAL_VERTICAL_METRICS = 1802527094 VERTICAL_CONTEXTUAL_HALF_WIDTH_SPACING = 2003329910 VERTICAL_WRITING = 1953654134 ALTERNATE_VERTICAL_HALF_METRICS = 1818323062 VOWEL_JAMO_FORMS = 1869441654 VERTICAL_KANA_ALTERNATES = 1634626422 VERTICAL_KERNING = 1852992374 PROPORTIONAL_ALTERNATE_VERTICAL_METRICS = 1818325110 VERTICAL_ALTERNATES_AND_ROTATION = 846492278 VERTICAL_ALTERNATES_FOR_ROTATION = 1920234102 SLASHED_ZERO = 1869768058
Open Type typographic feature
class Script: UNSPECIFIED = 0 INHERITED = 1752066394 MATH = 1752460634 COMMON = 2038004058 UNKNOWN = 2054847066 ADLAM = 1835820097 CAUCASIAN_ALBANIAN = 1651009345 AHOM = 1836017729 ARABIC = 1650553409 IMPERIAL_ARAMAIC = 1768780353 ARMENIAN = 1852666433 AVESTAN = 1953723969 BALINESE = 1768710466 BAMUM = 1970102594 BASSA_VAH = 1936941378 BATAK = 1802789186 BENGALI = 1735288130 BHAIKSUKI = 1936418882 BOPOMOFO = 1869639490 BRAHMI = 1751216706 BRAILLE = 1767993922 BUGINESE = 1768387906 BUHID = 1684567362 CHAKMA = 1835753795 CANADIAN_ABORIGINAL = 1936613699 CARIAN = 1769103683 CHAM = 1835100227 CHEROKEE = 1919248451 CHORASMIAN = 1936877635 COPTIC = 1953525571 CYPRO_MINOAN = 1852665923 CYPRIOT = 1953656899 CYRILLIC = 1819441475 DEVANAGARI = 1635149124 DIVES_AKURU = 1801546052 DOGRA = 1919381316 DESERET = 1953657668 DUPLOYAN = 1819309380 EGYPTIAN_HIEROGLYPHS = 1887004485 ELBASAN = 1633840197 ELYMAIC = 1836674117 ETHIOPIC = 1768453189 GARAY = 1634885959 GEORGIAN = 1919903047 GLAGOLITIC = 1734437959 GUNJALA_GONDI = 1735290695 MASARAM_GONDI = 1835953991 GOTHIC = 1752461127 GRANTHA = 1851880007 GREEK = 1801810503 GUJARATI = 1919579463 GURUNG_KHEMA = 1751872839 GURMUKHI = 1970435399 HANGUL = 1735287112 HAN = 1768841544 HANUNOO = 1869504840 HATRAN = 1920229704 HEBREW = 1919051080 HIRAGANA = 1634888008 ANATOLIAN_HIEROGLYPHS = 2004184136 PAHAWH_HMONG = 1735290184 NYIAKENG_PUACHUE_HMONG = 1886285128 OLD_HUNGARIAN = 1735292232 OLD_ITALIC = 1818326089 JAVANESE = 1635148106 KAYAH_LI = 1768710475 KATAKANA = 1634623819 KAWI = 1769431371 KHAROSHTHI = 1918986315 KHMER = 1919772747 KHOJKI = 1785686091 KHITAN_SMALL_SCRIPT = 1937008971 KANNADA = 1633971787 KIRAT_RAI = 1767993931 KAITHI = 1768453195 TAI_THAM = 1634623820 LAO = 1869570380 LATIN = 1853120844 LEPCHA = 1668310348 LIMBU = 1651337548 LINEARA = 1634625868 LINEARB = 1651403084 LISU = 1970497868 LYCIAN = 1768126796 LYDIAN = 1768192332 MAHAJANI = 1785225549 MAKASAR = 1634427213 MANDAIC = 1684955469 MANICHAEAN = 1768841549 MARCHEN = 1668440397 MEDEFAIDRIN = 1717855565 MENDE_KIKAKUI = 1684956493 MEROITIC_CURSIVE = 1668441421 MEROITIC_HIEROGLYPHS = 1869768013 MALAYALAM = 1836674125 MODI = 1768189773 MONGOLIAN = 1735290701 MRO = 1869574733 MEETEI_MAYEK = 1768256589 MULTANI = 1953264973 MYANMAR = 1919777101 NAG_MUNDARI = 1835491662 NANDINAGARI = 1684955470 OLD_NORTH_ARABIAN = 1651663182 NABATAEAN = 1952539214 NEWA = 1635214670 N_KO = 1869572942 NUSHU = 1969779534 OGHAM = 1835099983 OL_CHIKI = 1801677903 OL_ONAL = 1868656207 OLD_TURKIC = 1751872079 ORIYA = 1635349071 OSAGE = 1701278543 OSMANYA = 1634562895 OLD_UYGHUR = 1919382863 PALMYRENE = 1835819344 PAU_CIN_HAU = 1668637008 OLD_PERMIC = 1836213584 PHAGS_PA = 1734436944 INSCRIPTIONAL_PAHLAVI = 1768712272 PSALTER_PAHLAVI = 1886152784 PHOENICIAN = 2020501584 MIAO = 1685220432 INSCRIPTIONAL_PARTHIAN = 1769239120 REJANG = 1735289426 HANIFI_ROHINGYA = 1734897490 RUNIC = 1919841618 SAMARITAN = 1919770963 OLD_SOUTH_ARABIAN = 1651663187 SAURASHTRA = 1920295251 SIGN_WRITING = 2003724115 SHAVIAN = 2002872403 SHARADA = 1685219411 SIDDHAM = 1684302163 KHUDAWADI = 1684957523 SINHALA = 1752066387 SOGDIAN = 1684500307 OLD_SOGDIAN = 1869049683 SORA_SOMPENG = 1634889555 SOYOMBO = 1870229331 SUNDANESE = 1684960595 SUNUWAR = 1970173267 SYLOTI_NAGRI = 1869379923 SYRIAC = 1668446547 TAGBANWA = 1650942292 TAKRI = 1919639892 TAI_LE = 1701601620 NEW_TAI_LUE = 1970037076 TAMIL = 1819107668 TANGUT = 1735287124 TAI_VIET = 1953915220 TELUGU = 1970038100 TIFINAGH = 1735288404 TAGALOG = 1735157588 THAANA = 1633773652 THAI = 1767991380 TIBETAN = 1952606548 TIRHUTA = 1752328532 TANGSA = 1634954836 TODHRI = 1919184724 TOTO = 1869901652 TULU_TIGALARI = 1735685460 UGARITIC = 1918986069 VAI = 1768513878 VITHKUQI = 1752459606 WARANG_CITI = 1634885975 WANCHO = 1869112151 OLD_PERSIAN = 1868918872 CUNEIFORM = 2020963160 YEZIDI = 1769629017 YI = 1768515929 ZANABAZAR_SQUARE = 1651401050
Script a text is written in
class ShapeDirection: UNSPECIFIED = 0 LEFT_TO_RIGHT = 1 RIGHT_TO_LEFT = 2 TOP_TO_BOTTOM = 3 BOTTOM_TO_TOP = 4
Direction a text is shaped in

Enum documentation

class magnum.text.Feature()

Open Type typographic feature

The equivalent to C++ Text::feature() is passing the four-character code to the constructor:

>>> feature = text.Feature('kern')
>>> feature.name
'KERNING'

class magnum.text.Script()

Script a text is written in

The equivalent to C++ Text::script() is passing the four-character code to the constructor:

>>> script = text.Script('Latn')
>>> script.name
'LATIN'