feaLib

fontTools.feaLib – a package for dealing with OpenType feature files.

ast

class fontTools.feaLib.ast.AlternateSubstStatement(location, prefix, glyph, suffix, replacement)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.Anchor(location, name, x, y, contourpoint, xDeviceTable, yDeviceTable)[source]
asFea(indent='')[source]
class fontTools.feaLib.ast.AnchorDefinition(location, name, x, y, contourpoint)[source]
asFea(indent='')[source]
class fontTools.feaLib.ast.AnonymousBlock(tag, content, location)[source]
asFea(indent='')[source]
class fontTools.feaLib.ast.AttachStatement(location, glyphs, contourPoints)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.BaseAxis(location, bases, scripts, vertical)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.Block(location)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.ChainContextPosStatement(location, prefix, glyphs, suffix, lookups)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.ChainContextSubstStatement(location, prefix, glyphs, suffix, lookups)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.Comment(location, text)[source]
asFea(indent='')[source]
class fontTools.feaLib.ast.CursivePosStatement(location, glyphclass, entryAnchor, exitAnchor)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.Element(location)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.Expression(location)[source]
class fontTools.feaLib.ast.FeatureBlock(location, name, use_extension)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.FeatureFile[source]
asFea(indent='')[source]
class fontTools.feaLib.ast.FeatureNameStatement(location, nameID, platformID, platEncID, langID, string)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.FeatureNamesBlock(location)[source]
asFea(indent='')[source]
class fontTools.feaLib.ast.FeatureReferenceStatement(location, featureName)[source]

Example: feature salt;

asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.FontRevisionStatement(location, revision)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.GlyphClass(location, glyphs=None)[source]

A glyph class, such as [acute cedilla grave].

add_cid_range(start, end, glyphs)[source]
add_class(gc)[source]
add_range(start, end, glyphs)[source]
append(glyph)[source]
asFea(indent='')[source]
extend(glyphs)[source]
glyphSet()[source]
class fontTools.feaLib.ast.GlyphClassDefStatement(location, baseGlyphs, markGlyphs, ligatureGlyphs, componentGlyphs)[source]

Example: GlyphClassDef @UPPERCASE, [B], [C], [D];

asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.GlyphClassDefinition(location, name, glyphs)[source]

Example: @UPPERCASE = [A-Z];

asFea(indent='')[source]
glyphSet()[source]
class fontTools.feaLib.ast.GlyphClassName(location, glyphclass)[source]

A glyph class name, such as @FRENCH_MARKS.

asFea(indent='')[source]
glyphSet()[source]
class fontTools.feaLib.ast.GlyphName(location, glyph)[source]

A single glyph name, such as cedilla.

asFea(indent='')[source]
glyphSet()[source]
class fontTools.feaLib.ast.HheaField(location, key, value)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.IgnorePosStatement(location, chainContexts)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.IgnoreSubstStatement(location, chainContexts)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.LanguageStatement(location, language, include_default, required)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.LanguageSystemStatement(location, script, language)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.LigatureCaretByIndexStatement(location, glyphs, carets)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.LigatureCaretByPosStatement(location, glyphs, carets)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.LigatureSubstStatement(location, prefix, glyphs, suffix, replacement, forceChain)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.LookupBlock(location, name, use_extension)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.LookupFlagStatement(location, value, markAttachment, markFilteringSet)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.LookupReferenceStatement(location, lookup)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.MarkBasePosStatement(location, base, marks)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.MarkClass(name)[source]
addDefinition(definition)[source]
asFea(indent='')[source]
glyphSet()[source]
class fontTools.feaLib.ast.MarkClassDefinition(location, markClass, anchor, glyphs)[source]
asFea(indent='')[source]
glyphSet()[source]
class fontTools.feaLib.ast.MarkClassName(location, markClass)[source]

A mark class name, such as @FRENCH_MARKS defined with markClass.

asFea(indent='')[source]
glyphSet()[source]
class fontTools.feaLib.ast.MarkLigPosStatement(location, ligatures, marks)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.MarkMarkPosStatement(location, baseMarks, marks)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.MultipleSubstStatement(location, prefix, glyph, suffix, replacement)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.NameRecord(location, nameID, platformID, platEncID, langID, string)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.OS2Field(location, key, value)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.PairPosStatement(location, enumerated, glyphs1, valuerecord1, glyphs2, valuerecord2)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.ReverseChainSingleSubstStatement(location, old_prefix, old_suffix, glyphs, replacements)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.ScriptStatement(location, script)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.SinglePosStatement(location, pos, prefix, suffix, forceChain)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.SingleSubstStatement(location, glyphs, replace, prefix, suffix, forceChain)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.SizeParameters(location, DesignSize, SubfamilyID, RangeStart, RangeEnd)[source]
asFea(indent='')[source]
build(builder)[source]
class fontTools.feaLib.ast.Statement(location)[source]
class fontTools.feaLib.ast.SubtableStatement(location)[source]
class fontTools.feaLib.ast.TableBlock(location, name)[source]
asFea(indent='')[source]
class fontTools.feaLib.ast.ValueRecord(location, vertical, xPlacement, yPlacement, xAdvance, yAdvance, xPlaDevice, yPlaDevice, xAdvDevice, yAdvDevice)[source]
makeString(vertical=None)[source]
class fontTools.feaLib.ast.ValueRecordDefinition(location, name, value)[source]
asFea(indent='')[source]
class fontTools.feaLib.ast.VheaField(location, key, value)[source]
asFea(indent='')[source]
build(builder)[source]
fontTools.feaLib.ast.asFea(g)[source]
fontTools.feaLib.ast.deviceToString(device)[source]
fontTools.feaLib.ast.simplify_name_attributes(pid, eid, lid)[source]

builder

class fontTools.feaLib.builder.AlternateSubstBuilder(font, location)[source]
build()[source]
equals(other)[source]
getAlternateGlyphs()[source]
class fontTools.feaLib.builder.Builder(font, featurefile)[source]
add_alternate_subst(location, prefix, glyph, suffix, replacement)[source]
add_attach_points(location, glyphs, contourPoints)[source]
add_chain_context_pos(location, prefix, glyphs, suffix, lookups)[source]
add_chain_context_subst(location, prefix, glyphs, suffix, lookups)[source]
add_class_pair_pos(location, glyphclass1, value1, glyphclass2, value2)[source]
add_cursive_pos(location, glyphclass, entryAnchor, exitAnchor)[source]
add_featureName(location, tag)[source]
add_feature_reference(location, featureName)[source]
add_glyphClassDef(location, baseGlyphs, ligatureGlyphs, markGlyphs, componentGlyphs)[source]
add_hhea_field(key, value)[source]
add_language_system(location, script, language)[source]
add_ligatureCaretByIndex_(location, glyphs, carets)[source]
add_ligatureCaretByPos_(location, glyphs, carets)[source]
add_ligature_subst(location, prefix, glyphs, suffix, replacement, forceChain)[source]
add_lookup_call(lookup_name)[source]
add_lookup_to_feature_(lookup, feature_name)[source]
add_mark_base_pos(location, bases, marks)[source]
add_mark_lig_pos(location, ligatures, components)[source]
add_mark_mark_pos(location, baseMarks, marks)[source]
add_marks_(location, lookupBuilder, marks)[source]

Helper for add_mark_{base,liga,mark}_pos.

add_multiple_subst(location, prefix, glyph, suffix, replacements)[source]
add_name_record(location, nameID, platformID, platEncID, langID, string)[source]
add_os2_field(key, value)[source]
add_reverse_chain_single_subst(location, old_prefix, old_suffix, mapping)[source]
add_single_pos(location, prefix, suffix, pos, forceChain)[source]
add_single_pos_chained_(location, prefix, suffix, pos)[source]
add_single_subst(location, prefix, suffix, mapping, forceChain)[source]
add_single_subst_chained_(location, prefix, suffix, mapping)[source]
add_specific_pair_pos(location, glyph1, value1, glyph2, value2)[source]
add_vhea_field(key, value)[source]
build()[source]
buildBASE()[source]
buildBASEAxis(axis)[source]
buildFeatureParams(tag)[source]
buildGDEF()[source]
buildGDEFGlyphClassDef_()[source]
buildGDEFMarkAttachClassDef_()[source]
buildGDEFMarkGlyphSetsDef_()[source]
buildLookups_(tag)[source]
build_OS_2()[source]
build_codepages_(pages)[source]
build_feature_aalt_()[source]
build_head()[source]
build_hhea()[source]
build_name()[source]
build_vhea()[source]
end_feature()[source]
end_lookup_block()[source]
find_chainable_SinglePos_(lookups, glyphs, value)[source]

Helper for add_single_pos_chained_()

find_chainable_SingleSubst_(chain, glyphs)[source]

Helper for add_single_subst_chained_()

find_lookup_builders_(lookups)[source]

Helper for building chain contextual substitutions

Given a list of lookup names, finds the LookupBuilder for each name. If an input name is None, it gets mapped to a None LookupBuilder.

getMarkAttachClass_(location, glyphs)[source]
getMarkFilterSet_(location, glyphs)[source]
get_chained_lookup_(location, builder_class)[source]
get_default_language_systems_()[source]
get_lookup_(location, builder_class)[source]
get_user_name_id(table)[source]
makeTable(tag)[source]
setGlyphClass_(location, glyph, glyphClass)[source]
set_base_axis(bases, scripts, vertical)[source]
set_font_revision(location, revision)[source]
set_language(location, language, include_default, required)[source]
set_lookup_flag(location, value, markAttach, markFilter)[source]
set_script(location, script)[source]
set_size_parameters(location, DesignSize, SubfamilyID, RangeStart, RangeEnd)[source]
start_feature(location, name)[source]
start_lookup_block(location, name)[source]
class fontTools.feaLib.builder.ChainContextPosBuilder(font, location)[source]
build()[source]
equals(other)[source]
class fontTools.feaLib.builder.ChainContextSubstBuilder(font, location)[source]
build()[source]
equals(other)[source]
getAlternateGlyphs()[source]
class fontTools.feaLib.builder.ClassPairPosSubtableBuilder(builder, valueFormat1, valueFormat2)[source]
addPair(gc1, value1, gc2, value2)[source]
addSubtableBreak()[source]
flush_()[source]
subtables()[source]
class fontTools.feaLib.builder.CursivePosBuilder(font, location)[source]
add_attachment(location, glyphs, entryAnchor, exitAnchor)[source]
build()[source]
equals(other)[source]
class fontTools.feaLib.builder.LigatureSubstBuilder(font, location)[source]
build()[source]
equals(other)[source]
class fontTools.feaLib.builder.LookupBuilder(font, location, table, lookup_type)[source]
buildLookup_(subtables)[source]
buildMarkClasses_(marks)[source]

{“cedilla”: (“BOTTOM”, ast.Anchor), …} –> {“BOTTOM”:0, “TOP”:1}

Helper for MarkBasePostBuilder, MarkLigPosBuilder, and MarkMarkPosBuilder. Seems to return the same numeric IDs for mark classes as the AFDKO makeotf tool.

equals(other)[source]
getAlternateGlyphs()[source]

Helper for building ‘aalt’ features.

inferGlyphClasses()[source]

Infers glyph glasses for the GDEF table, such as {“cedilla”:3}.

setBacktrackCoverage_(prefix, subtable)[source]
setInputCoverage_(glyphs, subtable)[source]
setLookAheadCoverage_(suffix, subtable)[source]
class fontTools.feaLib.builder.MarkBasePosBuilder(font, location)[source]
build()[source]
equals(other)[source]
inferGlyphClasses()[source]
class fontTools.feaLib.builder.MarkLigPosBuilder(font, location)[source]
build()[source]
equals(other)[source]
inferGlyphClasses()[source]
class fontTools.feaLib.builder.MarkMarkPosBuilder(font, location)[source]
build()[source]
equals(other)[source]
inferGlyphClasses()[source]
class fontTools.feaLib.builder.MultipleSubstBuilder(font, location)[source]
build()[source]
equals(other)[source]
class fontTools.feaLib.builder.PairPosBuilder(font, location)[source]
SUBTABLE_BREAK_ = 'SUBTABLE_BREAK'
addClassPair(location, glyphclass1, value1, glyphclass2, value2)[source]
addGlyphPair(location, glyph1, value1, glyph2, value2)[source]
add_subtable_break(location)[source]
build()[source]
equals(other)[source]
class fontTools.feaLib.builder.ReverseChainSingleSubstBuilder(font, location)[source]
build()[source]
equals(other)[source]
class fontTools.feaLib.builder.SinglePosBuilder(font, location)[source]
add_pos(location, glyph, valueRecord)[source]
build()[source]
can_add(glyph, value)[source]
equals(other)[source]
class fontTools.feaLib.builder.SingleSubstBuilder(font, location)[source]
build()[source]
equals(other)[source]
getAlternateGlyphs()[source]
fontTools.feaLib.builder.addOpenTypeFeatures(font, featurefile)[source]
fontTools.feaLib.builder.addOpenTypeFeaturesFromString(font, features, filename=None)[source]
fontTools.feaLib.builder.makeOpenTypeAnchor(anchor)[source]

ast.Anchor –> otTables.Anchor

fontTools.feaLib.builder.makeOpenTypeValueRecord(v, pairPosContext)[source]

ast.ValueRecord –> (otBase.ValueRecord, int ValueFormat)

error

class fontTools.feaLib.parser.Parser(featurefile, glyphNames=(), **kwargs)[source]
advance_lexer_(comments=False)[source]
ast = <module 'fontTools.feaLib.ast' from '/build/fonttools-XA9gJl/fonttools-3.21.2/Doc/source/../../Lib/fontTools/feaLib/ast.py'>
expect_cid_()[source]
expect_class_name_()[source]
expect_decipoint_()[source]
expect_float_()[source]
expect_glyph_()[source]
expect_keyword_(keyword)[source]
expect_language_tag_()[source]
expect_markClass_reference_()[source]
expect_name_()[source]
expect_number_()[source]
expect_script_tag_()[source]
expect_string_()[source]
expect_symbol_(symbol)[source]
expect_tag_()[source]
extensions = {}
is_cur_keyword_(k)[source]
is_next_value_()[source]
make_cid_range_(location, start, limit)[source]

(location, 999, 1001) –> [“cid00999”, “cid01000”, “cid01001”]

make_glyph_range_(location, start, limit)[source]

(location, “a.sc”, “d.sc”) –> [“a.sc”, “b.sc”, “c.sc”, “d.sc”]

parse()[source]
parse_FontRevision_()[source]
parse_GlyphClassDef_()[source]

Parses ‘GlyphClassDef @BASE, @LIGATURES, @MARKS, @COMPONENTS;’

parse_anchor_()[source]
parse_anchor_marks_()[source]

Parses a sequence of [<anchor> mark @MARKCLASS]*.

parse_anchordef_()[source]
parse_anonymous_()[source]
parse_attach_()[source]
parse_base_script_list_(count)[source]
parse_base_script_record_(count)[source]
parse_base_tag_list_()[source]
parse_block_(block, vertical, stylisticset=None, size_feature=False)[source]
parse_chain_context_()[source]
parse_class_name_()[source]
parse_device_()[source]
parse_enumerate_(vertical)[source]
parse_featureNames_(tag)[source]
parse_feature_block_()[source]
parse_feature_reference_()[source]
parse_glyph_pattern_(vertical)[source]
parse_glyphclass_(accept_glyphname)[source]
parse_glyphclass_definition_()[source]

Parses glyph class definitions such as @UPPERCASE = [A-Z];’

parse_ignore_()[source]
parse_language_()[source]
parse_languagesystem_()[source]
parse_ligatureCaretByIndex_()[source]
parse_ligatureCaretByPos_()[source]
parse_lookup_(vertical)[source]
parse_lookupflag_()[source]
parse_markClass_()[source]
parse_name_()[source]
parse_nameid_()[source]
parse_position_(enumerated, vertical)[source]
parse_position_base_(enumerated, vertical)[source]
parse_position_cursive_(enumerated, vertical)[source]
parse_position_ligature_(enumerated, vertical)[source]
parse_position_mark_(enumerated, vertical)[source]
parse_script_()[source]
parse_size_menuname_()[source]
parse_size_parameters_()[source]
parse_substitute_()[source]
parse_subtable_()[source]
parse_table_()[source]
parse_table_BASE_(table)[source]
parse_table_GDEF_(table)[source]
parse_table_OS_2_(table)[source]
parse_table_head_(table)[source]
parse_table_hhea_(table)[source]
parse_table_name_(table)[source]
parse_table_vhea_(table)[source]
parse_valuerecord_(vertical)[source]
parse_valuerecord_definition_(vertical)[source]
static reverse_string_(s)[source]

‘abc’ –> ‘cba’

split_glyph_range_(name, location)[source]
static unescape_byte_(match, encoding)[source]
unescape_string_(string, encoding)[source]
static unescape_unichr_(match)[source]
class fontTools.feaLib.parser.SymbolTable[source]
define(name, item)[source]
enter_scope()[source]
exit_scope()[source]
resolve(name)[source]

lexer

class fontTools.feaLib.lexer.IncludingLexer(featurefile)[source]
static make_lexer_(file_or_path, location=None)[source]
next()[source]
scan_anonymous_block(tag)[source]
class fontTools.feaLib.lexer.Lexer(text, filename)[source]
ANONYMOUS_BLOCK = 'ANONYMOUS_BLOCK'
CHAR_DIGIT_ = '0123456789'
CHAR_HEXDIGIT_ = '0123456789ABCDEFabcdef'
CHAR_LETTER_ = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
CHAR_NAME_CONTINUATION_ = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_.+*:^~!/-'
CHAR_NAME_START_ = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_+*:.^~!\\'
CHAR_NEWLINE_ = '\r\n'
CHAR_SYMBOL_ = ",;:-+'{}[]<>()="
CHAR_WHITESPACE_ = ' \t'
CID = 'CID'
COMMENT = 'COMMENT'
FILENAME = 'FILENAME'
FLOAT = 'FLOAT'
GLYPHCLASS = 'GLYPHCLASS'
MODE_FILENAME_ = 'FILENAME'
MODE_NORMAL_ = 'NORMAL'
NAME = 'NAME'
NEWLINE = 'NEWLINE'
NUMBER = 'NUMBER'
RE_GLYPHCLASS = re.compile('^[A-Za-z_0-9.]+$')
STRING = 'STRING'
SYMBOL = 'SYMBOL'
location_()[source]
next()[source]
next_()[source]
scan_anonymous_block(tag)[source]
scan_over_(valid)[source]
scan_until_(stop_at)[source]

parser

class fontTools.feaLib.parser.Parser(featurefile, glyphNames=(), **kwargs)[source]
advance_lexer_(comments=False)[source]
ast = <module 'fontTools.feaLib.ast' from '/build/fonttools-XA9gJl/fonttools-3.21.2/Doc/source/../../Lib/fontTools/feaLib/ast.py'>
expect_cid_()[source]
expect_class_name_()[source]
expect_decipoint_()[source]
expect_float_()[source]
expect_glyph_()[source]
expect_keyword_(keyword)[source]
expect_language_tag_()[source]
expect_markClass_reference_()[source]
expect_name_()[source]
expect_number_()[source]
expect_script_tag_()[source]
expect_string_()[source]
expect_symbol_(symbol)[source]
expect_tag_()[source]
extensions = {}
is_cur_keyword_(k)[source]
is_next_value_()[source]
make_cid_range_(location, start, limit)[source]

(location, 999, 1001) –> [“cid00999”, “cid01000”, “cid01001”]

make_glyph_range_(location, start, limit)[source]

(location, “a.sc”, “d.sc”) –> [“a.sc”, “b.sc”, “c.sc”, “d.sc”]

parse()[source]
parse_FontRevision_()[source]
parse_GlyphClassDef_()[source]

Parses ‘GlyphClassDef @BASE, @LIGATURES, @MARKS, @COMPONENTS;’

parse_anchor_()[source]
parse_anchor_marks_()[source]

Parses a sequence of [<anchor> mark @MARKCLASS]*.

parse_anchordef_()[source]
parse_anonymous_()[source]
parse_attach_()[source]
parse_base_script_list_(count)[source]
parse_base_script_record_(count)[source]
parse_base_tag_list_()[source]
parse_block_(block, vertical, stylisticset=None, size_feature=False)[source]
parse_chain_context_()[source]
parse_class_name_()[source]
parse_device_()[source]
parse_enumerate_(vertical)[source]
parse_featureNames_(tag)[source]
parse_feature_block_()[source]
parse_feature_reference_()[source]
parse_glyph_pattern_(vertical)[source]
parse_glyphclass_(accept_glyphname)[source]
parse_glyphclass_definition_()[source]

Parses glyph class definitions such as @UPPERCASE = [A-Z];’

parse_ignore_()[source]
parse_language_()[source]
parse_languagesystem_()[source]
parse_ligatureCaretByIndex_()[source]
parse_ligatureCaretByPos_()[source]
parse_lookup_(vertical)[source]
parse_lookupflag_()[source]
parse_markClass_()[source]
parse_name_()[source]
parse_nameid_()[source]
parse_position_(enumerated, vertical)[source]
parse_position_base_(enumerated, vertical)[source]
parse_position_cursive_(enumerated, vertical)[source]
parse_position_ligature_(enumerated, vertical)[source]
parse_position_mark_(enumerated, vertical)[source]
parse_script_()[source]
parse_size_menuname_()[source]
parse_size_parameters_()[source]
parse_substitute_()[source]
parse_subtable_()[source]
parse_table_()[source]
parse_table_BASE_(table)[source]
parse_table_GDEF_(table)[source]
parse_table_OS_2_(table)[source]
parse_table_head_(table)[source]
parse_table_hhea_(table)[source]
parse_table_name_(table)[source]
parse_table_vhea_(table)[source]
parse_valuerecord_(vertical)[source]
parse_valuerecord_definition_(vertical)[source]
static reverse_string_(s)[source]

‘abc’ –> ‘cba’

split_glyph_range_(name, location)[source]
static unescape_byte_(match, encoding)[source]
unescape_string_(string, encoding)[source]
static unescape_unichr_(match)[source]
class fontTools.feaLib.parser.SymbolTable[source]
define(name, item)[source]
enter_scope()[source]
exit_scope()[source]
resolve(name)[source]