# mtiLib: Read Monotype FontDame source files

## Overview

FontTools provides support for reading the OpenType Layout tables produced by Monotype’s FontDame and Font Chef font editors. These tables are written in a simple textual format. The `mtiLib` library parses these text files and creates table objects representing their contents.

Additionally, running the `fonttools mtiLib` command will convert a text file to TTX XML.

## Module members:

fontTools.mtiLib.build(f, font, tableTag=None)

  Convert a Monotype font layout file to an OpenType layout object

  A font object must be passed, but this may be a “dummy” font; it is only used for sorting glyph sets when making coverage tables and to hold the OpenType layout table while it is being built.

  Parameters:

    - f – A file object.

    - font (TTFont) – A font object.

    - tableTag (string) – If provided, asserts that the file contains data for the given OpenType table.

  Returns:

    An object representing the table. (e.g. `table_G_S_U_B_`)

fontTools.mtiLib.main(args=None, font=None)

  Convert a FontDame OTL file to TTX XML

  Writes XML output to stdout.

  Parameters:

    args – Command line arguments (`--font`, `--table`, input files).

exception fontTools.mtiLib.MtiLibError

  Bases: `Exception`

exception fontTools.mtiLib.ReferenceNotFoundError

  Bases: `MtiLibError`

exception fontTools.mtiLib.FeatureNotFoundError

  Bases: `ReferenceNotFoundError`

exception fontTools.mtiLib.LookupNotFoundError

  Bases: `ReferenceNotFoundError`

fontTools.mtiLib.makeGlyph(s)

fontTools.mtiLib.makeGlyphs(l)

fontTools.mtiLib.mapLookup(sym, mapping)

fontTools.mtiLib.mapFeature(sym, mapping)

fontTools.mtiLib.setReference(mapper, mapping, sym, setter, collection, key)

class fontTools.mtiLib.DeferredMapping

  Bases: `dict`

  addDeferredMapping(setter, sym, e)
  applyDeferredMappings()

fontTools.mtiLib.parseScriptList(lines, featureMap=None)

fontTools.mtiLib.parseFeatureList(lines, lookupMap=None, featureMap=None)

fontTools.mtiLib.parseLookupFlags(lines)

fontTools.mtiLib.parseSingleSubst(lines, font, _lookupMap=None)

fontTools.mtiLib.parseMultiple(lines, font, _lookupMap=None)

fontTools.mtiLib.parseAlternate(lines, font, _lookupMap=None)

fontTools.mtiLib.parseLigature(lines, font, _lookupMap=None)

fontTools.mtiLib.parseSinglePos(lines, font, _lookupMap=None)

fontTools.mtiLib.parsePair(lines, font, _lookupMap=None)

fontTools.mtiLib.parseKernset(lines, font, _lookupMap=None)

fontTools.mtiLib.makeAnchor(data, klass=<class 'fontTools.ttLib.tables.otTables.Anchor'>)

fontTools.mtiLib.parseCursive(lines, font, _lookupMap=None)

fontTools.mtiLib.makeMarkRecords(data, coverage, c)

fontTools.mtiLib.makeBaseRecords(data, coverage, c, classCount)

fontTools.mtiLib.makeLigatureRecords(data, coverage, c, classCount)

fontTools.mtiLib.parseMarkToSomething(lines, font, c)

class fontTools.mtiLib.MarkHelper

  Bases: `object`

class fontTools.mtiLib.MarkToBaseHelper

  Bases: `MarkHelper`

  Mark = 'Mark'
  Base = 'Base'
  Type

    alias of `MarkBasePos`

class fontTools.mtiLib.MarkToMarkHelper

  Bases: `MarkHelper`

  Mark = 'Mark1'
  Base = 'Mark2'
  Type

    alias of `MarkMarkPos`

class fontTools.mtiLib.MarkToLigatureHelper

  Bases: `MarkHelper`

  Mark = 'Mark'
  Base = 'Ligature'
  Type

    alias of `MarkLigPos`

fontTools.mtiLib.parseMarkToBase(lines, font, _lookupMap=None)

fontTools.mtiLib.parseMarkToMark(lines, font, _lookupMap=None)

fontTools.mtiLib.parseMarkToLigature(lines, font, _lookupMap=None)

fontTools.mtiLib.stripSplitComma(line)

fontTools.mtiLib.intSplitComma(line)

class fontTools.mtiLib.ContextHelper(klassName, Format)

  Bases: `object`

fontTools.mtiLib.parseLookupRecords(items, klassName, lookupMap=None)

fontTools.mtiLib.makeClassDef(classDefs, font, klass=<class 'fontTools.ttLib.tables.otTables.Coverage'>)

fontTools.mtiLib.parseClassDef(lines, font, klass=<class 'fontTools.ttLib.tables.otTables.ClassDef'>)

fontTools.mtiLib.makeCoverage(glyphs, font, klass=<class 'fontTools.ttLib.tables.otTables.Coverage'>)

fontTools.mtiLib.parseCoverage(lines, font, klass=<class 'fontTools.ttLib.tables.otTables.Coverage'>)

fontTools.mtiLib.bucketizeRules(self, c, rules, bucketKeys)

fontTools.mtiLib.parseContext(lines, font, Type, lookupMap=None)

fontTools.mtiLib.parseContextSubst(lines, font, lookupMap=None)

fontTools.mtiLib.parseContextPos(lines, font, lookupMap=None)

fontTools.mtiLib.parseChainedSubst(lines, font, lookupMap=None)

fontTools.mtiLib.parseChainedPos(lines, font, lookupMap=None)

fontTools.mtiLib.parseReverseChainedSubst(lines, font, _lookupMap=None)

fontTools.mtiLib.parseLookup(lines, tableTag, font, lookupMap=None)

fontTools.mtiLib.parseGSUBGPOS(lines, font, tableTag)

fontTools.mtiLib.parseGSUB(lines, font)

fontTools.mtiLib.parseGPOS(lines, font)

fontTools.mtiLib.parseAttachList(lines, font)

fontTools.mtiLib.parseCaretList(lines, font)

fontTools.mtiLib.makeMarkFilteringSets(sets, font)

fontTools.mtiLib.parseMarkFilteringSets(lines, font)

fontTools.mtiLib.parseGDEF(lines, font)

fontTools.mtiLib.parseCmap(lines, font)

fontTools.mtiLib.parseCmapId(lines, field)

fontTools.mtiLib.parseTable(lines, font, tableTag=None)

class fontTools.mtiLib.Tokenizer(f)

  Bases: `object`

  next()
  peek()
  peeks()
  between(tag)
  until(tags)
  expect(s)
  expectendswith(s)