实例介绍
【实例简介】
fonttools是一个用Python编写的操作字体文件的库。该项目包括TTX工具,可将TrueType和OpenType字体转换为XML文本格式,并支持TrueType、OpenType、AFM以及部分Type 1和一些Mac特定格式。
【实例截图】
【核心代码】
文件清单
└── fonttools-089400352f4daf0d8a72bbe558a9a42795f542aa
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── dev-requirements.txt
├── Doc
│ ├── docs-requirements.txt
│ ├── make.bat
│ ├── Makefile
│ ├── man
│ │ └── man1
│ │ └── ttx.1
│ ├── README.md
│ └── source
│ ├── afmLib.rst
│ ├── agl.rst
│ ├── assets
│ │ └── img
│ │ └── favicon.ico
│ ├── cffLib
│ │ ├── index.rst
│ │ ├── specializer.rst
│ │ └── width.rst
│ ├── colorLib
│ │ └── index.rst
│ ├── config.rst
│ ├── conf.py
│ ├── cu2qu
│ │ └── index.rst
│ ├── designspaceLib
│ │ ├── index.rst
│ │ ├── python.rst
│ │ ├── scripting.rst
│ │ ├── v5_class_diagram.png
│ │ ├── v5_class_diagram.puml
│ │ ├── v5_split_downconvert.png
│ │ ├── v5_split_downconvert.puml
│ │ ├── v5_variable_fonts_vs_instances.png
│ │ └── xml.rst
│ ├── developer.rst
│ ├── encodings
│ │ └── index.rst
│ ├── feaLib
│ │ └── index.rst
│ ├── index.rst
│ ├── merge.rst
│ ├── misc
│ │ ├── arrayTools.rst
│ │ ├── bezierTools.rst
│ │ ├── classifyTools.rst
│ │ ├── cliTools.rst
│ │ ├── configTools.rst
│ │ ├── eexec.rst
│ │ ├── encodingTools.rst
│ │ ├── etree.rst
│ │ ├── filenames.rst
│ │ ├── fixedTools.rst
│ │ ├── index.rst
│ │ ├── intTools.rst
│ │ ├── loggingTools.rst
│ │ ├── macCreatorType.rst
│ │ ├── macRes.rst
│ │ ├── plistlib.rst
│ │ ├── psCharStrings.rst
│ │ ├── psLib.rst
│ │ ├── psOperators.rst
│ │ ├── sstruct.rst
│ │ ├── symfont.rst
│ │ ├── testTools.rst
│ │ ├── textTools.rst
│ │ ├── timeTools.rst
│ │ ├── transform.rst
│ │ ├── xmlReader.rst
│ │ └── xmlWriter.rst
│ ├── mtiLib.rst
│ ├── optional.rst
│ ├── otlLib
│ │ └── index.rst
│ ├── pens
│ │ ├── areaPen.rst
│ │ ├── basePen.rst
│ │ ├── boundsPen.rst
│ │ ├── cocoaPen.rst
│ │ ├── cu2quPen.rst
│ │ ├── filterPen.rst
│ │ ├── freetypePen.rst
│ │ ├── index.rst
│ │ ├── momentsPen.rst
│ │ ├── perimeterPen.rst
│ │ ├── pointInsidePen.rst
│ │ ├── pointPen.rst
│ │ ├── qtPen.rst
│ │ ├── recordingPen.rst
│ │ ├── reportLabPen.rst
│ │ ├── reverseContourPen.rst
│ │ ├── roundingPen.rst
│ │ ├── statisticsPen.rst
│ │ ├── svgPathPen.rst
│ │ ├── t2CharStringPen.rst
│ │ ├── teePen.rst
│ │ ├── transformPen.rst
│ │ ├── ttGlyphPen.rst
│ │ └── wxPen.rst
│ ├── subset
│ │ ├── cff.rst
│ │ └── index.rst
│ ├── svgLib
│ │ ├── index.rst
│ │ └── path
│ │ ├── index.rst
│ │ └── parser.rst
│ ├── t1Lib.rst
│ ├── tfmLib.rst
│ ├── ttLib
│ │ ├── index.rst
│ │ ├── macUtils.rst
│ │ ├── sfnt.rst
│ │ ├── standardGlyphOrder.rst
│ │ ├── tables
│ │ │ ├── _a_n_k_r.rst
│ │ │ ├── _a_v_a_r.rst
│ │ │ ├── B_A_S_E_.rst
│ │ │ ├── _b_s_l_n.rst
│ │ │ ├── C_B_D_T_.rst
│ │ │ ├── C_B_L_C_.rst
│ │ │ ├── C_F_F__2.rst
│ │ │ ├── C_F_F_.rst
│ │ │ ├── _c_i_d_g.rst
│ │ │ ├── _c_m_a_p.rst
│ │ │ ├── C_O_L_R_.rst
│ │ │ ├── C_P_A_L_.rst
│ │ │ ├── _c_v_a_r.rst
│ │ │ ├── _c_v_t.rst
│ │ │ ├── D_S_I_G_.rst
│ │ │ ├── E_B_D_T_.rst
│ │ │ ├── E_B_L_C_.rst
│ │ │ ├── _f_e_a_t.rst
│ │ │ ├── F__e_a_t.rst
│ │ │ ├── F_F_T_M_.rst
│ │ │ ├── _f_p_g_m.rst
│ │ │ ├── _f_v_a_r.rst
│ │ │ ├── _g_a_s_p.rst
│ │ │ ├── _g_c_i_d.rst
│ │ │ ├── G_D_E_F_.rst
│ │ │ ├── G__l_a_t.rst
│ │ │ ├── G__l_o_c.rst
│ │ │ ├── _g_l_y_f.rst
│ │ │ ├── G_M_A_P_.rst
│ │ │ ├── G_P_K_G_.rst
│ │ │ ├── G_P_O_S_.rst
│ │ │ ├── G_S_U_B_.rst
│ │ │ ├── _g_v_a_r.rst
│ │ │ ├── _h_d_m_x.rst
│ │ │ ├── _h_e_a_d.rst
│ │ │ ├── _h_h_e_a.rst
│ │ │ ├── _h_m_t_x.rst
│ │ │ ├── H_V_A_R_.rst
│ │ │ ├── J_S_T_F_.rst
│ │ │ ├── _k_e_r_n.rst
│ │ │ ├── _l_c_a_r.rst
│ │ │ ├── _l_o_c_a.rst
│ │ │ ├── _l_t_a_g.rst
│ │ │ ├── L_T_S_H_.rst
│ │ │ ├── M_A_T_H_.rst
│ │ │ ├── _m_a_x_p.rst
│ │ │ ├── _m_e_t_a.rst
│ │ │ ├── M_E_T_A_.rst
│ │ │ ├── _m_o_r_t.rst
│ │ │ ├── _m_o_r_x.rst
│ │ │ ├── M_V_A_R_.rst
│ │ │ ├── _n_a_m_e.rst
│ │ │ ├── _o_p_b_d.rst
│ │ │ ├── O_S_2f_2.rst
│ │ │ ├── _p_o_s_t.rst
│ │ │ ├── _p_r_e_p.rst
│ │ │ ├── _p_r_o_p.rst
│ │ │ ├── _s_b_i_x.rst
│ │ │ ├── S__i_l_f.rst
│ │ │ ├── S__i_l_l.rst
│ │ │ ├── S_I_N_G_.rst
│ │ │ ├── S_T_A_T_.rst
│ │ │ ├── S_V_G_.rst
│ │ │ ├── _t_r_a_k.rst
│ │ │ ├── T_T_F_A_.rst
│ │ │ ├── V_D_M_X_.rst
│ │ │ ├── _v_h_e_a.rst
│ │ │ ├── _v_m_t_x.rst
│ │ │ ├── V_O_R_G_.rst
│ │ │ ├── VTT_related.rst
│ │ │ └── V_V_A_R_.rst
│ │ ├── tables.rst
│ │ ├── ttCollection.rst
│ │ ├── ttFont.rst
│ │ └── woff2.rst
│ ├── ttx.rst
│ ├── ufoLib
│ │ ├── converters.rst
│ │ ├── errors.rst
│ │ ├── filenames.rst
│ │ ├── glifLib.rst
│ │ ├── index.rst
│ │ ├── kerning.rst
│ │ ├── plistlib.rst
│ │ ├── pointpen.rst
│ │ ├── utils.rst
│ │ └── validators.rst
│ ├── unicodedata
│ │ ├── Blocks.rst
│ │ ├── index.rst
│ │ ├── OTTags.rst
│ │ ├── ScriptExtensions.rst
│ │ └── Scripts.rst
│ ├── unicode.rst
│ ├── varLib
│ │ ├── builder.rst
│ │ ├── cff.rst
│ │ ├── errors.rst
│ │ ├── featureVars.rst
│ │ ├── index.rst
│ │ ├── instancer.rst
│ │ ├── interpolatable.rst
│ │ ├── interpolate_layout.rst
│ │ ├── iup.rst
│ │ ├── merger.rst
│ │ ├── models.rst
│ │ ├── mutator.rst
│ │ ├── mvar.rst
│ │ ├── plot.rst
│ │ └── varStore.rst
│ └── voltLib
│ ├── index.rst
│ └── voltToFea.rst
├── fonttools
├── Icons
│ ├── FontToolsIconGreenCircle.pdf
│ ├── FontToolsIconGreenCircle.png
│ ├── FontToolsIconGreenSquare.pdf
│ ├── FontToolsIconGreenSquare.png
│ ├── FontToolsIconWhiteCircle.pdf
│ ├── FontToolsIconWhiteCircle.png
│ ├── FontToolsIconWhiteSquare.pdf
│ └── FontToolsIconWhiteSquare.png
├── Lib
│ └── fontTools
│ ├── afmLib.py
│ ├── agl.py
│ ├── cffLib
│ │ ├── CFF2ToCFF.py
│ │ ├── CFFToCFF2.py
│ │ ├── __init__.py
│ │ ├── specializer.py
│ │ ├── transforms.py
│ │ └── width.py
│ ├── colorLib
│ │ ├── builder.py
│ │ ├── errors.py
│ │ ├── geometry.py
│ │ ├── __init__.py
│ │ ├── table_builder.py
│ │ └── unbuilder.py
│ ├── config
│ │ └── __init__.py
│ ├── cu2qu
│ │ ├── benchmark.py
│ │ ├── cli.py
│ │ ├── cu2qu.py
│ │ ├── errors.py
│ │ ├── __init__.py
│ │ ├── __main__.py
│ │ └── ufo.py
│ ├── designspaceLib
│ │ ├── __init__.py
│ │ ├── __main__.py
│ │ ├── split.py
│ │ ├── statNames.py
│ │ └── types.py
│ ├── encodings
│ │ ├── codecs.py
│ │ ├── __init__.py
│ │ ├── MacRoman.py
│ │ └── StandardEncoding.py
│ ├── feaLib
│ │ ├── ast.py
│ │ ├── builder.py
│ │ ├── error.py
│ │ ├── __init__.py
│ │ ├── lexer.py
│ │ ├── location.py
│ │ ├── lookupDebugInfo.py
│ │ ├── __main__.py
│ │ ├── parser.py
│ │ └── variableScalar.py
│ ├── fontBuilder.py
│ ├── help.py
│ ├── __init__.py
│ ├── __main__.py
│ ├── merge
│ │ ├── base.py
│ │ ├── cmap.py
│ │ ├── __init__.py
│ │ ├── layout.py
│ │ ├── __main__.py
│ │ ├── options.py
│ │ ├── tables.py
│ │ ├── unicode.py
│ │ └── util.py
│ ├── misc
│ │ ├── arrayTools.py
│ │ ├── bezierTools.py
│ │ ├── classifyTools.py
│ │ ├── cliTools.py
│ │ ├── configTools.py
│ │ ├── cython.py
│ │ ├── dictTools.py
│ │ ├── eexec.py
│ │ ├── encodingTools.py
│ │ ├── etree.py
│ │ ├── filenames.py
│ │ ├── fixedTools.py
│ │ ├── __init__.py
│ │ ├── intTools.py
│ │ ├── iterTools.py
│ │ ├── lazyTools.py
│ │ ├── loggingTools.py
│ │ ├── macCreatorType.py
│ │ ├── macRes.py
│ │ ├── plistlib
│ │ │ ├── __init__.py
│ │ │ └── py.typed
│ │ ├── psCharStrings.py
│ │ ├── psLib.py
│ │ ├── psOperators.py
│ │ ├── py23.py
│ │ ├── roundTools.py
│ │ ├── sstruct.py
│ │ ├── symfont.py
│ │ ├── testTools.py
│ │ ├── textTools.py
│ │ ├── timeTools.py
│ │ ├── transform.py
│ │ ├── treeTools.py
│ │ ├── vector.py
│ │ ├── visitor.py
│ │ ├── xmlReader.py
│ │ └── xmlWriter.py
│ ├── mtiLib
│ │ ├── __init__.py
│ │ └── __main__.py
│ ├── otlLib
│ │ ├── builder.py
│ │ ├── builder.py.sketch
│ │ ├── error.py
│ │ ├── __init__.py
│ │ ├── maxContextCalc.py
│ │ └── optimize
│ │ ├── gpos.py
│ │ ├── __init__.py
│ │ └── __main__.py
│ ├── pens
│ │ ├── areaPen.py
│ │ ├── basePen.py
│ │ ├── boundsPen.py
│ │ ├── cairoPen.py
│ │ ├── cocoaPen.py
│ │ ├── cu2quPen.py
│ │ ├── explicitClosingLinePen.py
│ │ ├── filterPen.py
│ │ ├── freetypePen.py
│ │ ├── hashPointPen.py
│ │ ├── __init__.py
│ │ ├── momentsPen.py
│ │ ├── perimeterPen.py
│ │ ├── pointInsidePen.py
│ │ ├── pointPen.py
│ │ ├── qtPen.py
│ │ ├── qu2cuPen.py
│ │ ├── quartzPen.py
│ │ ├── recordingPen.py
│ │ ├── reportLabPen.py
│ │ ├── reverseContourPen.py
│ │ ├── roundingPen.py
│ │ ├── statisticsPen.py
│ │ ├── svgPathPen.py
│ │ ├── t2CharStringPen.py
│ │ ├── teePen.py
│ │ ├── transformPen.py
│ │ ├── ttGlyphPen.py
│ │ └── wxPen.py
│ ├── qu2cu
│ │ ├── benchmark.py
│ │ ├── cli.py
│ │ ├── __init__.py
│ │ ├── __main__.py
│ │ └── qu2cu.py
│ ├── subset
│ │ ├── cff.py
│ │ ├── __init__.py
│ │ ├── __main__.py
│ │ ├── svg.py
│ │ └── util.py
│ ├── svgLib
│ │ ├── __init__.py
│ │ └── path
│ │ ├── arc.py
│ │ ├── __init__.py
│ │ ├── parser.py
│ │ └── shapes.py
│ ├── t1Lib
│ │ └── __init__.py
│ ├── tfmLib.py
│ ├── ttLib
│ │ ├── __init__.py
│ │ ├── macUtils.py
│ │ ├── __main__.py
│ │ ├── removeOverlaps.py
│ │ ├── reorderGlyphs.py
│ │ ├── scaleUpem.py
│ │ ├── sfnt.py
│ │ ├── standardGlyphOrder.py
│ │ ├── tables
│ │ │ ├── _a_n_k_r.py
│ │ │ ├── asciiTable.py
│ │ │ ├── _a_v_a_r.py
│ │ │ ├── B_A_S_E_.py
│ │ │ ├── BitmapGlyphMetrics.py
│ │ │ ├── _b_s_l_n.py
│ │ │ ├── C_B_D_T_.py
│ │ │ ├── C_B_L_C_.py
│ │ │ ├── C_F_F__2.py
│ │ │ ├── C_F_F_.py
│ │ │ ├── _c_i_d_g.py
│ │ │ ├── _c_m_a_p.py
│ │ │ ├── C_O_L_R_.py
│ │ │ ├── C_P_A_L_.py
│ │ │ ├── _c_v_a_r.py
│ │ │ ├── _c_v_t.py
│ │ │ ├── D__e_b_g.py
│ │ │ ├── DefaultTable.py
│ │ │ ├── D_S_I_G_.py
│ │ │ ├── E_B_D_T_.py
│ │ │ ├── E_B_L_C_.py
│ │ │ ├── _f_e_a_t.py
│ │ │ ├── F__e_a_t.py
│ │ │ ├── F_F_T_M_.py
│ │ │ ├── _f_p_g_m.py
│ │ │ ├── _f_v_a_r.py
│ │ │ ├── _g_a_s_p.py
│ │ │ ├── _g_c_i_d.py
│ │ │ ├── G_D_E_F_.py
│ │ │ ├── G__l_a_t.py
│ │ │ ├── G__l_o_c.py
│ │ │ ├── _g_l_y_f.py
│ │ │ ├── G_M_A_P_.py
│ │ │ ├── G_P_K_G_.py
│ │ │ ├── G_P_O_S_.py
│ │ │ ├── grUtils.py
│ │ │ ├── G_S_U_B_.py
│ │ │ ├── _g_v_a_r.py
│ │ │ ├── _h_d_m_x.py
│ │ │ ├── _h_e_a_d.py
│ │ │ ├── _h_h_e_a.py
│ │ │ ├── _h_m_t_x.py
│ │ │ ├── H_V_A_R_.py
│ │ │ ├── __init__.py
│ │ │ ├── J_S_T_F_.py
│ │ │ ├── _k_e_r_n.py
│ │ │ ├── _l_c_a_r.py
│ │ │ ├── _l_o_c_a.py
│ │ │ ├── _l_t_a_g.py
│ │ │ ├── L_T_S_H_.py
│ │ │ ├── M_A_T_H_.py
│ │ │ ├── _m_a_x_p.py
│ │ │ ├── _m_e_t_a.py
│ │ │ ├── M_E_T_A_.py
│ │ │ ├── _m_o_r_t.py
│ │ │ ├── _m_o_r_x.py
│ │ │ ├── M_V_A_R_.py
│ │ │ ├── _n_a_m_e.py
│ │ │ ├── _o_p_b_d.py
│ │ │ ├── O_S_2f_2.py
│ │ │ ├── otBase.py
│ │ │ ├── otConverters.py
│ │ │ ├── otData.py
│ │ │ ├── otTables.py
│ │ │ ├── otTraverse.py
│ │ │ ├── _p_o_s_t.py
│ │ │ ├── _p_r_e_p.py
│ │ │ ├── _p_r_o_p.py
│ │ │ ├── sbixGlyph.py
│ │ │ ├── _s_b_i_x.py
│ │ │ ├── sbixStrike.py
│ │ │ ├── S__i_l_f.py
│ │ │ ├── S__i_l_l.py
│ │ │ ├── S_I_N_G_.py
│ │ │ ├── S_T_A_T_.py
│ │ │ ├── S_V_G_.py
│ │ │ ├── table_API_readme.txt
│ │ │ ├── _t_r_a_k.py
│ │ │ ├── T_S_I__0.py
│ │ │ ├── T_S_I__1.py
│ │ │ ├── T_S_I__2.py
│ │ │ ├── T_S_I__3.py
│ │ │ ├── T_S_I__5.py
│ │ │ ├── T_S_I_B_.py
│ │ │ ├── T_S_I_C_.py
│ │ │ ├── T_S_I_D_.py
│ │ │ ├── T_S_I_J_.py
│ │ │ ├── T_S_I_P_.py
│ │ │ ├── T_S_I_S_.py
│ │ │ ├── T_S_I_V_.py
│ │ │ ├── T_T_F_A_.py
│ │ │ ├── ttProgram.py
│ │ │ ├── TupleVariation.py
│ │ │ ├── V_A_R_C_.py
│ │ │ ├── V_D_M_X_.py
│ │ │ ├── _v_h_e_a.py
│ │ │ ├── _v_m_t_x.py
│ │ │ ├── V_O_R_G_.py
│ │ │ └── V_V_A_R_.py
│ │ ├── ttCollection.py
│ │ ├── ttFont.py
│ │ ├── ttGlyphSet.py
│ │ ├── ttVisitor.py
│ │ └── woff2.py
│ ├── ttx.py
│ ├── ufoLib
│ │ ├── converters.py
│ │ ├── errors.py
│ │ ├── etree.py
│ │ ├── filenames.py
│ │ ├── glifLib.py
│ │ ├── __init__.py
│ │ ├── kerning.py
│ │ ├── plistlib.py
│ │ ├── pointPen.py
│ │ ├── utils.py
│ │ └── validators.py
│ ├── unicodedata
│ │ ├── Blocks.py
│ │ ├── __init__.py
│ │ ├── OTTags.py
│ │ ├── ScriptExtensions.py
│ │ └── Scripts.py
│ ├── unicode.py
│ ├── varLib
│ │ ├── avarPlanner.py
│ │ ├── avar.py
│ │ ├── builder.py
│ │ ├── cff.py
│ │ ├── errors.py
│ │ ├── featureVars.py
│ │ ├── __init__.py
│ │ ├── instancer
│ │ │ ├── featureVars.py
│ │ │ ├── __init__.py
│ │ │ ├── __main__.py
│ │ │ ├── names.py
│ │ │ └── solver.py
│ │ ├── interpolatableHelpers.py
│ │ ├── interpolatablePlot.py
│ │ ├── interpolatable.py
│ │ ├── interpolatableTestContourOrder.py
│ │ ├── interpolatableTestStartingPoint.py
│ │ ├── interpolate_layout.py
│ │ ├── iup.py
│ │ ├── __main__.py
│ │ ├── merger.py
│ │ ├── models.py
│ │ ├── multiVarStore.py
│ │ ├── mutator.py
│ │ ├── mvar.py
│ │ ├── plot.py
│ │ ├── stat.py
│ │ └── varStore.py
│ └── voltLib
│ ├── ast.py
│ ├── error.py
│ ├── __init__.py
│ ├── lexer.py
│ ├── parser.py
│ └── voltToFea.py
├── LICENSE
├── LICENSE.external
├── Makefile
├── MANIFEST.in
├── MetaTools
│ ├── buildTableList.py
│ ├── buildUCD.py
│ └── roundTrip.py
├── mypy.ini
├── NEWS.rst
├── pyproject.toml
├── README.rst
├── requirements.txt
├── SECURITY.md
├── setup.cfg
├── setup.py
├── Snippets
│ ├── checksum.py
│ ├── cmap-format.py
│ ├── compact_gpos.py
│ ├── decompose-ttf.py
│ ├── dump_woff_metadata.py
│ ├── edit_raw_table_data.py
│ ├── fix-dflt-langsys.py
│ ├── fontTools
│ ├── interpolate.py
│ ├── layout-features.py
│ ├── merge_woff_metadata.py
│ ├── name-viewer.ipynb
│ ├── otf2ttf.py
│ ├── print-json.py
│ ├── README.md
│ ├── rename-fonts.py
│ ├── statShape.py
│ ├── subset-fpgm.py
│ └── svg2glif.py
├── Tests
│ ├── afmLib
│ │ ├── afmLib_test.py
│ │ └── data
│ │ └── TestAFM.afm
│ ├── agl_test.py
│ ├── cffLib
│ │ ├── cffLib_test.py
│ │ ├── data
│ │ │ ├── CFFToCFF2-1.otf
│ │ │ ├── LinLibertine_RBI.otf
│ │ │ ├── TestCFF2Widths.ttx
│ │ │ ├── TestFDSelect4.ttx
│ │ │ ├── TestOTF.ttx
│ │ │ └── TestSparseCFF2VF.ttx
│ │ └── specializer_test.py
│ ├── colorLib
│ │ ├── builder_test.py
│ │ ├── __init__.py
│ │ ├── table_builder_test.py
│ │ └── unbuilder_test.py
│ ├── config_test.py
│ ├── conftest.py
│ ├── cu2qu
│ │ ├── cli_test.py
│ │ ├── cu2qu_test.py
│ │ ├── data
│ │ │ ├── curves.json
│ │ │ ├── RobotoSubset-Bold.ufo
│ │ │ │ ├── fontinfo.plist
│ │ │ │ ├── glyphs
│ │ │ │ │ ├── a.glif
│ │ │ │ │ ├── A_.glif
│ │ │ │ │ ├── b.glif
│ │ │ │ │ ├── B_.glif
│ │ │ │ │ ├── c.glif
│ │ │ │ │ ├── C_.glif
│ │ │ │ │ ├── contents.plist
│ │ │ │ │ ├── d.glif
│ │ │ │ │ ├── D_.glif
│ │ │ │ │ ├── e.glif
│ │ │ │ │ ├── E_.glif
│ │ │ │ │ ├── f.glif
│ │ │ │ │ ├── F_.glif
│ │ │ │ │ ├── g.glif
│ │ │ │ │ ├── G_.glif
│ │ │ │ │ ├── h.glif
│ │ │ │ │ ├── H_.glif
│ │ │ │ │ ├── i.glif
│ │ │ │ │ ├── I_.glif
│ │ │ │ │ ├── j.glif
│ │ │ │ │ ├── J_.glif
│ │ │ │ │ ├── k.glif
│ │ │ │ │ ├── K_.glif
│ │ │ │ │ ├── l.glif
│ │ │ │ │ ├── L_.glif
│ │ │ │ │ ├── m.glif
│ │ │ │ │ ├── M_.glif
│ │ │ │ │ ├── n.glif
│ │ │ │ │ ├── N_.glif
│ │ │ │ │ ├── o.glif
│ │ │ │ │ ├── O_.glif
│ │ │ │ │ ├── p.glif
│ │ │ │ │ ├── P_.glif
│ │ │ │ │ ├── q.glif
│ │ │ │ │ ├── Q_.glif
│ │ │ │ │ ├── r.glif
│ │ │ │ │ ├── R_.glif
│ │ │ │ │ ├── s.glif
│ │ │ │ │ ├── S_.glif
│ │ │ │ │ ├── space.glif
│ │ │ │ │ ├── t.glif
│ │ │ │ │ ├── T_.glif
│ │ │ │ │ ├── u.glif
│ │ │ │ │ ├── U_.glif
│ │ │ │ │ ├── v.glif
│ │ │ │ │ ├── V_.glif
│ │ │ │ │ ├── w.glif
│ │ │ │ │ ├── W_.glif
│ │ │ │ │ ├── x.glif
│ │ │ │ │ ├── X_.glif
│ │ │ │ │ ├── y.glif
│ │ │ │ │ ├── Y_.glif
│ │ │ │ │ ├── z.glif
│ │ │ │ │ └── Z_.glif
│ │ │ │ ├── layercontents.plist
│ │ │ │ ├── lib.plist
│ │ │ │ └── metainfo.plist
│ │ │ └── RobotoSubset-Regular.ufo
│ │ │ ├── fontinfo.plist
│ │ │ ├── glyphs
│ │ │ │ ├── a.glif
│ │ │ │ ├── A_.glif
│ │ │ │ ├── b.glif
│ │ │ │ ├── B_.glif
│ │ │ │ ├── c.glif
│ │ │ │ ├── C_.glif
│ │ │ │ ├── contents.plist
│ │ │ │ ├── d.glif
│ │ │ │ ├── D_.glif
│ │ │ │ ├── e.glif
│ │ │ │ ├── E_.glif
│ │ │ │ ├── f.glif
│ │ │ │ ├── F_.glif
│ │ │ │ ├── g.glif
│ │ │ │ ├── G_.glif
│ │ │ │ ├── h.glif
│ │ │ │ ├── H_.glif
│ │ │ │ ├── i.glif
│ │ │ │ ├── I_.glif
│ │ │ │ ├── j.glif
│ │ │ │ ├── J_.glif
│ │ │ │ ├── k.glif
│ │ │ │ ├── K_.glif
│ │ │ │ ├── l.glif
│ │ │ │ ├── L_.glif
│ │ │ │ ├── m.glif
│ │ │ │ ├── M_.glif
│ │ │ │ ├── n.glif
│ │ │ │ ├── N_.glif
│ │ │ │ ├── o.glif
│ │ │ │ ├── O_.glif
│ │ │ │ ├── p.glif
│ │ │ │ ├── P_.glif
│ │ │ │ ├── q.glif
│ │ │ │ ├── Q_.glif
│ │ │ │ ├── r.glif
│ │ │ │ ├── R_.glif
│ │ │ │ ├── s.glif
│ │ │ │ ├── S_.glif
│ │ │ │ ├── space.glif
│ │ │ │ ├── t.glif
│ │ │ │ ├── T_.glif
│ │ │ │ ├── u.glif
│ │ │ │ ├── U_.glif
│ │ │ │ ├── v.glif
│ │ │ │ ├── V_.glif
│ │ │ │ ├── w.glif
│ │ │ │ ├── W_.glif
│ │ │ │ ├── x.glif
│ │ │ │ ├── X_.glif
│ │ │ │ ├── y.glif
│ │ │ │ ├── Y_.glif
│ │ │ │ ├── z.glif
│ │ │ │ └── Z_.glif
│ │ │ ├── layercontents.plist
│ │ │ ├── lib.plist
│ │ │ └── metainfo.plist
│ │ └── ufo_test.py
│ ├── designspaceLib
│ │ ├── data
│ │ │ ├── convert5to4_output
│ │ │ │ ├── AktivGroteskVF_Italics_Wght.designspace
│ │ │ │ ├── AktivGroteskVF_Italics_WghtWdth.designspace
│ │ │ │ ├── AktivGroteskVF_Wght.designspace
│ │ │ │ ├── AktivGroteskVF_WghtWdth.designspace
│ │ │ │ ├── AktivGroteskVF_WghtWdthItal.designspace
│ │ │ │ ├── SourceSerif4Variable-Italic.designspace
│ │ │ │ └── SourceSerif4Variable-Roman.designspace
│ │ │ ├── DS5BreakTest.designspace
│ │ │ ├── split_output
│ │ │ │ ├── AktivGroteskVF_Italics_Wght.designspace
│ │ │ │ ├── AktivGroteskVF_Italics_WghtWdth.designspace
│ │ │ │ ├── AktivGroteskVF_Wght.designspace
│ │ │ │ ├── AktivGroteskVF_WghtWdth.designspace
│ │ │ │ ├── AktivGroteskVF_WghtWdthItal.designspace
│ │ │ │ ├── MutatorSansVariable_Weight.designspace
│ │ │ │ ├── MutatorSansVariable_Weight_Width.designspace
│ │ │ │ ├── MutatorSansVariable_Width.designspace
│ │ │ │ ├── MutatorSerifVariable_Width.designspace
│ │ │ │ ├── SourceSerif4Variable-Italic.designspace
│ │ │ │ ├── SourceSerif4Variable-Roman.designspace
│ │ │ │ ├── test_v5_aktiv_.designspace
│ │ │ │ ├── test_v5_MutatorSans_and_Serif_serif_0.0.designspace
│ │ │ │ ├── test_v5_MutatorSans_and_Serif_serif_1.0.designspace
│ │ │ │ ├── test_v5_sourceserif_italic_0.0.designspace
│ │ │ │ └── test_v5_sourceserif_italic_1.0.designspace
│ │ │ ├── test_avar2.designspace
│ │ │ ├── test_v4_original.designspace
│ │ │ ├── test_v5_aktiv.designspace
│ │ │ ├── test_v5_decovar.designspace
│ │ │ ├── test_v5.designspace
│ │ │ ├── test_v5_discrete.designspace
│ │ │ ├── test_v5_MutatorSans_and_Serif.designspace
│ │ │ ├── test_v5_original.designspace
│ │ │ └── test_v5_sourceserif.designspace
│ │ ├── designspace_test.py
│ │ ├── designspace_v5_test.py
│ │ ├── fixtures.py
│ │ ├── __init__.py
│ │ ├── split_test.py
│ │ └── statNames_test.py
│ ├── encodings
│ │ └── codecs_test.py
│ ├── feaLib
│ │ ├── ast_test.py
│ │ ├── builder_test.py
│ │ ├── data
│ │ │ ├── aalt_chain_contextual_subst.fea
│ │ │ ├── aalt_chain_contextual_subst.ttx
│ │ │ ├── AlternateChained.fea
│ │ │ ├── AlternateChained.ttx
│ │ │ ├── AlternateSubtable.fea
│ │ │ ├── AlternateSubtable.ttx
│ │ │ ├── Attach.fea
│ │ │ ├── Attach.ttx
│ │ │ ├── baseClass.fea
│ │ │ ├── baseClass.feax
│ │ │ ├── bug1307.fea
│ │ │ ├── bug1307.ttx
│ │ │ ├── bug1459.fea
│ │ │ ├── bug1459.ttx
│ │ │ ├── bug2276.fea
│ │ │ ├── bug2276.ttx
│ │ │ ├── bug2949.fea
│ │ │ ├── bug2949.ttx
│ │ │ ├── bug453.fea
│ │ │ ├── bug453.ttx
│ │ │ ├── bug457.fea
│ │ │ ├── bug457.ttx
│ │ │ ├── bug463.fea
│ │ │ ├── bug463.ttx
│ │ │ ├── bug501.fea
│ │ │ ├── bug501.ttx
│ │ │ ├── bug502.fea
│ │ │ ├── bug502.ttx
│ │ │ ├── bug504.fea
│ │ │ ├── bug504.ttx
│ │ │ ├── bug505.fea
│ │ │ ├── bug505.ttx
│ │ │ ├── bug506.fea
│ │ │ ├── bug506.ttx
│ │ │ ├── bug509.fea
│ │ │ ├── bug509.ttx
│ │ │ ├── bug512.fea
│ │ │ ├── bug512.ttx
│ │ │ ├── bug514.fea
│ │ │ ├── bug514.ttx
│ │ │ ├── bug568.fea
│ │ │ ├── bug568.ttx
│ │ │ ├── bug633.fea
│ │ │ ├── bug633.ttx
│ │ │ ├── ChainPosSubtable.fea
│ │ │ ├── ChainPosSubtable.ttx
│ │ │ ├── ChainSubstSubtable.fea
│ │ │ ├── ChainSubstSubtable.ttx
│ │ │ ├── cid_range.fea
│ │ │ ├── cid_range.ttx
│ │ │ ├── delete_glyph.fea
│ │ │ ├── delete_glyph.ttx
│ │ │ ├── duplicate_lookup_reference.fea
│ │ │ ├── duplicate_lookup_reference.ttx
│ │ │ ├── enum.fea
│ │ │ ├── enum.ttx
│ │ │ ├── feature_aalt.fea
│ │ │ ├── feature_aalt.ttx
│ │ │ ├── GlyphClassDef.fea
│ │ │ ├── GlyphClassDef.ttx
│ │ │ ├── GPOS_1.fea
│ │ │ ├── GPOS_1.ttx
│ │ │ ├── GPOS_1_zero.fea
│ │ │ ├── GPOS_1_zero.ttx
│ │ │ ├── GPOS_2b.fea
│ │ │ ├── GPOS_2b.ttx
│ │ │ ├── GPOS_2.fea
│ │ │ ├── GPOS_2.ttx
│ │ │ ├── GPOS_3.fea
│ │ │ ├── GPOS_3.ttx
│ │ │ ├── GPOS_4.fea
│ │ │ ├── GPOS_4.ttx
│ │ │ ├── GPOS_5.fea
│ │ │ ├── GPOS_5.ttx
│ │ │ ├── GPOS_6.fea
│ │ │ ├── GPOS_6.ttx
│ │ │ ├── GPOS_8.fea
│ │ │ ├── GPOS_8.ttx
│ │ │ ├── GSUB_2.fea
│ │ │ ├── GSUB_2.ttx
│ │ │ ├── GSUB_3.fea
│ │ │ ├── GSUB_3.ttx
│ │ │ ├── GSUB_5_formats.fea
│ │ │ ├── GSUB_5_formats.ttx
│ │ │ ├── GSUB_6.fea
│ │ │ ├── GSUB_6_formats.fea
│ │ │ ├── GSUB_6_formats.ttx
│ │ │ ├── GSUB_6.ttx
│ │ │ ├── GSUB_8.fea
│ │ │ ├── GSUB_8.ttx
│ │ │ ├── GSUB_error.fea
│ │ │ ├── ignore_pos.fea
│ │ │ ├── ignore_pos.ttx
│ │ │ ├── include
│ │ │ │ ├── include1.fea
│ │ │ │ ├── include3.fea
│ │ │ │ ├── include4.fea
│ │ │ │ ├── include5.fea
│ │ │ │ ├── include6.fea
│ │ │ │ ├── includemissingfile.fea
│ │ │ │ ├── includeself.fea
│ │ │ │ ├── subdir
│ │ │ │ │ └── include2.fea
│ │ │ │ ├── test.fea
│ │ │ │ └── test.ufo
│ │ │ │ └── features.fea
│ │ │ ├── include0.fea
│ │ │ ├── language_required.fea
│ │ │ ├── language_required.ttx
│ │ │ ├── LigatureCaretByIndex.fea
│ │ │ ├── LigatureCaretByIndex.ttx
│ │ │ ├── LigatureCaretByPos.fea
│ │ │ ├── LigatureCaretByPos.ttx
│ │ │ ├── LigatureSubtable.fea
│ │ │ ├── LigatureSubtable.ttx
│ │ │ ├── lookup-debug.ttx
│ │ │ ├── lookup.fea
│ │ │ ├── lookupflag.fea
│ │ │ ├── lookupflag.ttx
│ │ │ ├── lookup.ttx
│ │ │ ├── markClass.fea
│ │ │ ├── markClass.ttx
│ │ │ ├── mini.fea
│ │ │ ├── multiple_feature_blocks.fea
│ │ │ ├── multiple_feature_blocks.ttx
│ │ │ ├── MultipleLookupsPerGlyph2.fea
│ │ │ ├── MultipleLookupsPerGlyph2.ttx
│ │ │ ├── MultipleLookupsPerGlyph.fea
│ │ │ ├── MultipleLookupsPerGlyph.ttx
│ │ │ ├── MultipleSubstSubtable.fea
│ │ │ ├── MultipleSubstSubtable.ttx
│ │ │ ├── name.fea
│ │ │ ├── name.ttx
│ │ │ ├── omitted_GlyphClassDef.fea
│ │ │ ├── omitted_GlyphClassDef.ttx
│ │ │ ├── PairPosSubtable.fea
│ │ │ ├── PairPosSubtable.ttx
│ │ │ ├── SingleSubstSubtable.fea
│ │ │ ├── SingleSubstSubtable.ttx
│ │ │ ├── size2.fea
│ │ │ ├── size2.ttx
│ │ │ ├── size.fea
│ │ │ ├── size.ttx
│ │ │ ├── spec10.fea
│ │ │ ├── spec10.ttx
│ │ │ ├── spec4h1.fea
│ │ │ ├── spec4h1.ttx
│ │ │ ├── spec4h2.fea
│ │ │ ├── spec4h2.ttx
│ │ │ ├── spec5d1.fea
│ │ │ ├── spec5d1.ttx
│ │ │ ├── spec5d2.fea
│ │ │ ├── spec5d2.ttx
│ │ │ ├── spec5fi1.fea
│ │ │ ├── spec5fi1.ttx
│ │ │ ├── spec5fi2.fea
│ │ │ ├── spec5fi2.ttx
│ │ │ ├── spec5fi3.fea
│ │ │ ├── spec5fi3.ttx
│ │ │ ├── spec5fi4.fea
│ │ │ ├── spec5fi4.ttx
│ │ │ ├── spec5f_ii_1.fea
│ │ │ ├── spec5f_ii_1.ttx
│ │ │ ├── spec5f_ii_2.fea
│ │ │ ├── spec5f_ii_2.ttx
│ │ │ ├── spec5f_ii_3.fea
│ │ │ ├── spec5f_ii_3.ttx
│ │ │ ├── spec5f_ii_4.fea
│ │ │ ├── spec5f_ii_4.ttx
│ │ │ ├── spec5h1.fea
│ │ │ ├── spec5h1.ttx
│ │ │ ├── spec6b_ii.fea
│ │ │ ├── spec6b_ii.ttx
│ │ │ ├── spec6d2.fea
│ │ │ ├── spec6d2.ttx
│ │ │ ├── spec6e.fea
│ │ │ ├── spec6e.ttx
│ │ │ ├── spec6f.fea
│ │ │ ├── spec6f.ttx
│ │ │ ├── spec6h_ii.fea
│ │ │ ├── spec6h_iii_1.fea
│ │ │ ├── spec6h_iii_1.ttx
│ │ │ ├── spec6h_iii_3d.fea
│ │ │ ├── spec6h_iii_3d.ttx
│ │ │ ├── spec6h_ii.ttx
│ │ │ ├── spec8a.fea
│ │ │ ├── spec8a.ttx
│ │ │ ├── spec8b.fea
│ │ │ ├── spec8b.ttx
│ │ │ ├── spec8c.fea
│ │ │ ├── spec8c.ttx
│ │ │ ├── spec8d.fea
│ │ │ ├── spec8d.ttx
│ │ │ ├── spec9a.fea
│ │ │ ├── spec9a.ttx
│ │ │ ├── spec9b.fea
│ │ │ ├── spec9b.ttx
│ │ │ ├── spec9c1.fea
│ │ │ ├── spec9c1.ttx
│ │ │ ├── spec9c2.fea
│ │ │ ├── spec9c2.ttx
│ │ │ ├── spec9c3.fea
│ │ │ ├── spec9c3.ttx
│ │ │ ├── spec9d.fea
│ │ │ ├── spec9d.ttx
│ │ │ ├── spec9e.fea
│ │ │ ├── spec9e.ttx
│ │ │ ├── spec9f.fea
│ │ │ ├── spec9f.ttx
│ │ │ ├── spec9g.fea
│ │ │ ├── spec9g.ttx
│ │ │ ├── STAT_bad.fea
│ │ │ ├── STAT_test_elidedFallbackNameID.fea
│ │ │ ├── STAT_test_elidedFallbackNameID.ttx
│ │ │ ├── STAT_test.fea
│ │ │ ├── STAT_test.ttx
│ │ │ ├── SubstSubtable.fea
│ │ │ ├── SubstSubtable.ttx
│ │ │ ├── test.fea
│ │ │ ├── variable_bug2772.fea
│ │ │ ├── variable_bug2772.ttx
│ │ │ ├── variable_conditionset.fea
│ │ │ ├── variable_conditionset.ttx
│ │ │ ├── variable_mark_anchor.fea
│ │ │ ├── variable_mark_anchor.ttx
│ │ │ ├── variable_scalar_anchor.fea
│ │ │ ├── variable_scalar_anchor.ttx
│ │ │ ├── variable_scalar_valuerecord.fea
│ │ │ ├── variable_scalar_valuerecord.ttx
│ │ │ ├── ZeroValue_ChainSinglePos_horizontal.fea
│ │ │ ├── ZeroValue_ChainSinglePos_horizontal.ttx
│ │ │ ├── ZeroValue_ChainSinglePos_vertical.fea
│ │ │ ├── ZeroValue_ChainSinglePos_vertical.ttx
│ │ │ ├── ZeroValue_PairPos_horizontal.fea
│ │ │ ├── ZeroValue_PairPos_horizontal.ttx
│ │ │ ├── ZeroValue_PairPos_vertical.fea
│ │ │ ├── ZeroValue_PairPos_vertical.ttx
│ │ │ ├── ZeroValue_SinglePos_horizontal.fea
│ │ │ ├── ZeroValue_SinglePos_horizontal.ttx
│ │ │ ├── ZeroValue_SinglePos_vertical.fea
│ │ │ └── ZeroValue_SinglePos_vertical.ttx
│ │ ├── error_test.py
│ │ ├── __init__.py
│ │ ├── lexer_test.py
│ │ ├── parser_test.py
│ │ └── STAT2.fea
│ ├── fontBuilder
│ │ ├── data
│ │ │ ├── test.otf.ttx
│ │ │ ├── test.ttf.ttx
│ │ │ ├── test_uvs.ttf.ttx
│ │ │ ├── test_var.otf.ttx
│ │ │ └── test_var.ttf.ttx
│ │ └── fontBuilder_test.py
│ ├── merge
│ │ ├── data
│ │ │ ├── CFFFont1.ttx
│ │ │ ├── CFFFont2.ttx
│ │ │ └── CFFFont_expected.ttx
│ │ └── merge_test.py
│ ├── misc
│ │ ├── arrayTools_test.py
│ │ ├── bezierTools_test.py
│ │ ├── classifyTools_test.py
│ │ ├── configTools_test.py
│ │ ├── eexec_test.py
│ │ ├── encodingTools_test.py
│ │ ├── etree_test.py
│ │ ├── filenames_test.py
│ │ ├── fixedTools_test.py
│ │ ├── loggingTools_test.py
│ │ ├── macRes_test.py
│ │ ├── plistlib_test.py
│ │ ├── psCharStrings_test.py
│ │ ├── py23_test.py
│ │ ├── symfont_test.py
│ │ ├── testdata
│ │ │ └── test.plist
│ │ ├── testTools_test.py
│ │ ├── textTools_test.py
│ │ ├── timeTools_test.py
│ │ ├── transform_test.py
│ │ ├── treeTools_test.py
│ │ ├── vector_test.py
│ │ ├── visitor_test.py
│ │ ├── xmlReader_test.py
│ │ └── xmlWriter_test.py
│ ├── mtiLib
│ │ ├── data
│ │ │ ├── featurename-backward.ttx.GSUB
│ │ │ ├── featurename-backward.txt
│ │ │ ├── featurename-forward.ttx.GSUB
│ │ │ ├── featurename-forward.txt
│ │ │ ├── lookupnames-backward.ttx.GSUB
│ │ │ ├── lookupnames-backward.txt
│ │ │ ├── lookupnames-forward.ttx.GSUB
│ │ │ ├── lookupnames-forward.txt
│ │ │ ├── mixed-toplevels.ttx.GSUB
│ │ │ ├── mixed-toplevels.txt
│ │ │ └── mti
│ │ │ ├── chainedclass.ttx.GSUB
│ │ │ ├── chainedclass.txt
│ │ │ ├── chainedcoverage.ttx.GSUB
│ │ │ ├── chainedcoverage.txt
│ │ │ ├── chained-glyph.ttx.GPOS
│ │ │ ├── chained-glyph.ttx.GSUB
│ │ │ ├── chained-glyph.txt
│ │ │ ├── cmap.ttx
│ │ │ ├── cmap.ttx.cmap
│ │ │ ├── cmap.txt
│ │ │ ├── contextclass.txt
│ │ │ ├── contextcoverage.txt
│ │ │ ├── context-glyph.txt
│ │ │ ├── featuretable.txt
│ │ │ ├── gdefattach.ttx.GDEF
│ │ │ ├── gdefattach.txt
│ │ │ ├── gdefclasses.ttx.GDEF
│ │ │ ├── gdefclasses.txt
│ │ │ ├── gdefligcaret.ttx.GDEF
│ │ │ ├── gdefligcaret.txt
│ │ │ ├── gdefmarkattach.ttx.GDEF
│ │ │ ├── gdefmarkattach.txt
│ │ │ ├── gdefmarkfilter.ttx.GDEF
│ │ │ ├── gdefmarkfilter.txt
│ │ │ ├── gposcursive.ttx.GPOS
│ │ │ ├── gposcursive.txt
│ │ │ ├── gposkernset.ttx.GPOS
│ │ │ ├── gposkernset.txt
│ │ │ ├── gposmarktobase.ttx.GPOS
│ │ │ ├── gposmarktobase.txt
│ │ │ ├── gpospairclass.ttx.GPOS
│ │ │ ├── gpospairclass.txt
│ │ │ ├── gpospairglyph.ttx.GPOS
│ │ │ ├── gpospairglyph.txt
│ │ │ ├── gpossingle.ttx.GPOS
│ │ │ ├── gpossingle.txt
│ │ │ ├── gsubalternate.ttx.GSUB
│ │ │ ├── gsubalternate.txt
│ │ │ ├── gsubligature.ttx.GSUB
│ │ │ ├── gsubligature.txt
│ │ │ ├── gsubmultiple.ttx.GSUB
│ │ │ ├── gsubmultiple.txt
│ │ │ ├── gsubreversechanined.ttx.GSUB
│ │ │ ├── gsubreversechanined.txt
│ │ │ ├── gsubsingle.ttx.GSUB
│ │ │ ├── gsubsingle.txt
│ │ │ ├── mark-to-ligature.ttx.GPOS
│ │ │ ├── mark-to-ligature.txt
│ │ │ ├── README
│ │ │ ├── scripttable.ttx.GPOS
│ │ │ ├── scripttable.ttx.GSUB
│ │ │ └── scripttable.txt
│ │ └── mti_test.py
│ ├── otlLib
│ │ ├── builder_test.py
│ │ ├── data
│ │ │ ├── gpos_91.ttx
│ │ │ ├── gsub_51.ttx
│ │ │ ├── gsub_52.ttx
│ │ │ └── gsub_71.ttx
│ │ ├── __init__.py
│ │ ├── maxContextCalc_test.py
│ │ ├── mock_builder_test.py
│ │ └── optimize_test.py
│ ├── pens
│ │ ├── areaPen_test.py
│ │ ├── basePen_test.py
│ │ ├── boundsPen_test.py
│ │ ├── cocoaPen_test.py
│ │ ├── cu2quPen_test.py
│ │ ├── data
│ │ │ ├── cubic
│ │ │ │ ├── A_acute.glif
│ │ │ │ ├── acute.glif
│ │ │ │ ├── a.glif
│ │ │ │ ├── A_.glif
│ │ │ │ ├── contents.plist
│ │ │ │ └── E_acute.glif
│ │ │ ├── quadratic
│ │ │ │ ├── acute.glif
│ │ │ │ ├── a.glif
│ │ │ │ ├── A_.glif
│ │ │ │ ├── contents.plist
│ │ │ │ └── E_acute.glif
│ │ │ ├── test_even_odd_fill.pgm
│ │ │ ├── test_non_zero_fill.pgm
│ │ │ ├── test_rotate.pgm
│ │ │ └── test_skew.pgm
│ │ ├── filterPen_test.py
│ │ ├── freetypePen_test.py
│ │ ├── hashPointPen_test.py
│ │ ├── __init__.py
│ │ ├── perimeterPen_test.py
│ │ ├── pointInsidePen_test.py
│ │ ├── pointPen_test.py
│ │ ├── qu2cuPen_test.py
│ │ ├── quartzPen_test.py
│ │ ├── recordingPen_test.py
│ │ ├── reverseContourPen_test.py
│ │ ├── roundingPen_test.py
│ │ ├── t2CharStringPen_test.py
│ │ ├── ttGlyphPen_test.py
│ │ └── utils.py
│ ├── qu2cu
│ │ ├── data
│ │ │ └── NotoSansArabic-Regular.quadratic.subset.ttf
│ │ ├── qu2cu_cli_test.py
│ │ └── qu2cu_test.py
│ ├── subset
│ │ ├── data
│ │ │ ├── BungeeColor-Regular.ttx
│ │ │ ├── CmapSubsetTest.subset.ttx
│ │ │ ├── CmapSubsetTest.ttx
│ │ │ ├── expect_ankr.ttx
│ │ │ ├── expect_bsln_0.ttx
│ │ │ ├── expect_bsln_1.ttx
│ │ │ ├── expect_bsln_2.ttx
│ │ │ ├── expect_bsln_3.ttx
│ │ │ ├── expect_desubroutinize_CFF.ttx
│ │ │ ├── expect_harfbuzz_repacker.ttx
│ │ │ ├── expect_HVVAR_retain_gids.ttx
│ │ │ ├── expect_HVVAR.ttx
│ │ │ ├── expect_keep_colr.ttx
│ │ │ ├── expect_keep_gvar_notdef_outline.ttx
│ │ │ ├── expect_keep_gvar.ttx
│ │ │ ├── expect_keep_math.ttx
│ │ │ ├── expect_layout_scripts.ttx
│ │ │ ├── expect_lcar_0.ttx
│ │ │ ├── expect_lcar_1.ttx
│ │ │ ├── expect_math_partial.ttx
│ │ │ ├── expect_no_hinting_CFF.ttx
│ │ │ ├── expect_no_hinting_desubroutinize_CFF.ttx
│ │ │ ├── expect_no_hinting_TTF.ttx
│ │ │ ├── expect_no_notdef_outline_cid.ttx
│ │ │ ├── expect_no_notdef_outline_otf.ttx
│ │ │ ├── expect_no_notdef_outline_ttf.ttx
│ │ │ ├── expect_notdef_width_cid.ttx
│ │ │ ├── expect_opbd_0.ttx
│ │ │ ├── expect_opbd_1.ttx
│ │ │ ├── expect_prop_0.ttx
│ │ │ ├── expect_prop_1.ttx
│ │ │ ├── expect_sbix.ttx
│ │ │ ├── google_color.ttx
│ │ │ ├── GPOS_PairPos_Format2_ClassDef1_useClass0.subset.ttx
│ │ │ ├── GPOS_PairPos_Format2_ClassDef2_useClass0.subset.ttx
│ │ │ ├── GPOS_PairPos_Format2_PR_2221.ttx
│ │ │ ├── GPOS_SinglePos_no_value_issue_2312.subset.ttx
│ │ │ ├── GPOS_SinglePos_no_value_issue_2312.ttx
│ │ │ ├── harfbuzz_repacker.ttx
│ │ │ ├── layout_scripts.ttx
│ │ │ ├── Lobster.subset.otf
│ │ │ ├── Lobster.subset.ttx
│ │ │ ├── NotdefWidthCID-Regular.ttx
│ │ │ ├── NotoSansCJKjp-Regular.subset.ttx
│ │ │ ├── sbix.ttx
│ │ │ ├── TestANKR.ttx
│ │ │ ├── TestBSLN-0.ttx
│ │ │ ├── TestBSLN-1.ttx
│ │ │ ├── TestBSLN-2.ttx
│ │ │ ├── TestBSLN-3.ttx
│ │ │ ├── TestCID-Regular.ttx
│ │ │ ├── TestCLR-Regular.ttx
│ │ │ ├── test_cntrmask_CFF.desub.ttx
│ │ │ ├── test_cntrmask_CFF.ttx
│ │ │ ├── TestContextSubstFormat3.ttx
│ │ │ ├── TestGVAR.ttx
│ │ │ ├── test_hinted_subrs_CFF.desub.ttx
│ │ │ ├── test_hinted_subrs_CFF.ttx
│ │ │ ├── TestHVVAR.ttx
│ │ │ ├── TestLCAR-0.ttx
│ │ │ ├── TestLCAR-1.ttx
│ │ │ ├── test_math_partial.ttx
│ │ │ ├── TestMATH-Regular.ttx
│ │ │ ├── TestOPBD-0.ttx
│ │ │ ├── TestOPBD-1.ttx
│ │ │ ├── TestOTF-Regular.ttx
│ │ │ ├── TestPROP.ttx
│ │ │ ├── TestTTF-Regular_non_BMP_char.ttx
│ │ │ └── TestTTF-Regular.ttx
│ │ ├── subset_test.py
│ │ └── svg_test.py
│ ├── svgLib
│ │ └── path
│ │ ├── __init__.py
│ │ ├── parser_test.py
│ │ ├── path_test.py
│ │ └── shapes_test.py
│ ├── t1Lib
│ │ ├── data
│ │ │ ├── TestT1-ellipsis-hinted.pfa
│ │ │ ├── TestT1-Regular.lwfn
│ │ │ ├── TestT1-Regular.pfa
│ │ │ ├── TestT1-Regular.pfb
│ │ │ └── TestT1-weird-zeros.pfa
│ │ └── t1Lib_test.py
│ ├── tfmLib
│ │ ├── data
│ │ │ ├── cmex10.tfm
│ │ │ ├── cmr10.tfm
│ │ │ ├── cmsy10.tfm
│ │ │ └── dummy-space.tfm
│ │ └── tfmLib_test.py
│ ├── ttLib
│ │ ├── data
│ │ │ ├── bogus_post_format_1.ttf
│ │ │ ├── dot-cubic.ttf
│ │ │ ├── I-512upem.ttx
│ │ │ ├── I.otf
│ │ │ ├── issue2824.ttf
│ │ │ ├── I.ttf
│ │ │ ├── TestOTF-Regular.otx
│ │ │ ├── Test-Regular.ttf
│ │ │ ├── TestTTFComplex-Regular.ttx
│ │ │ ├── TestTTF_normalizeLocation.ttx
│ │ │ ├── TestTTF-Regular.ttx
│ │ │ ├── TestVGID-Regular.otf
│ │ │ ├── TestVGID-Regular.ttx
│ │ │ ├── test_woff2_metadata.xml
│ │ │ ├── varc-6868.ttf
│ │ │ ├── varc-ac00-ac01-500upem.ttx
│ │ │ ├── varc-ac00-ac01.ttf
│ │ │ ├── varc-ac01-conditional.ttf
│ │ │ └── woff2_overlap_offcurve_in.ttx
│ │ ├── main_test.py
│ │ ├── removeOverlaps_test.py
│ │ ├── reorderGlyphs_test.py
│ │ ├── scaleUpem_test.py
│ │ ├── sfnt_test.py
│ │ ├── tables
│ │ │ ├── _a_n_k_r_test.py
│ │ │ ├── _a_v_a_r_test.py
│ │ │ ├── _b_s_l_n_test.py
│ │ │ ├── C_B_L_C_test.py
│ │ │ ├── C_F_F__2_test.py
│ │ │ ├── C_F_F_test.py
│ │ │ ├── _c_i_d_g_test.py
│ │ │ ├── _c_m_a_p_test.py
│ │ │ ├── C_O_L_R_test.py
│ │ │ ├── C_P_A_L_test.py
│ │ │ ├── _c_v_a_r_test.py
│ │ │ ├── data
│ │ │ │ ├── Amstelvar-avar2.subset.ttf
│ │ │ │ ├── aots
│ │ │ │ │ ├── base.otf
│ │ │ │ │ ├── base.ttx.CFF
│ │ │ │ │ ├── base.ttx.cmap
│ │ │ │ │ ├── base.ttx.head
│ │ │ │ │ ├── base.ttx.hhea
│ │ │ │ │ ├── base.ttx.hmtx
│ │ │ │ │ ├── base.ttx.maxp
│ │ │ │ │ ├── base.ttx.name
│ │ │ │ │ ├── base.ttx.OS_2
│ │ │ │ │ ├── base.ttx.post
│ │ │ │ │ ├── classdef1_font1.otf
│ │ │ │ │ ├── classdef1_font1.ttx.GSUB
│ │ │ │ │ ├── classdef1_font2.otf
│ │ │ │ │ ├── classdef1_font2.ttx.GSUB
│ │ │ │ │ ├── classdef1_font3.otf
│ │ │ │ │ ├── classdef1_font3.ttx.GSUB
│ │ │ │ │ ├── classdef1_font4.otf
│ │ │ │ │ ├── classdef1_font4.ttx.GSUB
│ │ │ │ │ ├── classdef2_font1.otf
│ │ │ │ │ ├── classdef2_font1.ttx.GSUB
│ │ │ │ │ ├── classdef2_font2.otf
│ │ │ │ │ ├── classdef2_font2.ttx.GSUB
│ │ │ │ │ ├── classdef2_font3.otf
│ │ │ │ │ ├── classdef2_font3.ttx.GSUB
│ │ │ │ │ ├── classdef2_font4.otf
│ │ │ │ │ ├── classdef2_font4.ttx.GSUB
│ │ │ │ │ ├── cmap0_font1.otf
│ │ │ │ │ ├── cmap0_font1.ttx.cmap
│ │ │ │ │ ├── cmap10_font1.otf
│ │ │ │ │ ├── cmap10_font1.ttx.cmap
│ │ │ │ │ ├── cmap10_font2.otf
│ │ │ │ │ ├── cmap10_font2.ttx.cmap
│ │ │ │ │ ├── cmap12_font1.otf
│ │ │ │ │ ├── cmap12_font1.ttx.cmap
│ │ │ │ │ ├── cmap14_font1.otf
│ │ │ │ │ ├── cmap14_font1.ttx.cmap
│ │ │ │ │ ├── cmap2_font1.otf
│ │ │ │ │ ├── cmap2_font1.ttx.cmap
│ │ │ │ │ ├── cmap4_font1.otf
│ │ │ │ │ ├── cmap4_font1.ttx.cmap
│ │ │ │ │ ├── cmap4_font2.otf
│ │ │ │ │ ├── cmap4_font2.ttx.cmap
│ │ │ │ │ ├── cmap4_font3.otf
│ │ │ │ │ ├── cmap4_font3.ttx.cmap
│ │ │ │ │ ├── cmap4_font4.otf
│ │ │ │ │ ├── cmap4_font4.ttx.cmap
│ │ │ │ │ ├── cmap6_font1.otf
│ │ │ │ │ ├── cmap6_font1.ttx.cmap
│ │ │ │ │ ├── cmap6_font2.otf
│ │ │ │ │ ├── cmap6_font2.ttx.cmap
│ │ │ │ │ ├── cmap8_font1.otf
│ │ │ │ │ ├── cmap8_font1.ttx.cmap
│ │ │ │ │ ├── cmap_composition_font1.otf
│ │ │ │ │ ├── cmap_composition_font1.ttx.cmap
│ │ │ │ │ ├── cmap_subtableselection_font1.otf
│ │ │ │ │ ├── cmap_subtableselection_font1.ttx.cmap
│ │ │ │ │ ├── cmap_subtableselection_font2.otf
│ │ │ │ │ ├── cmap_subtableselection_font2.ttx.cmap
│ │ │ │ │ ├── cmap_subtableselection_font3.otf
│ │ │ │ │ ├── cmap_subtableselection_font3.ttx.cmap
│ │ │ │ │ ├── cmap_subtableselection_font4.otf
│ │ │ │ │ ├── cmap_subtableselection_font4.ttx.cmap
│ │ │ │ │ ├── cmap_subtableselection_font5.otf
│ │ │ │ │ ├── cmap_subtableselection_font5.ttx.cmap
│ │ │ │ │ ├── gpos1_1_lookupflag_f1.otf
│ │ │ │ │ ├── gpos1_1_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gpos1_1_lookupflag_f1.ttx.GPOS
│ │ │ │ │ ├── gpos1_1_simple_f1.otf
│ │ │ │ │ ├── gpos1_1_simple_f1.ttx.GPOS
│ │ │ │ │ ├── gpos1_1_simple_f2.otf
│ │ │ │ │ ├── gpos1_1_simple_f2.ttx.GPOS
│ │ │ │ │ ├── gpos1_1_simple_f3.otf
│ │ │ │ │ ├── gpos1_1_simple_f3.ttx.GPOS
│ │ │ │ │ ├── gpos1_1_simple_f4.otf
│ │ │ │ │ ├── gpos1_1_simple_f4.ttx.GPOS
│ │ │ │ │ ├── gpos1_2_font1.otf
│ │ │ │ │ ├── gpos1_2_font1.ttx.GPOS
│ │ │ │ │ ├── gpos1_2_font2.otf
│ │ │ │ │ ├── gpos1_2_font2.ttx.GDEF
│ │ │ │ │ ├── gpos1_2_font2.ttx.GPOS
│ │ │ │ │ ├── gpos2_1_font6.otf
│ │ │ │ │ ├── gpos2_1_font6.ttx.GPOS
│ │ │ │ │ ├── gpos2_1_font7.otf
│ │ │ │ │ ├── gpos2_1_font7.ttx.GPOS
│ │ │ │ │ ├── gpos2_1_lookupflag_f1.otf
│ │ │ │ │ ├── gpos2_1_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gpos2_1_lookupflag_f1.ttx.GPOS
│ │ │ │ │ ├── gpos2_1_lookupflag_f2.otf
│ │ │ │ │ ├── gpos2_1_lookupflag_f2.ttx.GDEF
│ │ │ │ │ ├── gpos2_1_lookupflag_f2.ttx.GPOS
│ │ │ │ │ ├── gpos2_1_next_glyph_f1.otf
│ │ │ │ │ ├── gpos2_1_next_glyph_f1.ttx.GPOS
│ │ │ │ │ ├── gpos2_1_next_glyph_f2.otf
│ │ │ │ │ ├── gpos2_1_next_glyph_f2.ttx.GPOS
│ │ │ │ │ ├── gpos2_1_simple_f1.otf
│ │ │ │ │ ├── gpos2_1_simple_f1.ttx.GPOS
│ │ │ │ │ ├── gpos2_2_font1.otf
│ │ │ │ │ ├── gpos2_2_font1.ttx.GPOS
│ │ │ │ │ ├── gpos2_2_font2.otf
│ │ │ │ │ ├── gpos2_2_font2.ttx.GDEF
│ │ │ │ │ ├── gpos2_2_font2.ttx.GPOS
│ │ │ │ │ ├── gpos2_2_font3.otf
│ │ │ │ │ ├── gpos2_2_font3.ttx.GDEF
│ │ │ │ │ ├── gpos2_2_font3.ttx.GPOS
│ │ │ │ │ ├── gpos2_2_font4.otf
│ │ │ │ │ ├── gpos2_2_font4.ttx.GPOS
│ │ │ │ │ ├── gpos2_2_font5.otf
│ │ │ │ │ ├── gpos2_2_font5.ttx.GPOS
│ │ │ │ │ ├── gpos3_font1.otf
│ │ │ │ │ ├── gpos3_font1.ttx.GPOS
│ │ │ │ │ ├── gpos3_font2.otf
│ │ │ │ │ ├── gpos3_font2.ttx.GDEF
│ │ │ │ │ ├── gpos3_font2.ttx.GPOS
│ │ │ │ │ ├── gpos3_font3.otf
│ │ │ │ │ ├── gpos3_font3.ttx.GDEF
│ │ │ │ │ ├── gpos3_font3.ttx.GPOS
│ │ │ │ │ ├── gpos4_lookupflag_f1.otf
│ │ │ │ │ ├── gpos4_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gpos4_lookupflag_f1.ttx.GPOS
│ │ │ │ │ ├── gpos4_lookupflag_f2.otf
│ │ │ │ │ ├── gpos4_lookupflag_f2.ttx.GDEF
│ │ │ │ │ ├── gpos4_lookupflag_f2.ttx.GPOS
│ │ │ │ │ ├── gpos4_multiple_anchors_1.otf
│ │ │ │ │ ├── gpos4_multiple_anchors_1.ttx.GDEF
│ │ │ │ │ ├── gpos4_multiple_anchors_1.ttx.GPOS
│ │ │ │ │ ├── gpos4_simple_1.otf
│ │ │ │ │ ├── gpos4_simple_1.ttx.GDEF
│ │ │ │ │ ├── gpos4_simple_1.ttx.GPOS
│ │ │ │ │ ├── gpos5_font1.otf
│ │ │ │ │ ├── gpos5_font1.ttx.GDEF
│ │ │ │ │ ├── gpos5_font1.ttx.GPOS
│ │ │ │ │ ├── gpos5_font1.ttx.GSUB
│ │ │ │ │ ├── gpos6_font1.otf
│ │ │ │ │ ├── gpos6_font1.ttx.GDEF
│ │ │ │ │ ├── gpos6_font1.ttx.GPOS
│ │ │ │ │ ├── gpos7_1_font1.otf
│ │ │ │ │ ├── gpos7_1_font1.ttx.GPOS
│ │ │ │ │ ├── gpos9_font1.otf
│ │ │ │ │ ├── gpos9_font1.ttx.GPOS
│ │ │ │ │ ├── gpos9_font2.otf
│ │ │ │ │ ├── gpos9_font2.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining1_boundary_f1.otf
│ │ │ │ │ ├── gpos_chaining1_boundary_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining1_boundary_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining1_boundary_f2.otf
│ │ │ │ │ ├── gpos_chaining1_boundary_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining1_boundary_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining1_boundary_f3.otf
│ │ │ │ │ ├── gpos_chaining1_boundary_f3.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining1_boundary_f3.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining1_boundary_f4.otf
│ │ │ │ │ ├── gpos_chaining1_boundary_f4.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining1_boundary_f4.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining1_lookupflag_f1.otf
│ │ │ │ │ ├── gpos_chaining1_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining1_lookupflag_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining1_multiple_subrules_f1.otf
│ │ │ │ │ ├── gpos_chaining1_multiple_subrules_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining1_multiple_subrules_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining1_multiple_subrules_f2.otf
│ │ │ │ │ ├── gpos_chaining1_multiple_subrules_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining1_multiple_subrules_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining1_next_glyph_f1.otf
│ │ │ │ │ ├── gpos_chaining1_next_glyph_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining1_next_glyph_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining1_simple_f1.otf
│ │ │ │ │ ├── gpos_chaining1_simple_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining1_simple_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining1_simple_f2.otf
│ │ │ │ │ ├── gpos_chaining1_simple_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining1_simple_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining1_successive_f1.otf
│ │ │ │ │ ├── gpos_chaining1_successive_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining1_successive_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining2_boundary_f1.otf
│ │ │ │ │ ├── gpos_chaining2_boundary_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining2_boundary_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining2_boundary_f2.otf
│ │ │ │ │ ├── gpos_chaining2_boundary_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining2_boundary_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining2_boundary_f3.otf
│ │ │ │ │ ├── gpos_chaining2_boundary_f3.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining2_boundary_f3.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining2_boundary_f4.otf
│ │ │ │ │ ├── gpos_chaining2_boundary_f4.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining2_boundary_f4.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining2_lookupflag_f1.otf
│ │ │ │ │ ├── gpos_chaining2_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining2_lookupflag_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining2_multiple_subrules_f1.otf
│ │ │ │ │ ├── gpos_chaining2_multiple_subrules_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining2_multiple_subrules_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining2_multiple_subrules_f2.otf
│ │ │ │ │ ├── gpos_chaining2_multiple_subrules_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining2_multiple_subrules_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining2_next_glyph_f1.otf
│ │ │ │ │ ├── gpos_chaining2_next_glyph_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining2_next_glyph_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining2_simple_f1.otf
│ │ │ │ │ ├── gpos_chaining2_simple_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining2_simple_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining2_simple_f2.otf
│ │ │ │ │ ├── gpos_chaining2_simple_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining2_simple_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining2_successive_f1.otf
│ │ │ │ │ ├── gpos_chaining2_successive_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining2_successive_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining3_boundary_f1.otf
│ │ │ │ │ ├── gpos_chaining3_boundary_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining3_boundary_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining3_boundary_f2.otf
│ │ │ │ │ ├── gpos_chaining3_boundary_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining3_boundary_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining3_boundary_f3.otf
│ │ │ │ │ ├── gpos_chaining3_boundary_f3.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining3_boundary_f3.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining3_boundary_f4.otf
│ │ │ │ │ ├── gpos_chaining3_boundary_f4.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining3_boundary_f4.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining3_lookupflag_f1.otf
│ │ │ │ │ ├── gpos_chaining3_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining3_lookupflag_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining3_next_glyph_f1.otf
│ │ │ │ │ ├── gpos_chaining3_next_glyph_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining3_next_glyph_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining3_simple_f1.otf
│ │ │ │ │ ├── gpos_chaining3_simple_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining3_simple_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining3_simple_f2.otf
│ │ │ │ │ ├── gpos_chaining3_simple_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining3_simple_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining3_successive_f1.otf
│ │ │ │ │ ├── gpos_chaining3_successive_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining3_successive_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context1_boundary_f1.otf
│ │ │ │ │ ├── gpos_context1_boundary_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context1_boundary_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context1_boundary_f2.otf
│ │ │ │ │ ├── gpos_context1_boundary_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_context1_boundary_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_context1_expansion_f1.otf
│ │ │ │ │ ├── gpos_context1_expansion_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context1_expansion_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context1_lookupflag_f1.otf
│ │ │ │ │ ├── gpos_context1_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context1_lookupflag_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context1_lookupflag_f2.otf
│ │ │ │ │ ├── gpos_context1_lookupflag_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_context1_lookupflag_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_context1_multiple_subrules_f1.otf
│ │ │ │ │ ├── gpos_context1_multiple_subrules_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context1_multiple_subrules_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context1_multiple_subrules_f2.otf
│ │ │ │ │ ├── gpos_context1_multiple_subrules_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_context1_multiple_subrules_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_context1_next_glyph_f1.otf
│ │ │ │ │ ├── gpos_context1_next_glyph_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context1_next_glyph_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context1_simple_f1.otf
│ │ │ │ │ ├── gpos_context1_simple_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context1_simple_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context1_simple_f2.otf
│ │ │ │ │ ├── gpos_context1_simple_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_context1_simple_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_context1_successive_f1.otf
│ │ │ │ │ ├── gpos_context1_successive_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context1_successive_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context2_boundary_f1.otf
│ │ │ │ │ ├── gpos_context2_boundary_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context2_boundary_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context2_boundary_f2.otf
│ │ │ │ │ ├── gpos_context2_boundary_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_context2_boundary_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_context2_classes_f1.otf
│ │ │ │ │ ├── gpos_context2_classes_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context2_classes_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context2_classes_f2.otf
│ │ │ │ │ ├── gpos_context2_classes_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_context2_classes_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_context2_expansion_f1.otf
│ │ │ │ │ ├── gpos_context2_expansion_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context2_expansion_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context2_lookupflag_f1.otf
│ │ │ │ │ ├── gpos_context2_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context2_lookupflag_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context2_lookupflag_f2.otf
│ │ │ │ │ ├── gpos_context2_lookupflag_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_context2_lookupflag_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_context2_multiple_subrules_f1.otf
│ │ │ │ │ ├── gpos_context2_multiple_subrules_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context2_multiple_subrules_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context2_multiple_subrules_f2.otf
│ │ │ │ │ ├── gpos_context2_multiple_subrules_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_context2_multiple_subrules_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_context2_next_glyph_f1.otf
│ │ │ │ │ ├── gpos_context2_next_glyph_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context2_next_glyph_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context2_simple_f1.otf
│ │ │ │ │ ├── gpos_context2_simple_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context2_simple_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context2_simple_f2.otf
│ │ │ │ │ ├── gpos_context2_simple_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_context2_simple_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_context2_successive_f1.otf
│ │ │ │ │ ├── gpos_context2_successive_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context2_successive_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context3_boundary_f1.otf
│ │ │ │ │ ├── gpos_context3_boundary_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context3_boundary_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context3_boundary_f2.otf
│ │ │ │ │ ├── gpos_context3_boundary_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_context3_boundary_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_context3_lookupflag_f1.otf
│ │ │ │ │ ├── gpos_context3_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context3_lookupflag_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context3_lookupflag_f2.otf
│ │ │ │ │ ├── gpos_context3_lookupflag_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_context3_lookupflag_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_context3_next_glyph_f1.otf
│ │ │ │ │ ├── gpos_context3_next_glyph_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context3_next_glyph_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context3_simple_f1.otf
│ │ │ │ │ ├── gpos_context3_simple_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context3_simple_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context3_successive_f1.otf
│ │ │ │ │ ├── gpos_context3_successive_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context3_successive_f1.ttx.GPOS
│ │ │ │ │ ├── gsub1_1_lookupflag_f1.otf
│ │ │ │ │ ├── gsub1_1_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gsub1_1_lookupflag_f1.ttx.GSUB
│ │ │ │ │ ├── gsub1_1_modulo_f1.otf
│ │ │ │ │ ├── gsub1_1_modulo_f1.ttx.GSUB
│ │ │ │ │ ├── gsub1_1_simple_f1.otf
│ │ │ │ │ ├── gsub1_1_simple_f1.ttx.GSUB
│ │ │ │ │ ├── gsub1_2_lookupflag_f1.otf
│ │ │ │ │ ├── gsub1_2_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gsub1_2_lookupflag_f1.ttx.GSUB
│ │ │ │ │ ├── gsub1_2_simple_f1.otf
│ │ │ │ │ ├── gsub1_2_simple_f1.ttx.GSUB
│ │ │ │ │ ├── gsub2_1_lookupflag_f1.otf
│ │ │ │ │ ├── gsub2_1_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gsub2_1_lookupflag_f1.ttx.GSUB
│ │ │ │ │ ├── gsub2_1_multiple_sequences_f1.otf
│ │ │ │ │ ├── gsub2_1_multiple_sequences_f1.ttx.GSUB
│ │ │ │ │ ├── gsub2_1_simple_f1.otf
│ │ │ │ │ ├── gsub2_1_simple_f1.ttx.GSUB
│ │ │ │ │ ├── gsub3_1_lookupflag_f1.otf
│ │ │ │ │ ├── gsub3_1_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gsub3_1_lookupflag_f1.ttx.GSUB
│ │ │ │ │ ├── gsub3_1_multiple_f1.otf
│ │ │ │ │ ├── gsub3_1_multiple_f1.ttx.GSUB
│ │ │ │ │ ├── gsub3_1_simple_f1.otf
│ │ │ │ │ ├── gsub3_1_simple_f1.ttx.GSUB
│ │ │ │ │ ├── gsub4_1_lookupflag_f1.otf
│ │ │ │ │ ├── gsub4_1_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gsub4_1_lookupflag_f1.ttx.GSUB
│ │ │ │ │ ├── gsub4_1_multiple_ligatures_f1.otf
│ │ │ │ │ ├── gsub4_1_multiple_ligatures_f1.ttx.GSUB
│ │ │ │ │ ├── gsub4_1_multiple_ligatures_f2.otf
│ │ │ │ │ ├── gsub4_1_multiple_ligatures_f2.ttx.GSUB
│ │ │ │ │ ├── gsub4_1_multiple_ligsets_f1.otf
│ │ │ │ │ ├── gsub4_1_multiple_ligsets_f1.ttx.GSUB
│ │ │ │ │ ├── gsub4_1_simple_f1.otf
│ │ │ │ │ ├── gsub4_1_simple_f1.ttx.GSUB
│ │ │ │ │ ├── gsub7_font1.otf
│ │ │ │ │ ├── gsub7_font1.ttx.GSUB
│ │ │ │ │ ├── gsub7_font2.otf
│ │ │ │ │ ├── gsub7_font2.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining1_boundary_f1.otf
│ │ │ │ │ ├── gsub_chaining1_boundary_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining1_boundary_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining1_boundary_f2.otf
│ │ │ │ │ ├── gsub_chaining1_boundary_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining1_boundary_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining1_boundary_f3.otf
│ │ │ │ │ ├── gsub_chaining1_boundary_f3.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining1_boundary_f3.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining1_boundary_f4.otf
│ │ │ │ │ ├── gsub_chaining1_boundary_f4.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining1_boundary_f4.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining1_lookupflag_f1.otf
│ │ │ │ │ ├── gsub_chaining1_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining1_lookupflag_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining1_multiple_subrules_f1.otf
│ │ │ │ │ ├── gsub_chaining1_multiple_subrules_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining1_multiple_subrules_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining1_multiple_subrules_f2.otf
│ │ │ │ │ ├── gsub_chaining1_multiple_subrules_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining1_multiple_subrules_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining1_next_glyph_f1.otf
│ │ │ │ │ ├── gsub_chaining1_next_glyph_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining1_next_glyph_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining1_simple_f1.otf
│ │ │ │ │ ├── gsub_chaining1_simple_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining1_simple_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining1_simple_f2.otf
│ │ │ │ │ ├── gsub_chaining1_simple_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining1_simple_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining1_successive_f1.otf
│ │ │ │ │ ├── gsub_chaining1_successive_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining1_successive_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining2_boundary_f1.otf
│ │ │ │ │ ├── gsub_chaining2_boundary_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining2_boundary_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining2_boundary_f2.otf
│ │ │ │ │ ├── gsub_chaining2_boundary_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining2_boundary_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining2_boundary_f3.otf
│ │ │ │ │ ├── gsub_chaining2_boundary_f3.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining2_boundary_f3.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining2_boundary_f4.otf
│ │ │ │ │ ├── gsub_chaining2_boundary_f4.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining2_boundary_f4.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining2_lookupflag_f1.otf
│ │ │ │ │ ├── gsub_chaining2_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining2_lookupflag_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining2_multiple_subrules_f1.otf
│ │ │ │ │ ├── gsub_chaining2_multiple_subrules_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining2_multiple_subrules_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining2_multiple_subrules_f2.otf
│ │ │ │ │ ├── gsub_chaining2_multiple_subrules_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining2_multiple_subrules_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining2_next_glyph_f1.otf
│ │ │ │ │ ├── gsub_chaining2_next_glyph_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining2_next_glyph_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining2_simple_f1.otf
│ │ │ │ │ ├── gsub_chaining2_simple_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining2_simple_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining2_simple_f2.otf
│ │ │ │ │ ├── gsub_chaining2_simple_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining2_simple_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining2_successive_f1.otf
│ │ │ │ │ ├── gsub_chaining2_successive_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining2_successive_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining3_boundary_f1.otf
│ │ │ │ │ ├── gsub_chaining3_boundary_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining3_boundary_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining3_boundary_f2.otf
│ │ │ │ │ ├── gsub_chaining3_boundary_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining3_boundary_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining3_boundary_f3.otf
│ │ │ │ │ ├── gsub_chaining3_boundary_f3.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining3_boundary_f3.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining3_boundary_f4.otf
│ │ │ │ │ ├── gsub_chaining3_boundary_f4.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining3_boundary_f4.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining3_lookupflag_f1.otf
│ │ │ │ │ ├── gsub_chaining3_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining3_lookupflag_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining3_next_glyph_f1.otf
│ │ │ │ │ ├── gsub_chaining3_next_glyph_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining3_next_glyph_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining3_simple_f1.otf
│ │ │ │ │ ├── gsub_chaining3_simple_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining3_simple_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining3_simple_f2.otf
│ │ │ │ │ ├── gsub_chaining3_simple_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining3_simple_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining3_successive_f1.otf
│ │ │ │ │ ├── gsub_chaining3_successive_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining3_successive_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context1_boundary_f1.otf
│ │ │ │ │ ├── gsub_context1_boundary_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context1_boundary_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context1_boundary_f2.otf
│ │ │ │ │ ├── gsub_context1_boundary_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_context1_boundary_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_context1_expansion_f1.otf
│ │ │ │ │ ├── gsub_context1_expansion_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context1_expansion_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context1_lookupflag_f1.otf
│ │ │ │ │ ├── gsub_context1_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context1_lookupflag_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context1_lookupflag_f2.otf
│ │ │ │ │ ├── gsub_context1_lookupflag_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_context1_lookupflag_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_context1_multiple_subrules_f1.otf
│ │ │ │ │ ├── gsub_context1_multiple_subrules_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context1_multiple_subrules_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context1_multiple_subrules_f2.otf
│ │ │ │ │ ├── gsub_context1_multiple_subrules_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_context1_multiple_subrules_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_context1_next_glyph_f1.otf
│ │ │ │ │ ├── gsub_context1_next_glyph_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context1_next_glyph_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context1_simple_f1.otf
│ │ │ │ │ ├── gsub_context1_simple_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context1_simple_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context1_simple_f2.otf
│ │ │ │ │ ├── gsub_context1_simple_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_context1_simple_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_context1_successive_f1.otf
│ │ │ │ │ ├── gsub_context1_successive_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context1_successive_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context2_boundary_f1.otf
│ │ │ │ │ ├── gsub_context2_boundary_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context2_boundary_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context2_boundary_f2.otf
│ │ │ │ │ ├── gsub_context2_boundary_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_context2_boundary_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_context2_classes_f1.otf
│ │ │ │ │ ├── gsub_context2_classes_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context2_classes_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context2_classes_f2.otf
│ │ │ │ │ ├── gsub_context2_classes_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_context2_classes_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_context2_expansion_f1.otf
│ │ │ │ │ ├── gsub_context2_expansion_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context2_expansion_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context2_lookupflag_f1.otf
│ │ │ │ │ ├── gsub_context2_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context2_lookupflag_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context2_lookupflag_f2.otf
│ │ │ │ │ ├── gsub_context2_lookupflag_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_context2_lookupflag_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_context2_multiple_subrules_f1.otf
│ │ │ │ │ ├── gsub_context2_multiple_subrules_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context2_multiple_subrules_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context2_multiple_subrules_f2.otf
│ │ │ │ │ ├── gsub_context2_multiple_subrules_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_context2_multiple_subrules_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_context2_next_glyph_f1.otf
│ │ │ │ │ ├── gsub_context2_next_glyph_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context2_next_glyph_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context2_simple_f1.otf
│ │ │ │ │ ├── gsub_context2_simple_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context2_simple_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context2_simple_f2.otf
│ │ │ │ │ ├── gsub_context2_simple_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_context2_simple_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_context2_successive_f1.otf
│ │ │ │ │ ├── gsub_context2_successive_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context2_successive_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context3_boundary_f1.otf
│ │ │ │ │ ├── gsub_context3_boundary_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context3_boundary_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context3_boundary_f2.otf
│ │ │ │ │ ├── gsub_context3_boundary_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_context3_boundary_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_context3_lookupflag_f1.otf
│ │ │ │ │ ├── gsub_context3_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context3_lookupflag_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context3_lookupflag_f2.otf
│ │ │ │ │ ├── gsub_context3_lookupflag_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_context3_lookupflag_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_context3_next_glyph_f1.otf
│ │ │ │ │ ├── gsub_context3_next_glyph_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context3_next_glyph_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context3_simple_f1.otf
│ │ │ │ │ ├── gsub_context3_simple_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context3_simple_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context3_successive_f1.otf
│ │ │ │ │ ├── gsub_context3_successive_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context3_successive_f1.ttx.GSUB
│ │ │ │ │ ├── lookupflag_ignore_attach_f1.otf
│ │ │ │ │ ├── lookupflag_ignore_attach_f1.ttx.GDEF
│ │ │ │ │ ├── lookupflag_ignore_attach_f1.ttx.GSUB
│ │ │ │ │ ├── lookupflag_ignore_base_f1.otf
│ │ │ │ │ ├── lookupflag_ignore_base_f1.ttx.GDEF
│ │ │ │ │ ├── lookupflag_ignore_base_f1.ttx.GSUB
│ │ │ │ │ ├── lookupflag_ignore_combination_f1.otf
│ │ │ │ │ ├── lookupflag_ignore_combination_f1.ttx.GDEF
│ │ │ │ │ ├── lookupflag_ignore_combination_f1.ttx.GSUB
│ │ │ │ │ ├── lookupflag_ignore_ligatures_f1.otf
│ │ │ │ │ ├── lookupflag_ignore_ligatures_f1.ttx.GDEF
│ │ │ │ │ ├── lookupflag_ignore_ligatures_f1.ttx.GSUB
│ │ │ │ │ ├── lookupflag_ignore_marks_f1.otf
│ │ │ │ │ ├── lookupflag_ignore_marks_f1.ttx.GDEF
│ │ │ │ │ ├── lookupflag_ignore_marks_f1.ttx.GSUB
│ │ │ │ │ └── README
│ │ │ │ ├── C_F_F__2.bin
│ │ │ │ ├── C_F_F__2.ttx
│ │ │ │ ├── C_F_F_.bin
│ │ │ │ ├── C_F_F_.ttx
│ │ │ │ ├── _c_m_a_p_format_14_bw_compat.ttx
│ │ │ │ ├── _c_m_a_p_format_14.ttx
│ │ │ │ ├── COLRv1-clip-boxes-cff.ttx
│ │ │ │ ├── COLRv1-clip-boxes-glyf.ttx
│ │ │ │ ├── COLRv1-clip-boxes-q100-expected.ttx
│ │ │ │ ├── COLRv1-clip-boxes-q10-expected.ttx
│ │ │ │ ├── COLRv1-clip-boxes-q1-expected.ttx
│ │ │ │ ├── _g_l_y_f_instructions.ttx
│ │ │ │ ├── _g_l_y_f_outline_flag_bit6.glyf.bin
│ │ │ │ ├── _g_l_y_f_outline_flag_bit6.head.bin
│ │ │ │ ├── _g_l_y_f_outline_flag_bit6.loca.bin
│ │ │ │ ├── _g_l_y_f_outline_flag_bit6.maxp.bin
│ │ │ │ ├── _g_l_y_f_outline_flag_bit6.ttx
│ │ │ │ ├── graphite
│ │ │ │ │ ├── graphite_tests.ttf
│ │ │ │ │ ├── graphite_tests.ttx.Feat
│ │ │ │ │ ├── graphite_tests.ttx.Glat
│ │ │ │ │ ├── graphite_tests.ttx.Glat.setup
│ │ │ │ │ ├── graphite_tests.ttx.Silf
│ │ │ │ │ ├── graphite_tests.ttx.Silf.setup
│ │ │ │ │ └── graphite_tests.ttx.Sill
│ │ │ │ ├── _h_h_e_a_recalc_empty.ttx
│ │ │ │ ├── _h_h_e_a_recalc_OTF.ttx
│ │ │ │ ├── _h_h_e_a_recalc_TTF.ttx
│ │ │ │ ├── NotoColorEmoji.subset.index_format_3.ttx
│ │ │ │ ├── NotoSans-VF-cubic.subset.ttf
│ │ │ │ ├── ttProgram.ttx
│ │ │ │ ├── _v_h_e_a_recalc_empty.ttx
│ │ │ │ ├── _v_h_e_a_recalc_OTF.ttx
│ │ │ │ └── _v_h_e_a_recalc_TTF.ttx
│ │ │ ├── _f_p_g_m_test.py
│ │ │ ├── _f_v_a_r_test.py
│ │ │ ├── _g_c_i_d_test.py
│ │ │ ├── _g_l_y_f_test.py
│ │ │ ├── _g_v_a_r_test.py
│ │ │ ├── _h_h_e_a_test.py
│ │ │ ├── _h_m_t_x_test.py
│ │ │ ├── _k_e_r_n_test.py
│ │ │ ├── _l_c_a_r_test.py
│ │ │ ├── _l_t_a_g_test.py
│ │ │ ├── _m_e_t_a_test.py
│ │ │ ├── _m_o_r_t_test.py
│ │ │ ├── _m_o_r_x_test.py
│ │ │ ├── M_V_A_R_test.py
│ │ │ ├── _n_a_m_e_test.py
│ │ │ ├── _o_p_b_d_test.py
│ │ │ ├── O_S_2f_2_test.py
│ │ │ ├── otBase_test.py
│ │ │ ├── otConverters_test.py
│ │ │ ├── otTables_test.py
│ │ │ ├── _p_r_o_p_test.py
│ │ │ ├── S_T_A_T_test.py
│ │ │ ├── S_V_G__test.py
│ │ │ ├── tables_test.py
│ │ │ ├── _t_r_a_k_test.py
│ │ │ ├── T_S_I__0_test.py
│ │ │ ├── T_S_I__1_test.py
│ │ │ ├── ttProgram_test.py
│ │ │ ├── TupleVariation_test.py
│ │ │ ├── V_A_R_C_test.py
│ │ │ ├── _v_h_e_a_test.py
│ │ │ └── _v_m_t_x_test.py
│ │ ├── ttCollection_test.py
│ │ ├── ttFont_test.py
│ │ ├── ttGlyphSet_test.py
│ │ ├── ttVisitor_test.py
│ │ └── woff2_test.py
│ ├── ttx
│ │ ├── data
│ │ │ ├── roundtrip_DSIG_split_at_XML_parse_buffer_size.ttx
│ │ │ ├── TestBOM.ttx
│ │ │ ├── TestDFONT.dfont
│ │ │ ├── TestNoSFNT.ttx
│ │ │ ├── TestNoXML.ttx
│ │ │ ├── TestOTF.otf
│ │ │ ├── TestOTF.ttx
│ │ │ ├── TestTTC.ttc
│ │ │ ├── TestTTF.ttf
│ │ │ ├── TestTTF.ttx
│ │ │ ├── TestWOFF2.woff2
│ │ │ └── TestWOFF.woff
│ │ └── ttx_test.py
│ ├── ufoLib
│ │ ├── filenames_test.py
│ │ ├── GLIF1_test.py
│ │ ├── GLIF2_test.py
│ │ ├── glifLib_test.py
│ │ ├── __init__.py
│ │ ├── testdata
│ │ │ ├── DemoFont.ufo
│ │ │ │ ├── fontinfo.plist
│ │ │ │ ├── glyphs
│ │ │ │ │ ├── a.glif
│ │ │ │ │ ├── A_.glif
│ │ │ │ │ ├── B_.glif
│ │ │ │ │ ├── contents.plist
│ │ │ │ │ ├── F__A__B_.glif
│ │ │ │ │ ├── F_.glif
│ │ │ │ │ ├── G_.glif
│ │ │ │ │ ├── O_.glif
│ │ │ │ │ ├── R_.glif
│ │ │ │ │ ├── testglyph1.glif
│ │ │ │ │ └── testglyph1.reversed.glif
│ │ │ │ ├── lib.plist
│ │ │ │ └── metainfo.plist
│ │ │ ├── TestFont1 (UFO1).ufo
│ │ │ │ ├── fontinfo.plist
│ │ │ │ ├── glyphs
│ │ │ │ │ ├── A_.glif
│ │ │ │ │ ├── B_.glif
│ │ │ │ │ └── contents.plist
│ │ │ │ ├── groups.plist
│ │ │ │ ├── kerning.plist
│ │ │ │ ├── lib.plist
│ │ │ │ └── metainfo.plist
│ │ │ ├── TestFont1 (UFO2).ufo
│ │ │ │ ├── features.fea
│ │ │ │ ├── fontinfo.plist
│ │ │ │ ├── glyphs
│ │ │ │ │ ├── A_.glif
│ │ │ │ │ ├── B_.glif
│ │ │ │ │ └── contents.plist
│ │ │ │ ├── groups.plist
│ │ │ │ ├── kerning.plist
│ │ │ │ ├── lib.plist
│ │ │ │ └── metainfo.plist
│ │ │ ├── TestFont1 (UFO3).ufo
│ │ │ │ ├── data
│ │ │ │ │ └── com.github.fonttools.ttx
│ │ │ │ │ └── CUST.ttx
│ │ │ │ ├── fontinfo.plist
│ │ │ │ ├── glyphs
│ │ │ │ │ ├── a.glif
│ │ │ │ │ ├── b.glif
│ │ │ │ │ ├── c.glif
│ │ │ │ │ ├── contents.plist
│ │ │ │ │ ├── d.glif
│ │ │ │ │ ├── e.glif
│ │ │ │ │ ├── f.glif
│ │ │ │ │ ├── g.glif
│ │ │ │ │ ├── h.glif
│ │ │ │ │ ├── i.glif
│ │ │ │ │ ├── j.glif
│ │ │ │ │ ├── k.glif
│ │ │ │ │ ├── l.glif
│ │ │ │ │ ├── _notdef.glif
│ │ │ │ │ └── space.glif
│ │ │ │ ├── kerning.plist
│ │ │ │ ├── layercontents.plist
│ │ │ │ ├── lib.plist
│ │ │ │ └── metainfo.plist
│ │ │ ├── TestFont1 (UFO3).ufoz
│ │ │ └── UFO3-Read Data.ufo
│ │ │ ├── data
│ │ │ │ ├── org.unifiedfontobject.directory
│ │ │ │ │ ├── bar
│ │ │ │ │ │ └── lol.txt
│ │ │ │ │ └── foo.txt
│ │ │ │ └── org.unifiedfontobject.file.txt
│ │ │ ├── groups.plist
│ │ │ └── metainfo.plist
│ │ ├── testSupport.py
│ │ ├── UFO1_test.py
│ │ ├── UFO2_test.py
│ │ ├── UFO3_test.py
│ │ ├── UFOConversion_test.py
│ │ ├── ufoLib_test.py
│ │ └── UFOZ_test.py
│ ├── unicodedata_test.py
│ ├── varLib
│ │ ├── builder_test.py
│ │ ├── data
│ │ │ ├── BuildAvar2.designspace
│ │ │ ├── BuildAvarEmptyAxis.designspace
│ │ │ ├── BuildAvarIdentityMaps.designspace
│ │ │ ├── BuildAvarSingleAxis.designspace
│ │ │ ├── Build.designspace
│ │ │ ├── BuildGvarCompositeExplicitDelta.designspace
│ │ │ ├── DropOnCurves.designspace
│ │ │ ├── FeatureVarsCustomTag.designspace
│ │ │ ├── FeatureVars.designspace
│ │ │ ├── FeatureVarsWholeRange.designspace
│ │ │ ├── FeatureVarsWholeRangeEmpty.designspace
│ │ │ ├── IncompatibleArrays.designspace
│ │ │ ├── IncompatibleFeatures.designspace
│ │ │ ├── IncompatibleLookupTypes.designspace
│ │ │ ├── InterpolateLayout2.designspace
│ │ │ ├── InterpolateLayout3.designspace
│ │ │ ├── InterpolateLayout.designspace
│ │ │ ├── InterpolateLayout.glyphs
│ │ │ ├── KerningMerging.designspace
│ │ │ ├── master_base_test
│ │ │ │ ├── TestBASE.0.ttx
│ │ │ │ └── TestBASE.900.ttx
│ │ │ ├── master_cff2
│ │ │ │ ├── TestCFF2_Black.ttx
│ │ │ │ ├── TestCFF2_ExtraLight.ttx
│ │ │ │ └── TestCFF2_Regular.ttx
│ │ │ ├── master_cff2_input
│ │ │ │ ├── TestCFF2_Black.ttx
│ │ │ │ ├── TestCFF2_ExtraLight.ttx
│ │ │ │ └── TestCFF2_Regular.ttx
│ │ │ ├── master_incompatible_arrays
│ │ │ │ ├── IncompatibleArrays-Bold.ttx
│ │ │ │ └── IncompatibleArrays-Regular.ttx
│ │ │ ├── master_incompatible_features
│ │ │ │ ├── IncompatibleFeatures-Bold.ttx
│ │ │ │ └── IncompatibleFeatures-Regular.ttx
│ │ │ ├── master_incompatible_lookup_types
│ │ │ │ ├── IncompatibleLookupTypes-Bold.ttx
│ │ │ │ └── IncompatibleLookupTypes-Regular.ttx
│ │ │ ├── master_kerning_merging
│ │ │ │ ├── 0.ttx
│ │ │ │ ├── 1.ttx
│ │ │ │ └── 2.ttx
│ │ │ ├── master_non_marking_cff2
│ │ │ │ ├── TestNonMarkingCFF2_ExtraLight.ttx
│ │ │ │ └── TestNonMarkingCFF2_Regular.ttx
│ │ │ ├── master_no_overwrite_stat
│ │ │ │ ├── Test-CondensedBlack.ttx
│ │ │ │ ├── Test-CondensedThin.ttx
│ │ │ │ ├── Test-ExtendedBlack.ttx
│ │ │ │ └── Test-ExtendedThin.ttx
│ │ │ ├── master_sparse_cff2
│ │ │ │ ├── MasterSet_Kanji-w0.00.ttx
│ │ │ │ ├── MasterSet_Kanji-w1000.00.ttx
│ │ │ │ ├── MasterSet_Kanji-w439.00.ttx
│ │ │ │ ├── MasterSet_Kanji-w440.00.ttx
│ │ │ │ ├── MasterSet_Kanji-w599.00.ttx
│ │ │ │ ├── MasterSet_Kanji-w600.00.ttx
│ │ │ │ ├── MasterSet_Kanji-w669.00.ttx
│ │ │ │ ├── MasterSet_Kanji-w670.00.ttx
│ │ │ │ ├── MasterSet_Kanji-w799.00.ttx
│ │ │ │ ├── MasterSet_Kanji-w800.00.ttx
│ │ │ │ ├── MasterSet_Kanji-w889.00.ttx
│ │ │ │ └── MasterSet_Kanji-w890.00.ttx
│ │ │ ├── master_sparse_cff2_empty
│ │ │ │ ├── SparseCFF-Bold.ttx
│ │ │ │ ├── SparseCFF-Medium.ttx
│ │ │ │ └── SparseCFF-Regular.ttx
│ │ │ ├── master_ttx_drop_oncurves
│ │ │ │ ├── TestFamily-Master1.ttx
│ │ │ │ └── TestFamily-Master2.ttx
│ │ │ ├── master_ttx_getvar_ttf
│ │ │ │ └── Mutator_Getvar.ttx
│ │ │ ├── master_ttx_interpolatable_otf
│ │ │ │ ├── TestFamily2-Master0.ttx
│ │ │ │ └── TestFamily2-Master1.ttx
│ │ │ ├── master_ttx_interpolatable_ttf
│ │ │ │ ├── SparseMasters-Bold.ttx
│ │ │ │ ├── SparseMasters-Medium.ttx
│ │ │ │ ├── SparseMasters-Regular.ttx
│ │ │ │ ├── TestFamily2-Master0.ttx
│ │ │ │ ├── TestFamily2-Master1.ttx
│ │ │ │ ├── TestFamily3-Bold.ttx
│ │ │ │ ├── TestFamily3-CondensedBold.ttx
│ │ │ │ ├── TestFamily3-CondensedLight.ttx
│ │ │ │ ├── TestFamily3-CondensedSemiBold.ttx
│ │ │ │ ├── TestFamily3-Condensed.ttx
│ │ │ │ ├── TestFamily3-Light.ttx
│ │ │ │ ├── TestFamily3-Regular.ttx
│ │ │ │ ├── TestFamily3-SemiBold.ttx
│ │ │ │ ├── TestFamily4-Italic15.ttx
│ │ │ │ ├── TestFamily4-Regular.ttx
│ │ │ │ ├── TestFamily-Master0.ttx
│ │ │ │ ├── TestFamily-Master1.ttx
│ │ │ │ ├── TestFamily-Master2.ttx
│ │ │ │ ├── TestFamily-Master3.ttx
│ │ │ │ └── TestFamily-Master4.ttx
│ │ │ ├── master_ttx_varcolr_ttf
│ │ │ │ ├── TestVariableCOLR-Bold.ttx
│ │ │ │ └── TestVariableCOLR-Regular.ttx
│ │ │ ├── master_ttx_varfont_otf
│ │ │ │ └── TestCFF2VF.ttx
│ │ │ ├── master_ttx_varfont_ttf
│ │ │ │ ├── Mutator_IUP.ttx
│ │ │ │ └── SparseMasters-VF.ttx
│ │ │ ├── master_ufo
│ │ │ │ ├── SparseMasters-Bold.ufo
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── a.glif
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── dotabovecomb.glif
│ │ │ │ │ │ ├── edotabove.glif
│ │ │ │ │ │ ├── e.glif
│ │ │ │ │ │ ├── _notdef.glif
│ │ │ │ │ │ └── s.glif
│ │ │ │ │ ├── layercontents.plist
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── SparseMasters-Medium.ufo
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── e.glif
│ │ │ │ │ │ └── _notdef.glif
│ │ │ │ │ ├── layercontents.plist
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── SparseMasters-Regular.ufo
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── a.glif
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── dotabovecomb.glif
│ │ │ │ │ │ ├── edotabove.glif
│ │ │ │ │ │ ├── e.glif
│ │ │ │ │ │ ├── _notdef.glif
│ │ │ │ │ │ └── s.glif
│ │ │ │ │ ├── layercontents.plist
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── TestFamily2-Master0.ufo
│ │ │ │ │ ├── features.fea
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── a.alt.glif
│ │ │ │ │ │ ├── a.glif
│ │ │ │ │ │ ├── A_.glif
│ │ │ │ │ │ ├── ampersand.glif
│ │ │ │ │ │ ├── A_.sc.glif
│ │ │ │ │ │ ├── atilde.glif
│ │ │ │ │ │ ├── circledotted.glif
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── d.glif
│ │ │ │ │ │ ├── dieresisbelowcmb.glif
│ │ │ │ │ │ ├── dieresiscmb.glif
│ │ │ │ │ │ ├── f.glif
│ │ │ │ │ │ ├── f_t.glif
│ │ │ │ │ │ ├── n.glif
│ │ │ │ │ │ ├── _notdef.glif
│ │ │ │ │ │ ├── space.glif
│ │ │ │ │ │ ├── t.glif
│ │ │ │ │ │ ├── tildebelowcmb.glif
│ │ │ │ │ │ └── tildecmb.glif
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── TestFamily2-Master1.ufo
│ │ │ │ │ ├── features.fea
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── a.alt.glif
│ │ │ │ │ │ ├── a.glif
│ │ │ │ │ │ ├── A_.glif
│ │ │ │ │ │ ├── ampersand.glif
│ │ │ │ │ │ ├── A_.sc.glif
│ │ │ │ │ │ ├── atilde.glif
│ │ │ │ │ │ ├── circledotted.glif
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── d.glif
│ │ │ │ │ │ ├── dieresisbelowcmb.glif
│ │ │ │ │ │ ├── dieresiscmb.glif
│ │ │ │ │ │ ├── f.glif
│ │ │ │ │ │ ├── f_t.glif
│ │ │ │ │ │ ├── n.glif
│ │ │ │ │ │ ├── _notdef.glif
│ │ │ │ │ │ ├── space.glif
│ │ │ │ │ │ ├── t.glif
│ │ │ │ │ │ ├── tildebelowcmb.glif
│ │ │ │ │ │ └── tildecmb.glif
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── TestFamily3-Bold.ufo
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── F_.glif
│ │ │ │ │ │ ├── layerinfo.plist
│ │ │ │ │ │ ├── l.glif
│ │ │ │ │ │ ├── n.glif
│ │ │ │ │ │ ├── o.glif
│ │ │ │ │ │ ├── s.glif
│ │ │ │ │ │ ├── t.glif
│ │ │ │ │ │ └── T_.glif
│ │ │ │ │ ├── groups.plist
│ │ │ │ │ ├── kerning.plist
│ │ │ │ │ ├── layercontents.plist
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── TestFamily3-CondensedBold.ufo
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── F_.glif
│ │ │ │ │ │ ├── layerinfo.plist
│ │ │ │ │ │ ├── l.glif
│ │ │ │ │ │ ├── n.glif
│ │ │ │ │ │ ├── o.glif
│ │ │ │ │ │ ├── s.glif
│ │ │ │ │ │ ├── t.glif
│ │ │ │ │ │ └── T_.glif
│ │ │ │ │ ├── groups.plist
│ │ │ │ │ ├── kerning.plist
│ │ │ │ │ ├── layercontents.plist
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── TestFamily3-CondensedLight.ufo
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── F_.glif
│ │ │ │ │ │ ├── layerinfo.plist
│ │ │ │ │ │ ├── l.glif
│ │ │ │ │ │ ├── n.glif
│ │ │ │ │ │ ├── o.glif
│ │ │ │ │ │ ├── s.glif
│ │ │ │ │ │ ├── t.glif
│ │ │ │ │ │ └── T_.glif
│ │ │ │ │ ├── groups.plist
│ │ │ │ │ ├── kerning.plist
│ │ │ │ │ ├── layercontents.plist
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── TestFamily3-CondensedSemiBold.ufo
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── F_.glif
│ │ │ │ │ │ ├── layerinfo.plist
│ │ │ │ │ │ ├── l.glif
│ │ │ │ │ │ ├── n.glif
│ │ │ │ │ │ ├── o.glif
│ │ │ │ │ │ ├── s.glif
│ │ │ │ │ │ ├── t.glif
│ │ │ │ │ │ └── T_.glif
│ │ │ │ │ ├── groups.plist
│ │ │ │ │ ├── kerning.plist
│ │ │ │ │ ├── layercontents.plist
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── TestFamily3-Condensed.ufo
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── F_.glif
│ │ │ │ │ │ ├── layerinfo.plist
│ │ │ │ │ │ ├── l.glif
│ │ │ │ │ │ ├── n.glif
│ │ │ │ │ │ ├── o.glif
│ │ │ │ │ │ ├── s.glif
│ │ │ │ │ │ ├── t.glif
│ │ │ │ │ │ └── T_.glif
│ │ │ │ │ ├── groups.plist
│ │ │ │ │ ├── kerning.plist
│ │ │ │ │ ├── layercontents.plist
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── TestFamily3-Light.ufo
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── F_.glif
│ │ │ │ │ │ ├── layerinfo.plist
│ │ │ │ │ │ ├── l.glif
│ │ │ │ │ │ ├── n.glif
│ │ │ │ │ │ ├── o.glif
│ │ │ │ │ │ ├── s.glif
│ │ │ │ │ │ ├── t.glif
│ │ │ │ │ │ └── T_.glif
│ │ │ │ │ ├── groups.plist
│ │ │ │ │ ├── kerning.plist
│ │ │ │ │ ├── layercontents.plist
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── TestFamily3-Regular.ufo
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── F_.glif
│ │ │ │ │ │ ├── layerinfo.plist
│ │ │ │ │ │ ├── l.glif
│ │ │ │ │ │ ├── n.glif
│ │ │ │ │ │ ├── o.glif
│ │ │ │ │ │ ├── s.glif
│ │ │ │ │ │ ├── t.glif
│ │ │ │ │ │ └── T_.glif
│ │ │ │ │ ├── groups.plist
│ │ │ │ │ ├── kerning.plist
│ │ │ │ │ ├── layercontents.plist
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── TestFamily3-SemiBold.ufo
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── F_.glif
│ │ │ │ │ │ ├── layerinfo.plist
│ │ │ │ │ │ ├── l.glif
│ │ │ │ │ │ ├── n.glif
│ │ │ │ │ │ ├── o.glif
│ │ │ │ │ │ ├── s.glif
│ │ │ │ │ │ ├── t.glif
│ │ │ │ │ │ └── T_.glif
│ │ │ │ │ ├── groups.plist
│ │ │ │ │ ├── kerning.plist
│ │ │ │ │ ├── layercontents.plist
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── TestFamily4-Italic15.ufo
│ │ │ │ │ ├── features.fea
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── dieresiscomb.glif
│ │ │ │ │ │ ├── n.glif
│ │ │ │ │ │ ├── N_.glif
│ │ │ │ │ │ ├── odieresis.glif
│ │ │ │ │ │ ├── O_dieresis.glif
│ │ │ │ │ │ ├── o.glif
│ │ │ │ │ │ └── O_.glif
│ │ │ │ │ ├── glyphs.public.background
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── dieresiscomb.glif
│ │ │ │ │ │ ├── N_.glif
│ │ │ │ │ │ ├── o.glif
│ │ │ │ │ │ └── O_.glif
│ │ │ │ │ ├── groups.plist
│ │ │ │ │ ├── layercontents.plist
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── TestFamily4-Regular.ufo
│ │ │ │ │ ├── features.fea
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── dieresiscomb.glif
│ │ │ │ │ │ ├── n.glif
│ │ │ │ │ │ ├── N_.glif
│ │ │ │ │ │ ├── odieresis.glif
│ │ │ │ │ │ ├── O_dieresis.glif
│ │ │ │ │ │ ├── o.glif
│ │ │ │ │ │ └── O_.glif
│ │ │ │ │ ├── glyphs.public.background
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── dieresiscomb.glif
│ │ │ │ │ │ ├── n.glif
│ │ │ │ │ │ ├── N_.glif
│ │ │ │ │ │ ├── o.glif
│ │ │ │ │ │ └── O_.glif
│ │ │ │ │ ├── groups.plist
│ │ │ │ │ ├── kerning.plist
│ │ │ │ │ ├── layercontents.plist
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── TestFamily-Master0.ufo
│ │ │ │ │ ├── features.fea
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── a.glif
│ │ │ │ │ │ ├── A_.glif
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── dollar.glif
│ │ │ │ │ │ ├── dollar.nostroke.glif
│ │ │ │ │ │ ├── _notdef.glif
│ │ │ │ │ │ └── space.glif
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── TestFamily-Master1.ufo
│ │ │ │ │ ├── features.fea
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── a.glif
│ │ │ │ │ │ ├── A_.glif
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── dollar.glif
│ │ │ │ │ │ ├── dollar.nostroke.glif
│ │ │ │ │ │ ├── _notdef.glif
│ │ │ │ │ │ └── space.glif
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── TestFamily-Master2.ufo
│ │ │ │ │ ├── features.fea
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── a.glif
│ │ │ │ │ │ ├── A_.glif
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── dollar.glif
│ │ │ │ │ │ ├── dollar.nostroke.glif
│ │ │ │ │ │ ├── _notdef.glif
│ │ │ │ │ │ └── space.glif
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── TestFamily-Master3.ufo
│ │ │ │ │ ├── features.fea
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── a.glif
│ │ │ │ │ │ ├── A_.glif
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── dollar.glif
│ │ │ │ │ │ ├── dollar.nostroke.glif
│ │ │ │ │ │ ├── _notdef.glif
│ │ │ │ │ │ └── space.glif
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ └── TestFamily-Master4.ufo
│ │ │ │ ├── features.fea
│ │ │ │ ├── fontinfo.plist
│ │ │ │ ├── glyphs
│ │ │ │ │ ├── a.glif
│ │ │ │ │ ├── A_.glif
│ │ │ │ │ ├── contents.plist
│ │ │ │ │ ├── dollar.glif
│ │ │ │ │ ├── dollar.nostroke.glif
│ │ │ │ │ ├── _notdef.glif
│ │ │ │ │ └── space.glif
│ │ │ │ ├── lib.plist
│ │ │ │ └── metainfo.plist
│ │ │ ├── master_vpal_test
│ │ │ │ ├── master_vpal_test_0.ttx
│ │ │ │ └── master_vpal_test_1.ttx
│ │ │ ├── master_vvar_cff2
│ │ │ │ ├── TestVVAR.0.ttx
│ │ │ │ └── TestVVAR.1.ttx
│ │ │ ├── SingleMaster.designspace
│ │ │ ├── SparseCFF2.designspace
│ │ │ ├── SparseMasters.designspace
│ │ │ ├── SparseMasters.glyphs
│ │ │ ├── SparseMasters_ufo.designspace
│ │ │ ├── TestBASE.designspace
│ │ │ ├── TestCFF2.designspace
│ │ │ ├── TestCFF2Input.designspace
│ │ │ ├── TestNonMarkingCFF2.designspace
│ │ │ ├── TestNoOverwriteSTAT.designspace
│ │ │ ├── test_results
│ │ │ │ ├── BuildAvar2.ttx
│ │ │ │ ├── BuildAvarEmptyAxis.ttx
│ │ │ │ ├── BuildAvarIdentityMaps.ttx
│ │ │ │ ├── BuildAvarSingleAxis.ttx
│ │ │ │ ├── BuildGvarCompositeExplicitDelta.ttx
│ │ │ │ ├── BuildMain.ttx
│ │ │ │ ├── BuildTestCFF2.ttx
│ │ │ │ ├── Build.ttx
│ │ │ │ ├── DropOnCurves.ttx
│ │ │ │ ├── FeatureVarsCustomTag.ttx
│ │ │ │ ├── FeatureVars_rclt.ttx
│ │ │ │ ├── FeatureVars.ttx
│ │ │ │ ├── FeatureVarsWholeRange.ttx
│ │ │ │ ├── InterpolateLayout2.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_1_diff2.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_1_diff.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_1_same.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_2_class_diff2.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_2_class_diff.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_2_class_same.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_2_spec_diff2.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_2_spec_diff.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_2_spec_same.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_3_diff.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_3_same.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_4_diff.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_4_same.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_5_diff.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_5_same.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_6_diff.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_6_same.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_7_diff.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_7_same.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_8_diff.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_8_same.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_size_feat_same.ttx
│ │ │ │ ├── InterpolateLayoutMain.ttx
│ │ │ │ ├── InterpolateLayout.ttx
│ │ │ │ ├── InterpolateTestCFF2VF.ttx
│ │ │ │ ├── Mutator_Getvar-instance.ttx
│ │ │ │ ├── Mutator_IUP-instance.ttx
│ │ │ │ ├── Mutator.ttx
│ │ │ │ ├── SingleMaster.ttx
│ │ │ │ ├── SparseCFF2-VF.ttx
│ │ │ │ ├── SparseMasters.ttx
│ │ │ │ ├── TestBASE.ttx
│ │ │ │ ├── TestNonMarkingCFF2.ttx
│ │ │ │ ├── TestSparseCFF2VF.ttx
│ │ │ │ ├── TestVariableCOLR-VF.ttx
│ │ │ │ ├── test_vpal.ttx
│ │ │ │ └── TestVVAR.ttx
│ │ │ ├── TestSparseCFF2VF.designspace
│ │ │ ├── TestVariableCOLR.designspace
│ │ │ ├── test_vpal.designspace
│ │ │ ├── TestVVAR.designspace
│ │ │ └── VarLibLocationTest.designspace
│ │ ├── featureVars_test.py
│ │ ├── __init__.py
│ │ ├── instancer
│ │ │ ├── conftest.py
│ │ │ ├── data
│ │ │ │ ├── CFF2Instancer-VF-1.ttx
│ │ │ │ ├── CFF2Instancer-VF-2.ttx
│ │ │ │ ├── CFF2Instancer-VF-3.ttx
│ │ │ │ ├── PartialInstancerTest2-VF.ttx
│ │ │ │ ├── PartialInstancerTest3-VF.ttx
│ │ │ │ ├── PartialInstancerTest4-VF.ttx
│ │ │ │ ├── PartialInstancerTest-VF.ttx
│ │ │ │ ├── SinglePos.ttx
│ │ │ │ ├── STATInstancerTest.ttx
│ │ │ │ └── test_results
│ │ │ │ ├── CFF2Instancer-VF-1-instance-400.ttx
│ │ │ │ ├── CFF2Instancer-VF-2-instance-400.ttx
│ │ │ │ ├── CFF2Instancer-VF-3-instance-400.ttx
│ │ │ │ ├── PartialInstancerTest2-VF-instance-100,100.ttx
│ │ │ │ ├── PartialInstancerTest2-VF-instance-100,62.5.ttx
│ │ │ │ ├── PartialInstancerTest2-VF-instance-400,100.ttx
│ │ │ │ ├── PartialInstancerTest2-VF-instance-400,62.5.ttx
│ │ │ │ ├── PartialInstancerTest2-VF-instance-900,100.ttx
│ │ │ │ ├── PartialInstancerTest2-VF-instance-900,62.5.ttx
│ │ │ │ ├── PartialInstancerTest3-VF-instance-400-no-overlap-flags.ttx
│ │ │ │ ├── PartialInstancerTest3-VF-instance-400-no-overlaps.ttx
│ │ │ │ ├── PartialInstancerTest3-VF-instance-700-no-overlaps.ttx
│ │ │ │ └── SinglePos-VF-instance-280,18.ttx
│ │ │ ├── instancer_test.py
│ │ │ ├── names_test.py
│ │ │ └── solver_test.py
│ │ ├── interpolatable_test.py
│ │ ├── interpolate_layout_test.py
│ │ ├── iup_test.py
│ │ ├── merger_test.py
│ │ ├── models_test.py
│ │ ├── mutator_test.py
│ │ ├── stat_test.py
│ │ ├── varLib_test.py
│ │ └── varStore_test.py
│ └── voltLib
│ ├── data
│ │ ├── Empty.ttf
│ │ ├── NamdhinggoSIL1006.fea
│ │ ├── NamdhinggoSIL1006.vtp
│ │ ├── Nutso.fea
│ │ ├── Nutso.ttf
│ │ └── Nutso.vtp
│ ├── lexer_test.py
│ ├── parser_test.py
│ └── volttofea_test.py
└── tox.ini
198 directories, 2468 files
fonttools是一个用Python编写的操作字体文件的库。该项目包括TTX工具,可将TrueType和OpenType字体转换为XML文本格式,并支持TrueType、OpenType、AFM以及部分Type 1和一些Mac特定格式。
【实例截图】
【核心代码】
文件清单
└── fonttools-089400352f4daf0d8a72bbe558a9a42795f542aa
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── dev-requirements.txt
├── Doc
│ ├── docs-requirements.txt
│ ├── make.bat
│ ├── Makefile
│ ├── man
│ │ └── man1
│ │ └── ttx.1
│ ├── README.md
│ └── source
│ ├── afmLib.rst
│ ├── agl.rst
│ ├── assets
│ │ └── img
│ │ └── favicon.ico
│ ├── cffLib
│ │ ├── index.rst
│ │ ├── specializer.rst
│ │ └── width.rst
│ ├── colorLib
│ │ └── index.rst
│ ├── config.rst
│ ├── conf.py
│ ├── cu2qu
│ │ └── index.rst
│ ├── designspaceLib
│ │ ├── index.rst
│ │ ├── python.rst
│ │ ├── scripting.rst
│ │ ├── v5_class_diagram.png
│ │ ├── v5_class_diagram.puml
│ │ ├── v5_split_downconvert.png
│ │ ├── v5_split_downconvert.puml
│ │ ├── v5_variable_fonts_vs_instances.png
│ │ └── xml.rst
│ ├── developer.rst
│ ├── encodings
│ │ └── index.rst
│ ├── feaLib
│ │ └── index.rst
│ ├── index.rst
│ ├── merge.rst
│ ├── misc
│ │ ├── arrayTools.rst
│ │ ├── bezierTools.rst
│ │ ├── classifyTools.rst
│ │ ├── cliTools.rst
│ │ ├── configTools.rst
│ │ ├── eexec.rst
│ │ ├── encodingTools.rst
│ │ ├── etree.rst
│ │ ├── filenames.rst
│ │ ├── fixedTools.rst
│ │ ├── index.rst
│ │ ├── intTools.rst
│ │ ├── loggingTools.rst
│ │ ├── macCreatorType.rst
│ │ ├── macRes.rst
│ │ ├── plistlib.rst
│ │ ├── psCharStrings.rst
│ │ ├── psLib.rst
│ │ ├── psOperators.rst
│ │ ├── sstruct.rst
│ │ ├── symfont.rst
│ │ ├── testTools.rst
│ │ ├── textTools.rst
│ │ ├── timeTools.rst
│ │ ├── transform.rst
│ │ ├── xmlReader.rst
│ │ └── xmlWriter.rst
│ ├── mtiLib.rst
│ ├── optional.rst
│ ├── otlLib
│ │ └── index.rst
│ ├── pens
│ │ ├── areaPen.rst
│ │ ├── basePen.rst
│ │ ├── boundsPen.rst
│ │ ├── cocoaPen.rst
│ │ ├── cu2quPen.rst
│ │ ├── filterPen.rst
│ │ ├── freetypePen.rst
│ │ ├── index.rst
│ │ ├── momentsPen.rst
│ │ ├── perimeterPen.rst
│ │ ├── pointInsidePen.rst
│ │ ├── pointPen.rst
│ │ ├── qtPen.rst
│ │ ├── recordingPen.rst
│ │ ├── reportLabPen.rst
│ │ ├── reverseContourPen.rst
│ │ ├── roundingPen.rst
│ │ ├── statisticsPen.rst
│ │ ├── svgPathPen.rst
│ │ ├── t2CharStringPen.rst
│ │ ├── teePen.rst
│ │ ├── transformPen.rst
│ │ ├── ttGlyphPen.rst
│ │ └── wxPen.rst
│ ├── subset
│ │ ├── cff.rst
│ │ └── index.rst
│ ├── svgLib
│ │ ├── index.rst
│ │ └── path
│ │ ├── index.rst
│ │ └── parser.rst
│ ├── t1Lib.rst
│ ├── tfmLib.rst
│ ├── ttLib
│ │ ├── index.rst
│ │ ├── macUtils.rst
│ │ ├── sfnt.rst
│ │ ├── standardGlyphOrder.rst
│ │ ├── tables
│ │ │ ├── _a_n_k_r.rst
│ │ │ ├── _a_v_a_r.rst
│ │ │ ├── B_A_S_E_.rst
│ │ │ ├── _b_s_l_n.rst
│ │ │ ├── C_B_D_T_.rst
│ │ │ ├── C_B_L_C_.rst
│ │ │ ├── C_F_F__2.rst
│ │ │ ├── C_F_F_.rst
│ │ │ ├── _c_i_d_g.rst
│ │ │ ├── _c_m_a_p.rst
│ │ │ ├── C_O_L_R_.rst
│ │ │ ├── C_P_A_L_.rst
│ │ │ ├── _c_v_a_r.rst
│ │ │ ├── _c_v_t.rst
│ │ │ ├── D_S_I_G_.rst
│ │ │ ├── E_B_D_T_.rst
│ │ │ ├── E_B_L_C_.rst
│ │ │ ├── _f_e_a_t.rst
│ │ │ ├── F__e_a_t.rst
│ │ │ ├── F_F_T_M_.rst
│ │ │ ├── _f_p_g_m.rst
│ │ │ ├── _f_v_a_r.rst
│ │ │ ├── _g_a_s_p.rst
│ │ │ ├── _g_c_i_d.rst
│ │ │ ├── G_D_E_F_.rst
│ │ │ ├── G__l_a_t.rst
│ │ │ ├── G__l_o_c.rst
│ │ │ ├── _g_l_y_f.rst
│ │ │ ├── G_M_A_P_.rst
│ │ │ ├── G_P_K_G_.rst
│ │ │ ├── G_P_O_S_.rst
│ │ │ ├── G_S_U_B_.rst
│ │ │ ├── _g_v_a_r.rst
│ │ │ ├── _h_d_m_x.rst
│ │ │ ├── _h_e_a_d.rst
│ │ │ ├── _h_h_e_a.rst
│ │ │ ├── _h_m_t_x.rst
│ │ │ ├── H_V_A_R_.rst
│ │ │ ├── J_S_T_F_.rst
│ │ │ ├── _k_e_r_n.rst
│ │ │ ├── _l_c_a_r.rst
│ │ │ ├── _l_o_c_a.rst
│ │ │ ├── _l_t_a_g.rst
│ │ │ ├── L_T_S_H_.rst
│ │ │ ├── M_A_T_H_.rst
│ │ │ ├── _m_a_x_p.rst
│ │ │ ├── _m_e_t_a.rst
│ │ │ ├── M_E_T_A_.rst
│ │ │ ├── _m_o_r_t.rst
│ │ │ ├── _m_o_r_x.rst
│ │ │ ├── M_V_A_R_.rst
│ │ │ ├── _n_a_m_e.rst
│ │ │ ├── _o_p_b_d.rst
│ │ │ ├── O_S_2f_2.rst
│ │ │ ├── _p_o_s_t.rst
│ │ │ ├── _p_r_e_p.rst
│ │ │ ├── _p_r_o_p.rst
│ │ │ ├── _s_b_i_x.rst
│ │ │ ├── S__i_l_f.rst
│ │ │ ├── S__i_l_l.rst
│ │ │ ├── S_I_N_G_.rst
│ │ │ ├── S_T_A_T_.rst
│ │ │ ├── S_V_G_.rst
│ │ │ ├── _t_r_a_k.rst
│ │ │ ├── T_T_F_A_.rst
│ │ │ ├── V_D_M_X_.rst
│ │ │ ├── _v_h_e_a.rst
│ │ │ ├── _v_m_t_x.rst
│ │ │ ├── V_O_R_G_.rst
│ │ │ ├── VTT_related.rst
│ │ │ └── V_V_A_R_.rst
│ │ ├── tables.rst
│ │ ├── ttCollection.rst
│ │ ├── ttFont.rst
│ │ └── woff2.rst
│ ├── ttx.rst
│ ├── ufoLib
│ │ ├── converters.rst
│ │ ├── errors.rst
│ │ ├── filenames.rst
│ │ ├── glifLib.rst
│ │ ├── index.rst
│ │ ├── kerning.rst
│ │ ├── plistlib.rst
│ │ ├── pointpen.rst
│ │ ├── utils.rst
│ │ └── validators.rst
│ ├── unicodedata
│ │ ├── Blocks.rst
│ │ ├── index.rst
│ │ ├── OTTags.rst
│ │ ├── ScriptExtensions.rst
│ │ └── Scripts.rst
│ ├── unicode.rst
│ ├── varLib
│ │ ├── builder.rst
│ │ ├── cff.rst
│ │ ├── errors.rst
│ │ ├── featureVars.rst
│ │ ├── index.rst
│ │ ├── instancer.rst
│ │ ├── interpolatable.rst
│ │ ├── interpolate_layout.rst
│ │ ├── iup.rst
│ │ ├── merger.rst
│ │ ├── models.rst
│ │ ├── mutator.rst
│ │ ├── mvar.rst
│ │ ├── plot.rst
│ │ └── varStore.rst
│ └── voltLib
│ ├── index.rst
│ └── voltToFea.rst
├── fonttools
├── Icons
│ ├── FontToolsIconGreenCircle.pdf
│ ├── FontToolsIconGreenCircle.png
│ ├── FontToolsIconGreenSquare.pdf
│ ├── FontToolsIconGreenSquare.png
│ ├── FontToolsIconWhiteCircle.pdf
│ ├── FontToolsIconWhiteCircle.png
│ ├── FontToolsIconWhiteSquare.pdf
│ └── FontToolsIconWhiteSquare.png
├── Lib
│ └── fontTools
│ ├── afmLib.py
│ ├── agl.py
│ ├── cffLib
│ │ ├── CFF2ToCFF.py
│ │ ├── CFFToCFF2.py
│ │ ├── __init__.py
│ │ ├── specializer.py
│ │ ├── transforms.py
│ │ └── width.py
│ ├── colorLib
│ │ ├── builder.py
│ │ ├── errors.py
│ │ ├── geometry.py
│ │ ├── __init__.py
│ │ ├── table_builder.py
│ │ └── unbuilder.py
│ ├── config
│ │ └── __init__.py
│ ├── cu2qu
│ │ ├── benchmark.py
│ │ ├── cli.py
│ │ ├── cu2qu.py
│ │ ├── errors.py
│ │ ├── __init__.py
│ │ ├── __main__.py
│ │ └── ufo.py
│ ├── designspaceLib
│ │ ├── __init__.py
│ │ ├── __main__.py
│ │ ├── split.py
│ │ ├── statNames.py
│ │ └── types.py
│ ├── encodings
│ │ ├── codecs.py
│ │ ├── __init__.py
│ │ ├── MacRoman.py
│ │ └── StandardEncoding.py
│ ├── feaLib
│ │ ├── ast.py
│ │ ├── builder.py
│ │ ├── error.py
│ │ ├── __init__.py
│ │ ├── lexer.py
│ │ ├── location.py
│ │ ├── lookupDebugInfo.py
│ │ ├── __main__.py
│ │ ├── parser.py
│ │ └── variableScalar.py
│ ├── fontBuilder.py
│ ├── help.py
│ ├── __init__.py
│ ├── __main__.py
│ ├── merge
│ │ ├── base.py
│ │ ├── cmap.py
│ │ ├── __init__.py
│ │ ├── layout.py
│ │ ├── __main__.py
│ │ ├── options.py
│ │ ├── tables.py
│ │ ├── unicode.py
│ │ └── util.py
│ ├── misc
│ │ ├── arrayTools.py
│ │ ├── bezierTools.py
│ │ ├── classifyTools.py
│ │ ├── cliTools.py
│ │ ├── configTools.py
│ │ ├── cython.py
│ │ ├── dictTools.py
│ │ ├── eexec.py
│ │ ├── encodingTools.py
│ │ ├── etree.py
│ │ ├── filenames.py
│ │ ├── fixedTools.py
│ │ ├── __init__.py
│ │ ├── intTools.py
│ │ ├── iterTools.py
│ │ ├── lazyTools.py
│ │ ├── loggingTools.py
│ │ ├── macCreatorType.py
│ │ ├── macRes.py
│ │ ├── plistlib
│ │ │ ├── __init__.py
│ │ │ └── py.typed
│ │ ├── psCharStrings.py
│ │ ├── psLib.py
│ │ ├── psOperators.py
│ │ ├── py23.py
│ │ ├── roundTools.py
│ │ ├── sstruct.py
│ │ ├── symfont.py
│ │ ├── testTools.py
│ │ ├── textTools.py
│ │ ├── timeTools.py
│ │ ├── transform.py
│ │ ├── treeTools.py
│ │ ├── vector.py
│ │ ├── visitor.py
│ │ ├── xmlReader.py
│ │ └── xmlWriter.py
│ ├── mtiLib
│ │ ├── __init__.py
│ │ └── __main__.py
│ ├── otlLib
│ │ ├── builder.py
│ │ ├── builder.py.sketch
│ │ ├── error.py
│ │ ├── __init__.py
│ │ ├── maxContextCalc.py
│ │ └── optimize
│ │ ├── gpos.py
│ │ ├── __init__.py
│ │ └── __main__.py
│ ├── pens
│ │ ├── areaPen.py
│ │ ├── basePen.py
│ │ ├── boundsPen.py
│ │ ├── cairoPen.py
│ │ ├── cocoaPen.py
│ │ ├── cu2quPen.py
│ │ ├── explicitClosingLinePen.py
│ │ ├── filterPen.py
│ │ ├── freetypePen.py
│ │ ├── hashPointPen.py
│ │ ├── __init__.py
│ │ ├── momentsPen.py
│ │ ├── perimeterPen.py
│ │ ├── pointInsidePen.py
│ │ ├── pointPen.py
│ │ ├── qtPen.py
│ │ ├── qu2cuPen.py
│ │ ├── quartzPen.py
│ │ ├── recordingPen.py
│ │ ├── reportLabPen.py
│ │ ├── reverseContourPen.py
│ │ ├── roundingPen.py
│ │ ├── statisticsPen.py
│ │ ├── svgPathPen.py
│ │ ├── t2CharStringPen.py
│ │ ├── teePen.py
│ │ ├── transformPen.py
│ │ ├── ttGlyphPen.py
│ │ └── wxPen.py
│ ├── qu2cu
│ │ ├── benchmark.py
│ │ ├── cli.py
│ │ ├── __init__.py
│ │ ├── __main__.py
│ │ └── qu2cu.py
│ ├── subset
│ │ ├── cff.py
│ │ ├── __init__.py
│ │ ├── __main__.py
│ │ ├── svg.py
│ │ └── util.py
│ ├── svgLib
│ │ ├── __init__.py
│ │ └── path
│ │ ├── arc.py
│ │ ├── __init__.py
│ │ ├── parser.py
│ │ └── shapes.py
│ ├── t1Lib
│ │ └── __init__.py
│ ├── tfmLib.py
│ ├── ttLib
│ │ ├── __init__.py
│ │ ├── macUtils.py
│ │ ├── __main__.py
│ │ ├── removeOverlaps.py
│ │ ├── reorderGlyphs.py
│ │ ├── scaleUpem.py
│ │ ├── sfnt.py
│ │ ├── standardGlyphOrder.py
│ │ ├── tables
│ │ │ ├── _a_n_k_r.py
│ │ │ ├── asciiTable.py
│ │ │ ├── _a_v_a_r.py
│ │ │ ├── B_A_S_E_.py
│ │ │ ├── BitmapGlyphMetrics.py
│ │ │ ├── _b_s_l_n.py
│ │ │ ├── C_B_D_T_.py
│ │ │ ├── C_B_L_C_.py
│ │ │ ├── C_F_F__2.py
│ │ │ ├── C_F_F_.py
│ │ │ ├── _c_i_d_g.py
│ │ │ ├── _c_m_a_p.py
│ │ │ ├── C_O_L_R_.py
│ │ │ ├── C_P_A_L_.py
│ │ │ ├── _c_v_a_r.py
│ │ │ ├── _c_v_t.py
│ │ │ ├── D__e_b_g.py
│ │ │ ├── DefaultTable.py
│ │ │ ├── D_S_I_G_.py
│ │ │ ├── E_B_D_T_.py
│ │ │ ├── E_B_L_C_.py
│ │ │ ├── _f_e_a_t.py
│ │ │ ├── F__e_a_t.py
│ │ │ ├── F_F_T_M_.py
│ │ │ ├── _f_p_g_m.py
│ │ │ ├── _f_v_a_r.py
│ │ │ ├── _g_a_s_p.py
│ │ │ ├── _g_c_i_d.py
│ │ │ ├── G_D_E_F_.py
│ │ │ ├── G__l_a_t.py
│ │ │ ├── G__l_o_c.py
│ │ │ ├── _g_l_y_f.py
│ │ │ ├── G_M_A_P_.py
│ │ │ ├── G_P_K_G_.py
│ │ │ ├── G_P_O_S_.py
│ │ │ ├── grUtils.py
│ │ │ ├── G_S_U_B_.py
│ │ │ ├── _g_v_a_r.py
│ │ │ ├── _h_d_m_x.py
│ │ │ ├── _h_e_a_d.py
│ │ │ ├── _h_h_e_a.py
│ │ │ ├── _h_m_t_x.py
│ │ │ ├── H_V_A_R_.py
│ │ │ ├── __init__.py
│ │ │ ├── J_S_T_F_.py
│ │ │ ├── _k_e_r_n.py
│ │ │ ├── _l_c_a_r.py
│ │ │ ├── _l_o_c_a.py
│ │ │ ├── _l_t_a_g.py
│ │ │ ├── L_T_S_H_.py
│ │ │ ├── M_A_T_H_.py
│ │ │ ├── _m_a_x_p.py
│ │ │ ├── _m_e_t_a.py
│ │ │ ├── M_E_T_A_.py
│ │ │ ├── _m_o_r_t.py
│ │ │ ├── _m_o_r_x.py
│ │ │ ├── M_V_A_R_.py
│ │ │ ├── _n_a_m_e.py
│ │ │ ├── _o_p_b_d.py
│ │ │ ├── O_S_2f_2.py
│ │ │ ├── otBase.py
│ │ │ ├── otConverters.py
│ │ │ ├── otData.py
│ │ │ ├── otTables.py
│ │ │ ├── otTraverse.py
│ │ │ ├── _p_o_s_t.py
│ │ │ ├── _p_r_e_p.py
│ │ │ ├── _p_r_o_p.py
│ │ │ ├── sbixGlyph.py
│ │ │ ├── _s_b_i_x.py
│ │ │ ├── sbixStrike.py
│ │ │ ├── S__i_l_f.py
│ │ │ ├── S__i_l_l.py
│ │ │ ├── S_I_N_G_.py
│ │ │ ├── S_T_A_T_.py
│ │ │ ├── S_V_G_.py
│ │ │ ├── table_API_readme.txt
│ │ │ ├── _t_r_a_k.py
│ │ │ ├── T_S_I__0.py
│ │ │ ├── T_S_I__1.py
│ │ │ ├── T_S_I__2.py
│ │ │ ├── T_S_I__3.py
│ │ │ ├── T_S_I__5.py
│ │ │ ├── T_S_I_B_.py
│ │ │ ├── T_S_I_C_.py
│ │ │ ├── T_S_I_D_.py
│ │ │ ├── T_S_I_J_.py
│ │ │ ├── T_S_I_P_.py
│ │ │ ├── T_S_I_S_.py
│ │ │ ├── T_S_I_V_.py
│ │ │ ├── T_T_F_A_.py
│ │ │ ├── ttProgram.py
│ │ │ ├── TupleVariation.py
│ │ │ ├── V_A_R_C_.py
│ │ │ ├── V_D_M_X_.py
│ │ │ ├── _v_h_e_a.py
│ │ │ ├── _v_m_t_x.py
│ │ │ ├── V_O_R_G_.py
│ │ │ └── V_V_A_R_.py
│ │ ├── ttCollection.py
│ │ ├── ttFont.py
│ │ ├── ttGlyphSet.py
│ │ ├── ttVisitor.py
│ │ └── woff2.py
│ ├── ttx.py
│ ├── ufoLib
│ │ ├── converters.py
│ │ ├── errors.py
│ │ ├── etree.py
│ │ ├── filenames.py
│ │ ├── glifLib.py
│ │ ├── __init__.py
│ │ ├── kerning.py
│ │ ├── plistlib.py
│ │ ├── pointPen.py
│ │ ├── utils.py
│ │ └── validators.py
│ ├── unicodedata
│ │ ├── Blocks.py
│ │ ├── __init__.py
│ │ ├── OTTags.py
│ │ ├── ScriptExtensions.py
│ │ └── Scripts.py
│ ├── unicode.py
│ ├── varLib
│ │ ├── avarPlanner.py
│ │ ├── avar.py
│ │ ├── builder.py
│ │ ├── cff.py
│ │ ├── errors.py
│ │ ├── featureVars.py
│ │ ├── __init__.py
│ │ ├── instancer
│ │ │ ├── featureVars.py
│ │ │ ├── __init__.py
│ │ │ ├── __main__.py
│ │ │ ├── names.py
│ │ │ └── solver.py
│ │ ├── interpolatableHelpers.py
│ │ ├── interpolatablePlot.py
│ │ ├── interpolatable.py
│ │ ├── interpolatableTestContourOrder.py
│ │ ├── interpolatableTestStartingPoint.py
│ │ ├── interpolate_layout.py
│ │ ├── iup.py
│ │ ├── __main__.py
│ │ ├── merger.py
│ │ ├── models.py
│ │ ├── multiVarStore.py
│ │ ├── mutator.py
│ │ ├── mvar.py
│ │ ├── plot.py
│ │ ├── stat.py
│ │ └── varStore.py
│ └── voltLib
│ ├── ast.py
│ ├── error.py
│ ├── __init__.py
│ ├── lexer.py
│ ├── parser.py
│ └── voltToFea.py
├── LICENSE
├── LICENSE.external
├── Makefile
├── MANIFEST.in
├── MetaTools
│ ├── buildTableList.py
│ ├── buildUCD.py
│ └── roundTrip.py
├── mypy.ini
├── NEWS.rst
├── pyproject.toml
├── README.rst
├── requirements.txt
├── SECURITY.md
├── setup.cfg
├── setup.py
├── Snippets
│ ├── checksum.py
│ ├── cmap-format.py
│ ├── compact_gpos.py
│ ├── decompose-ttf.py
│ ├── dump_woff_metadata.py
│ ├── edit_raw_table_data.py
│ ├── fix-dflt-langsys.py
│ ├── fontTools
│ ├── interpolate.py
│ ├── layout-features.py
│ ├── merge_woff_metadata.py
│ ├── name-viewer.ipynb
│ ├── otf2ttf.py
│ ├── print-json.py
│ ├── README.md
│ ├── rename-fonts.py
│ ├── statShape.py
│ ├── subset-fpgm.py
│ └── svg2glif.py
├── Tests
│ ├── afmLib
│ │ ├── afmLib_test.py
│ │ └── data
│ │ └── TestAFM.afm
│ ├── agl_test.py
│ ├── cffLib
│ │ ├── cffLib_test.py
│ │ ├── data
│ │ │ ├── CFFToCFF2-1.otf
│ │ │ ├── LinLibertine_RBI.otf
│ │ │ ├── TestCFF2Widths.ttx
│ │ │ ├── TestFDSelect4.ttx
│ │ │ ├── TestOTF.ttx
│ │ │ └── TestSparseCFF2VF.ttx
│ │ └── specializer_test.py
│ ├── colorLib
│ │ ├── builder_test.py
│ │ ├── __init__.py
│ │ ├── table_builder_test.py
│ │ └── unbuilder_test.py
│ ├── config_test.py
│ ├── conftest.py
│ ├── cu2qu
│ │ ├── cli_test.py
│ │ ├── cu2qu_test.py
│ │ ├── data
│ │ │ ├── curves.json
│ │ │ ├── RobotoSubset-Bold.ufo
│ │ │ │ ├── fontinfo.plist
│ │ │ │ ├── glyphs
│ │ │ │ │ ├── a.glif
│ │ │ │ │ ├── A_.glif
│ │ │ │ │ ├── b.glif
│ │ │ │ │ ├── B_.glif
│ │ │ │ │ ├── c.glif
│ │ │ │ │ ├── C_.glif
│ │ │ │ │ ├── contents.plist
│ │ │ │ │ ├── d.glif
│ │ │ │ │ ├── D_.glif
│ │ │ │ │ ├── e.glif
│ │ │ │ │ ├── E_.glif
│ │ │ │ │ ├── f.glif
│ │ │ │ │ ├── F_.glif
│ │ │ │ │ ├── g.glif
│ │ │ │ │ ├── G_.glif
│ │ │ │ │ ├── h.glif
│ │ │ │ │ ├── H_.glif
│ │ │ │ │ ├── i.glif
│ │ │ │ │ ├── I_.glif
│ │ │ │ │ ├── j.glif
│ │ │ │ │ ├── J_.glif
│ │ │ │ │ ├── k.glif
│ │ │ │ │ ├── K_.glif
│ │ │ │ │ ├── l.glif
│ │ │ │ │ ├── L_.glif
│ │ │ │ │ ├── m.glif
│ │ │ │ │ ├── M_.glif
│ │ │ │ │ ├── n.glif
│ │ │ │ │ ├── N_.glif
│ │ │ │ │ ├── o.glif
│ │ │ │ │ ├── O_.glif
│ │ │ │ │ ├── p.glif
│ │ │ │ │ ├── P_.glif
│ │ │ │ │ ├── q.glif
│ │ │ │ │ ├── Q_.glif
│ │ │ │ │ ├── r.glif
│ │ │ │ │ ├── R_.glif
│ │ │ │ │ ├── s.glif
│ │ │ │ │ ├── S_.glif
│ │ │ │ │ ├── space.glif
│ │ │ │ │ ├── t.glif
│ │ │ │ │ ├── T_.glif
│ │ │ │ │ ├── u.glif
│ │ │ │ │ ├── U_.glif
│ │ │ │ │ ├── v.glif
│ │ │ │ │ ├── V_.glif
│ │ │ │ │ ├── w.glif
│ │ │ │ │ ├── W_.glif
│ │ │ │ │ ├── x.glif
│ │ │ │ │ ├── X_.glif
│ │ │ │ │ ├── y.glif
│ │ │ │ │ ├── Y_.glif
│ │ │ │ │ ├── z.glif
│ │ │ │ │ └── Z_.glif
│ │ │ │ ├── layercontents.plist
│ │ │ │ ├── lib.plist
│ │ │ │ └── metainfo.plist
│ │ │ └── RobotoSubset-Regular.ufo
│ │ │ ├── fontinfo.plist
│ │ │ ├── glyphs
│ │ │ │ ├── a.glif
│ │ │ │ ├── A_.glif
│ │ │ │ ├── b.glif
│ │ │ │ ├── B_.glif
│ │ │ │ ├── c.glif
│ │ │ │ ├── C_.glif
│ │ │ │ ├── contents.plist
│ │ │ │ ├── d.glif
│ │ │ │ ├── D_.glif
│ │ │ │ ├── e.glif
│ │ │ │ ├── E_.glif
│ │ │ │ ├── f.glif
│ │ │ │ ├── F_.glif
│ │ │ │ ├── g.glif
│ │ │ │ ├── G_.glif
│ │ │ │ ├── h.glif
│ │ │ │ ├── H_.glif
│ │ │ │ ├── i.glif
│ │ │ │ ├── I_.glif
│ │ │ │ ├── j.glif
│ │ │ │ ├── J_.glif
│ │ │ │ ├── k.glif
│ │ │ │ ├── K_.glif
│ │ │ │ ├── l.glif
│ │ │ │ ├── L_.glif
│ │ │ │ ├── m.glif
│ │ │ │ ├── M_.glif
│ │ │ │ ├── n.glif
│ │ │ │ ├── N_.glif
│ │ │ │ ├── o.glif
│ │ │ │ ├── O_.glif
│ │ │ │ ├── p.glif
│ │ │ │ ├── P_.glif
│ │ │ │ ├── q.glif
│ │ │ │ ├── Q_.glif
│ │ │ │ ├── r.glif
│ │ │ │ ├── R_.glif
│ │ │ │ ├── s.glif
│ │ │ │ ├── S_.glif
│ │ │ │ ├── space.glif
│ │ │ │ ├── t.glif
│ │ │ │ ├── T_.glif
│ │ │ │ ├── u.glif
│ │ │ │ ├── U_.glif
│ │ │ │ ├── v.glif
│ │ │ │ ├── V_.glif
│ │ │ │ ├── w.glif
│ │ │ │ ├── W_.glif
│ │ │ │ ├── x.glif
│ │ │ │ ├── X_.glif
│ │ │ │ ├── y.glif
│ │ │ │ ├── Y_.glif
│ │ │ │ ├── z.glif
│ │ │ │ └── Z_.glif
│ │ │ ├── layercontents.plist
│ │ │ ├── lib.plist
│ │ │ └── metainfo.plist
│ │ └── ufo_test.py
│ ├── designspaceLib
│ │ ├── data
│ │ │ ├── convert5to4_output
│ │ │ │ ├── AktivGroteskVF_Italics_Wght.designspace
│ │ │ │ ├── AktivGroteskVF_Italics_WghtWdth.designspace
│ │ │ │ ├── AktivGroteskVF_Wght.designspace
│ │ │ │ ├── AktivGroteskVF_WghtWdth.designspace
│ │ │ │ ├── AktivGroteskVF_WghtWdthItal.designspace
│ │ │ │ ├── SourceSerif4Variable-Italic.designspace
│ │ │ │ └── SourceSerif4Variable-Roman.designspace
│ │ │ ├── DS5BreakTest.designspace
│ │ │ ├── split_output
│ │ │ │ ├── AktivGroteskVF_Italics_Wght.designspace
│ │ │ │ ├── AktivGroteskVF_Italics_WghtWdth.designspace
│ │ │ │ ├── AktivGroteskVF_Wght.designspace
│ │ │ │ ├── AktivGroteskVF_WghtWdth.designspace
│ │ │ │ ├── AktivGroteskVF_WghtWdthItal.designspace
│ │ │ │ ├── MutatorSansVariable_Weight.designspace
│ │ │ │ ├── MutatorSansVariable_Weight_Width.designspace
│ │ │ │ ├── MutatorSansVariable_Width.designspace
│ │ │ │ ├── MutatorSerifVariable_Width.designspace
│ │ │ │ ├── SourceSerif4Variable-Italic.designspace
│ │ │ │ ├── SourceSerif4Variable-Roman.designspace
│ │ │ │ ├── test_v5_aktiv_.designspace
│ │ │ │ ├── test_v5_MutatorSans_and_Serif_serif_0.0.designspace
│ │ │ │ ├── test_v5_MutatorSans_and_Serif_serif_1.0.designspace
│ │ │ │ ├── test_v5_sourceserif_italic_0.0.designspace
│ │ │ │ └── test_v5_sourceserif_italic_1.0.designspace
│ │ │ ├── test_avar2.designspace
│ │ │ ├── test_v4_original.designspace
│ │ │ ├── test_v5_aktiv.designspace
│ │ │ ├── test_v5_decovar.designspace
│ │ │ ├── test_v5.designspace
│ │ │ ├── test_v5_discrete.designspace
│ │ │ ├── test_v5_MutatorSans_and_Serif.designspace
│ │ │ ├── test_v5_original.designspace
│ │ │ └── test_v5_sourceserif.designspace
│ │ ├── designspace_test.py
│ │ ├── designspace_v5_test.py
│ │ ├── fixtures.py
│ │ ├── __init__.py
│ │ ├── split_test.py
│ │ └── statNames_test.py
│ ├── encodings
│ │ └── codecs_test.py
│ ├── feaLib
│ │ ├── ast_test.py
│ │ ├── builder_test.py
│ │ ├── data
│ │ │ ├── aalt_chain_contextual_subst.fea
│ │ │ ├── aalt_chain_contextual_subst.ttx
│ │ │ ├── AlternateChained.fea
│ │ │ ├── AlternateChained.ttx
│ │ │ ├── AlternateSubtable.fea
│ │ │ ├── AlternateSubtable.ttx
│ │ │ ├── Attach.fea
│ │ │ ├── Attach.ttx
│ │ │ ├── baseClass.fea
│ │ │ ├── baseClass.feax
│ │ │ ├── bug1307.fea
│ │ │ ├── bug1307.ttx
│ │ │ ├── bug1459.fea
│ │ │ ├── bug1459.ttx
│ │ │ ├── bug2276.fea
│ │ │ ├── bug2276.ttx
│ │ │ ├── bug2949.fea
│ │ │ ├── bug2949.ttx
│ │ │ ├── bug453.fea
│ │ │ ├── bug453.ttx
│ │ │ ├── bug457.fea
│ │ │ ├── bug457.ttx
│ │ │ ├── bug463.fea
│ │ │ ├── bug463.ttx
│ │ │ ├── bug501.fea
│ │ │ ├── bug501.ttx
│ │ │ ├── bug502.fea
│ │ │ ├── bug502.ttx
│ │ │ ├── bug504.fea
│ │ │ ├── bug504.ttx
│ │ │ ├── bug505.fea
│ │ │ ├── bug505.ttx
│ │ │ ├── bug506.fea
│ │ │ ├── bug506.ttx
│ │ │ ├── bug509.fea
│ │ │ ├── bug509.ttx
│ │ │ ├── bug512.fea
│ │ │ ├── bug512.ttx
│ │ │ ├── bug514.fea
│ │ │ ├── bug514.ttx
│ │ │ ├── bug568.fea
│ │ │ ├── bug568.ttx
│ │ │ ├── bug633.fea
│ │ │ ├── bug633.ttx
│ │ │ ├── ChainPosSubtable.fea
│ │ │ ├── ChainPosSubtable.ttx
│ │ │ ├── ChainSubstSubtable.fea
│ │ │ ├── ChainSubstSubtable.ttx
│ │ │ ├── cid_range.fea
│ │ │ ├── cid_range.ttx
│ │ │ ├── delete_glyph.fea
│ │ │ ├── delete_glyph.ttx
│ │ │ ├── duplicate_lookup_reference.fea
│ │ │ ├── duplicate_lookup_reference.ttx
│ │ │ ├── enum.fea
│ │ │ ├── enum.ttx
│ │ │ ├── feature_aalt.fea
│ │ │ ├── feature_aalt.ttx
│ │ │ ├── GlyphClassDef.fea
│ │ │ ├── GlyphClassDef.ttx
│ │ │ ├── GPOS_1.fea
│ │ │ ├── GPOS_1.ttx
│ │ │ ├── GPOS_1_zero.fea
│ │ │ ├── GPOS_1_zero.ttx
│ │ │ ├── GPOS_2b.fea
│ │ │ ├── GPOS_2b.ttx
│ │ │ ├── GPOS_2.fea
│ │ │ ├── GPOS_2.ttx
│ │ │ ├── GPOS_3.fea
│ │ │ ├── GPOS_3.ttx
│ │ │ ├── GPOS_4.fea
│ │ │ ├── GPOS_4.ttx
│ │ │ ├── GPOS_5.fea
│ │ │ ├── GPOS_5.ttx
│ │ │ ├── GPOS_6.fea
│ │ │ ├── GPOS_6.ttx
│ │ │ ├── GPOS_8.fea
│ │ │ ├── GPOS_8.ttx
│ │ │ ├── GSUB_2.fea
│ │ │ ├── GSUB_2.ttx
│ │ │ ├── GSUB_3.fea
│ │ │ ├── GSUB_3.ttx
│ │ │ ├── GSUB_5_formats.fea
│ │ │ ├── GSUB_5_formats.ttx
│ │ │ ├── GSUB_6.fea
│ │ │ ├── GSUB_6_formats.fea
│ │ │ ├── GSUB_6_formats.ttx
│ │ │ ├── GSUB_6.ttx
│ │ │ ├── GSUB_8.fea
│ │ │ ├── GSUB_8.ttx
│ │ │ ├── GSUB_error.fea
│ │ │ ├── ignore_pos.fea
│ │ │ ├── ignore_pos.ttx
│ │ │ ├── include
│ │ │ │ ├── include1.fea
│ │ │ │ ├── include3.fea
│ │ │ │ ├── include4.fea
│ │ │ │ ├── include5.fea
│ │ │ │ ├── include6.fea
│ │ │ │ ├── includemissingfile.fea
│ │ │ │ ├── includeself.fea
│ │ │ │ ├── subdir
│ │ │ │ │ └── include2.fea
│ │ │ │ ├── test.fea
│ │ │ │ └── test.ufo
│ │ │ │ └── features.fea
│ │ │ ├── include0.fea
│ │ │ ├── language_required.fea
│ │ │ ├── language_required.ttx
│ │ │ ├── LigatureCaretByIndex.fea
│ │ │ ├── LigatureCaretByIndex.ttx
│ │ │ ├── LigatureCaretByPos.fea
│ │ │ ├── LigatureCaretByPos.ttx
│ │ │ ├── LigatureSubtable.fea
│ │ │ ├── LigatureSubtable.ttx
│ │ │ ├── lookup-debug.ttx
│ │ │ ├── lookup.fea
│ │ │ ├── lookupflag.fea
│ │ │ ├── lookupflag.ttx
│ │ │ ├── lookup.ttx
│ │ │ ├── markClass.fea
│ │ │ ├── markClass.ttx
│ │ │ ├── mini.fea
│ │ │ ├── multiple_feature_blocks.fea
│ │ │ ├── multiple_feature_blocks.ttx
│ │ │ ├── MultipleLookupsPerGlyph2.fea
│ │ │ ├── MultipleLookupsPerGlyph2.ttx
│ │ │ ├── MultipleLookupsPerGlyph.fea
│ │ │ ├── MultipleLookupsPerGlyph.ttx
│ │ │ ├── MultipleSubstSubtable.fea
│ │ │ ├── MultipleSubstSubtable.ttx
│ │ │ ├── name.fea
│ │ │ ├── name.ttx
│ │ │ ├── omitted_GlyphClassDef.fea
│ │ │ ├── omitted_GlyphClassDef.ttx
│ │ │ ├── PairPosSubtable.fea
│ │ │ ├── PairPosSubtable.ttx
│ │ │ ├── SingleSubstSubtable.fea
│ │ │ ├── SingleSubstSubtable.ttx
│ │ │ ├── size2.fea
│ │ │ ├── size2.ttx
│ │ │ ├── size.fea
│ │ │ ├── size.ttx
│ │ │ ├── spec10.fea
│ │ │ ├── spec10.ttx
│ │ │ ├── spec4h1.fea
│ │ │ ├── spec4h1.ttx
│ │ │ ├── spec4h2.fea
│ │ │ ├── spec4h2.ttx
│ │ │ ├── spec5d1.fea
│ │ │ ├── spec5d1.ttx
│ │ │ ├── spec5d2.fea
│ │ │ ├── spec5d2.ttx
│ │ │ ├── spec5fi1.fea
│ │ │ ├── spec5fi1.ttx
│ │ │ ├── spec5fi2.fea
│ │ │ ├── spec5fi2.ttx
│ │ │ ├── spec5fi3.fea
│ │ │ ├── spec5fi3.ttx
│ │ │ ├── spec5fi4.fea
│ │ │ ├── spec5fi4.ttx
│ │ │ ├── spec5f_ii_1.fea
│ │ │ ├── spec5f_ii_1.ttx
│ │ │ ├── spec5f_ii_2.fea
│ │ │ ├── spec5f_ii_2.ttx
│ │ │ ├── spec5f_ii_3.fea
│ │ │ ├── spec5f_ii_3.ttx
│ │ │ ├── spec5f_ii_4.fea
│ │ │ ├── spec5f_ii_4.ttx
│ │ │ ├── spec5h1.fea
│ │ │ ├── spec5h1.ttx
│ │ │ ├── spec6b_ii.fea
│ │ │ ├── spec6b_ii.ttx
│ │ │ ├── spec6d2.fea
│ │ │ ├── spec6d2.ttx
│ │ │ ├── spec6e.fea
│ │ │ ├── spec6e.ttx
│ │ │ ├── spec6f.fea
│ │ │ ├── spec6f.ttx
│ │ │ ├── spec6h_ii.fea
│ │ │ ├── spec6h_iii_1.fea
│ │ │ ├── spec6h_iii_1.ttx
│ │ │ ├── spec6h_iii_3d.fea
│ │ │ ├── spec6h_iii_3d.ttx
│ │ │ ├── spec6h_ii.ttx
│ │ │ ├── spec8a.fea
│ │ │ ├── spec8a.ttx
│ │ │ ├── spec8b.fea
│ │ │ ├── spec8b.ttx
│ │ │ ├── spec8c.fea
│ │ │ ├── spec8c.ttx
│ │ │ ├── spec8d.fea
│ │ │ ├── spec8d.ttx
│ │ │ ├── spec9a.fea
│ │ │ ├── spec9a.ttx
│ │ │ ├── spec9b.fea
│ │ │ ├── spec9b.ttx
│ │ │ ├── spec9c1.fea
│ │ │ ├── spec9c1.ttx
│ │ │ ├── spec9c2.fea
│ │ │ ├── spec9c2.ttx
│ │ │ ├── spec9c3.fea
│ │ │ ├── spec9c3.ttx
│ │ │ ├── spec9d.fea
│ │ │ ├── spec9d.ttx
│ │ │ ├── spec9e.fea
│ │ │ ├── spec9e.ttx
│ │ │ ├── spec9f.fea
│ │ │ ├── spec9f.ttx
│ │ │ ├── spec9g.fea
│ │ │ ├── spec9g.ttx
│ │ │ ├── STAT_bad.fea
│ │ │ ├── STAT_test_elidedFallbackNameID.fea
│ │ │ ├── STAT_test_elidedFallbackNameID.ttx
│ │ │ ├── STAT_test.fea
│ │ │ ├── STAT_test.ttx
│ │ │ ├── SubstSubtable.fea
│ │ │ ├── SubstSubtable.ttx
│ │ │ ├── test.fea
│ │ │ ├── variable_bug2772.fea
│ │ │ ├── variable_bug2772.ttx
│ │ │ ├── variable_conditionset.fea
│ │ │ ├── variable_conditionset.ttx
│ │ │ ├── variable_mark_anchor.fea
│ │ │ ├── variable_mark_anchor.ttx
│ │ │ ├── variable_scalar_anchor.fea
│ │ │ ├── variable_scalar_anchor.ttx
│ │ │ ├── variable_scalar_valuerecord.fea
│ │ │ ├── variable_scalar_valuerecord.ttx
│ │ │ ├── ZeroValue_ChainSinglePos_horizontal.fea
│ │ │ ├── ZeroValue_ChainSinglePos_horizontal.ttx
│ │ │ ├── ZeroValue_ChainSinglePos_vertical.fea
│ │ │ ├── ZeroValue_ChainSinglePos_vertical.ttx
│ │ │ ├── ZeroValue_PairPos_horizontal.fea
│ │ │ ├── ZeroValue_PairPos_horizontal.ttx
│ │ │ ├── ZeroValue_PairPos_vertical.fea
│ │ │ ├── ZeroValue_PairPos_vertical.ttx
│ │ │ ├── ZeroValue_SinglePos_horizontal.fea
│ │ │ ├── ZeroValue_SinglePos_horizontal.ttx
│ │ │ ├── ZeroValue_SinglePos_vertical.fea
│ │ │ └── ZeroValue_SinglePos_vertical.ttx
│ │ ├── error_test.py
│ │ ├── __init__.py
│ │ ├── lexer_test.py
│ │ ├── parser_test.py
│ │ └── STAT2.fea
│ ├── fontBuilder
│ │ ├── data
│ │ │ ├── test.otf.ttx
│ │ │ ├── test.ttf.ttx
│ │ │ ├── test_uvs.ttf.ttx
│ │ │ ├── test_var.otf.ttx
│ │ │ └── test_var.ttf.ttx
│ │ └── fontBuilder_test.py
│ ├── merge
│ │ ├── data
│ │ │ ├── CFFFont1.ttx
│ │ │ ├── CFFFont2.ttx
│ │ │ └── CFFFont_expected.ttx
│ │ └── merge_test.py
│ ├── misc
│ │ ├── arrayTools_test.py
│ │ ├── bezierTools_test.py
│ │ ├── classifyTools_test.py
│ │ ├── configTools_test.py
│ │ ├── eexec_test.py
│ │ ├── encodingTools_test.py
│ │ ├── etree_test.py
│ │ ├── filenames_test.py
│ │ ├── fixedTools_test.py
│ │ ├── loggingTools_test.py
│ │ ├── macRes_test.py
│ │ ├── plistlib_test.py
│ │ ├── psCharStrings_test.py
│ │ ├── py23_test.py
│ │ ├── symfont_test.py
│ │ ├── testdata
│ │ │ └── test.plist
│ │ ├── testTools_test.py
│ │ ├── textTools_test.py
│ │ ├── timeTools_test.py
│ │ ├── transform_test.py
│ │ ├── treeTools_test.py
│ │ ├── vector_test.py
│ │ ├── visitor_test.py
│ │ ├── xmlReader_test.py
│ │ └── xmlWriter_test.py
│ ├── mtiLib
│ │ ├── data
│ │ │ ├── featurename-backward.ttx.GSUB
│ │ │ ├── featurename-backward.txt
│ │ │ ├── featurename-forward.ttx.GSUB
│ │ │ ├── featurename-forward.txt
│ │ │ ├── lookupnames-backward.ttx.GSUB
│ │ │ ├── lookupnames-backward.txt
│ │ │ ├── lookupnames-forward.ttx.GSUB
│ │ │ ├── lookupnames-forward.txt
│ │ │ ├── mixed-toplevels.ttx.GSUB
│ │ │ ├── mixed-toplevels.txt
│ │ │ └── mti
│ │ │ ├── chainedclass.ttx.GSUB
│ │ │ ├── chainedclass.txt
│ │ │ ├── chainedcoverage.ttx.GSUB
│ │ │ ├── chainedcoverage.txt
│ │ │ ├── chained-glyph.ttx.GPOS
│ │ │ ├── chained-glyph.ttx.GSUB
│ │ │ ├── chained-glyph.txt
│ │ │ ├── cmap.ttx
│ │ │ ├── cmap.ttx.cmap
│ │ │ ├── cmap.txt
│ │ │ ├── contextclass.txt
│ │ │ ├── contextcoverage.txt
│ │ │ ├── context-glyph.txt
│ │ │ ├── featuretable.txt
│ │ │ ├── gdefattach.ttx.GDEF
│ │ │ ├── gdefattach.txt
│ │ │ ├── gdefclasses.ttx.GDEF
│ │ │ ├── gdefclasses.txt
│ │ │ ├── gdefligcaret.ttx.GDEF
│ │ │ ├── gdefligcaret.txt
│ │ │ ├── gdefmarkattach.ttx.GDEF
│ │ │ ├── gdefmarkattach.txt
│ │ │ ├── gdefmarkfilter.ttx.GDEF
│ │ │ ├── gdefmarkfilter.txt
│ │ │ ├── gposcursive.ttx.GPOS
│ │ │ ├── gposcursive.txt
│ │ │ ├── gposkernset.ttx.GPOS
│ │ │ ├── gposkernset.txt
│ │ │ ├── gposmarktobase.ttx.GPOS
│ │ │ ├── gposmarktobase.txt
│ │ │ ├── gpospairclass.ttx.GPOS
│ │ │ ├── gpospairclass.txt
│ │ │ ├── gpospairglyph.ttx.GPOS
│ │ │ ├── gpospairglyph.txt
│ │ │ ├── gpossingle.ttx.GPOS
│ │ │ ├── gpossingle.txt
│ │ │ ├── gsubalternate.ttx.GSUB
│ │ │ ├── gsubalternate.txt
│ │ │ ├── gsubligature.ttx.GSUB
│ │ │ ├── gsubligature.txt
│ │ │ ├── gsubmultiple.ttx.GSUB
│ │ │ ├── gsubmultiple.txt
│ │ │ ├── gsubreversechanined.ttx.GSUB
│ │ │ ├── gsubreversechanined.txt
│ │ │ ├── gsubsingle.ttx.GSUB
│ │ │ ├── gsubsingle.txt
│ │ │ ├── mark-to-ligature.ttx.GPOS
│ │ │ ├── mark-to-ligature.txt
│ │ │ ├── README
│ │ │ ├── scripttable.ttx.GPOS
│ │ │ ├── scripttable.ttx.GSUB
│ │ │ └── scripttable.txt
│ │ └── mti_test.py
│ ├── otlLib
│ │ ├── builder_test.py
│ │ ├── data
│ │ │ ├── gpos_91.ttx
│ │ │ ├── gsub_51.ttx
│ │ │ ├── gsub_52.ttx
│ │ │ └── gsub_71.ttx
│ │ ├── __init__.py
│ │ ├── maxContextCalc_test.py
│ │ ├── mock_builder_test.py
│ │ └── optimize_test.py
│ ├── pens
│ │ ├── areaPen_test.py
│ │ ├── basePen_test.py
│ │ ├── boundsPen_test.py
│ │ ├── cocoaPen_test.py
│ │ ├── cu2quPen_test.py
│ │ ├── data
│ │ │ ├── cubic
│ │ │ │ ├── A_acute.glif
│ │ │ │ ├── acute.glif
│ │ │ │ ├── a.glif
│ │ │ │ ├── A_.glif
│ │ │ │ ├── contents.plist
│ │ │ │ └── E_acute.glif
│ │ │ ├── quadratic
│ │ │ │ ├── acute.glif
│ │ │ │ ├── a.glif
│ │ │ │ ├── A_.glif
│ │ │ │ ├── contents.plist
│ │ │ │ └── E_acute.glif
│ │ │ ├── test_even_odd_fill.pgm
│ │ │ ├── test_non_zero_fill.pgm
│ │ │ ├── test_rotate.pgm
│ │ │ └── test_skew.pgm
│ │ ├── filterPen_test.py
│ │ ├── freetypePen_test.py
│ │ ├── hashPointPen_test.py
│ │ ├── __init__.py
│ │ ├── perimeterPen_test.py
│ │ ├── pointInsidePen_test.py
│ │ ├── pointPen_test.py
│ │ ├── qu2cuPen_test.py
│ │ ├── quartzPen_test.py
│ │ ├── recordingPen_test.py
│ │ ├── reverseContourPen_test.py
│ │ ├── roundingPen_test.py
│ │ ├── t2CharStringPen_test.py
│ │ ├── ttGlyphPen_test.py
│ │ └── utils.py
│ ├── qu2cu
│ │ ├── data
│ │ │ └── NotoSansArabic-Regular.quadratic.subset.ttf
│ │ ├── qu2cu_cli_test.py
│ │ └── qu2cu_test.py
│ ├── subset
│ │ ├── data
│ │ │ ├── BungeeColor-Regular.ttx
│ │ │ ├── CmapSubsetTest.subset.ttx
│ │ │ ├── CmapSubsetTest.ttx
│ │ │ ├── expect_ankr.ttx
│ │ │ ├── expect_bsln_0.ttx
│ │ │ ├── expect_bsln_1.ttx
│ │ │ ├── expect_bsln_2.ttx
│ │ │ ├── expect_bsln_3.ttx
│ │ │ ├── expect_desubroutinize_CFF.ttx
│ │ │ ├── expect_harfbuzz_repacker.ttx
│ │ │ ├── expect_HVVAR_retain_gids.ttx
│ │ │ ├── expect_HVVAR.ttx
│ │ │ ├── expect_keep_colr.ttx
│ │ │ ├── expect_keep_gvar_notdef_outline.ttx
│ │ │ ├── expect_keep_gvar.ttx
│ │ │ ├── expect_keep_math.ttx
│ │ │ ├── expect_layout_scripts.ttx
│ │ │ ├── expect_lcar_0.ttx
│ │ │ ├── expect_lcar_1.ttx
│ │ │ ├── expect_math_partial.ttx
│ │ │ ├── expect_no_hinting_CFF.ttx
│ │ │ ├── expect_no_hinting_desubroutinize_CFF.ttx
│ │ │ ├── expect_no_hinting_TTF.ttx
│ │ │ ├── expect_no_notdef_outline_cid.ttx
│ │ │ ├── expect_no_notdef_outline_otf.ttx
│ │ │ ├── expect_no_notdef_outline_ttf.ttx
│ │ │ ├── expect_notdef_width_cid.ttx
│ │ │ ├── expect_opbd_0.ttx
│ │ │ ├── expect_opbd_1.ttx
│ │ │ ├── expect_prop_0.ttx
│ │ │ ├── expect_prop_1.ttx
│ │ │ ├── expect_sbix.ttx
│ │ │ ├── google_color.ttx
│ │ │ ├── GPOS_PairPos_Format2_ClassDef1_useClass0.subset.ttx
│ │ │ ├── GPOS_PairPos_Format2_ClassDef2_useClass0.subset.ttx
│ │ │ ├── GPOS_PairPos_Format2_PR_2221.ttx
│ │ │ ├── GPOS_SinglePos_no_value_issue_2312.subset.ttx
│ │ │ ├── GPOS_SinglePos_no_value_issue_2312.ttx
│ │ │ ├── harfbuzz_repacker.ttx
│ │ │ ├── layout_scripts.ttx
│ │ │ ├── Lobster.subset.otf
│ │ │ ├── Lobster.subset.ttx
│ │ │ ├── NotdefWidthCID-Regular.ttx
│ │ │ ├── NotoSansCJKjp-Regular.subset.ttx
│ │ │ ├── sbix.ttx
│ │ │ ├── TestANKR.ttx
│ │ │ ├── TestBSLN-0.ttx
│ │ │ ├── TestBSLN-1.ttx
│ │ │ ├── TestBSLN-2.ttx
│ │ │ ├── TestBSLN-3.ttx
│ │ │ ├── TestCID-Regular.ttx
│ │ │ ├── TestCLR-Regular.ttx
│ │ │ ├── test_cntrmask_CFF.desub.ttx
│ │ │ ├── test_cntrmask_CFF.ttx
│ │ │ ├── TestContextSubstFormat3.ttx
│ │ │ ├── TestGVAR.ttx
│ │ │ ├── test_hinted_subrs_CFF.desub.ttx
│ │ │ ├── test_hinted_subrs_CFF.ttx
│ │ │ ├── TestHVVAR.ttx
│ │ │ ├── TestLCAR-0.ttx
│ │ │ ├── TestLCAR-1.ttx
│ │ │ ├── test_math_partial.ttx
│ │ │ ├── TestMATH-Regular.ttx
│ │ │ ├── TestOPBD-0.ttx
│ │ │ ├── TestOPBD-1.ttx
│ │ │ ├── TestOTF-Regular.ttx
│ │ │ ├── TestPROP.ttx
│ │ │ ├── TestTTF-Regular_non_BMP_char.ttx
│ │ │ └── TestTTF-Regular.ttx
│ │ ├── subset_test.py
│ │ └── svg_test.py
│ ├── svgLib
│ │ └── path
│ │ ├── __init__.py
│ │ ├── parser_test.py
│ │ ├── path_test.py
│ │ └── shapes_test.py
│ ├── t1Lib
│ │ ├── data
│ │ │ ├── TestT1-ellipsis-hinted.pfa
│ │ │ ├── TestT1-Regular.lwfn
│ │ │ ├── TestT1-Regular.pfa
│ │ │ ├── TestT1-Regular.pfb
│ │ │ └── TestT1-weird-zeros.pfa
│ │ └── t1Lib_test.py
│ ├── tfmLib
│ │ ├── data
│ │ │ ├── cmex10.tfm
│ │ │ ├── cmr10.tfm
│ │ │ ├── cmsy10.tfm
│ │ │ └── dummy-space.tfm
│ │ └── tfmLib_test.py
│ ├── ttLib
│ │ ├── data
│ │ │ ├── bogus_post_format_1.ttf
│ │ │ ├── dot-cubic.ttf
│ │ │ ├── I-512upem.ttx
│ │ │ ├── I.otf
│ │ │ ├── issue2824.ttf
│ │ │ ├── I.ttf
│ │ │ ├── TestOTF-Regular.otx
│ │ │ ├── Test-Regular.ttf
│ │ │ ├── TestTTFComplex-Regular.ttx
│ │ │ ├── TestTTF_normalizeLocation.ttx
│ │ │ ├── TestTTF-Regular.ttx
│ │ │ ├── TestVGID-Regular.otf
│ │ │ ├── TestVGID-Regular.ttx
│ │ │ ├── test_woff2_metadata.xml
│ │ │ ├── varc-6868.ttf
│ │ │ ├── varc-ac00-ac01-500upem.ttx
│ │ │ ├── varc-ac00-ac01.ttf
│ │ │ ├── varc-ac01-conditional.ttf
│ │ │ └── woff2_overlap_offcurve_in.ttx
│ │ ├── main_test.py
│ │ ├── removeOverlaps_test.py
│ │ ├── reorderGlyphs_test.py
│ │ ├── scaleUpem_test.py
│ │ ├── sfnt_test.py
│ │ ├── tables
│ │ │ ├── _a_n_k_r_test.py
│ │ │ ├── _a_v_a_r_test.py
│ │ │ ├── _b_s_l_n_test.py
│ │ │ ├── C_B_L_C_test.py
│ │ │ ├── C_F_F__2_test.py
│ │ │ ├── C_F_F_test.py
│ │ │ ├── _c_i_d_g_test.py
│ │ │ ├── _c_m_a_p_test.py
│ │ │ ├── C_O_L_R_test.py
│ │ │ ├── C_P_A_L_test.py
│ │ │ ├── _c_v_a_r_test.py
│ │ │ ├── data
│ │ │ │ ├── Amstelvar-avar2.subset.ttf
│ │ │ │ ├── aots
│ │ │ │ │ ├── base.otf
│ │ │ │ │ ├── base.ttx.CFF
│ │ │ │ │ ├── base.ttx.cmap
│ │ │ │ │ ├── base.ttx.head
│ │ │ │ │ ├── base.ttx.hhea
│ │ │ │ │ ├── base.ttx.hmtx
│ │ │ │ │ ├── base.ttx.maxp
│ │ │ │ │ ├── base.ttx.name
│ │ │ │ │ ├── base.ttx.OS_2
│ │ │ │ │ ├── base.ttx.post
│ │ │ │ │ ├── classdef1_font1.otf
│ │ │ │ │ ├── classdef1_font1.ttx.GSUB
│ │ │ │ │ ├── classdef1_font2.otf
│ │ │ │ │ ├── classdef1_font2.ttx.GSUB
│ │ │ │ │ ├── classdef1_font3.otf
│ │ │ │ │ ├── classdef1_font3.ttx.GSUB
│ │ │ │ │ ├── classdef1_font4.otf
│ │ │ │ │ ├── classdef1_font4.ttx.GSUB
│ │ │ │ │ ├── classdef2_font1.otf
│ │ │ │ │ ├── classdef2_font1.ttx.GSUB
│ │ │ │ │ ├── classdef2_font2.otf
│ │ │ │ │ ├── classdef2_font2.ttx.GSUB
│ │ │ │ │ ├── classdef2_font3.otf
│ │ │ │ │ ├── classdef2_font3.ttx.GSUB
│ │ │ │ │ ├── classdef2_font4.otf
│ │ │ │ │ ├── classdef2_font4.ttx.GSUB
│ │ │ │ │ ├── cmap0_font1.otf
│ │ │ │ │ ├── cmap0_font1.ttx.cmap
│ │ │ │ │ ├── cmap10_font1.otf
│ │ │ │ │ ├── cmap10_font1.ttx.cmap
│ │ │ │ │ ├── cmap10_font2.otf
│ │ │ │ │ ├── cmap10_font2.ttx.cmap
│ │ │ │ │ ├── cmap12_font1.otf
│ │ │ │ │ ├── cmap12_font1.ttx.cmap
│ │ │ │ │ ├── cmap14_font1.otf
│ │ │ │ │ ├── cmap14_font1.ttx.cmap
│ │ │ │ │ ├── cmap2_font1.otf
│ │ │ │ │ ├── cmap2_font1.ttx.cmap
│ │ │ │ │ ├── cmap4_font1.otf
│ │ │ │ │ ├── cmap4_font1.ttx.cmap
│ │ │ │ │ ├── cmap4_font2.otf
│ │ │ │ │ ├── cmap4_font2.ttx.cmap
│ │ │ │ │ ├── cmap4_font3.otf
│ │ │ │ │ ├── cmap4_font3.ttx.cmap
│ │ │ │ │ ├── cmap4_font4.otf
│ │ │ │ │ ├── cmap4_font4.ttx.cmap
│ │ │ │ │ ├── cmap6_font1.otf
│ │ │ │ │ ├── cmap6_font1.ttx.cmap
│ │ │ │ │ ├── cmap6_font2.otf
│ │ │ │ │ ├── cmap6_font2.ttx.cmap
│ │ │ │ │ ├── cmap8_font1.otf
│ │ │ │ │ ├── cmap8_font1.ttx.cmap
│ │ │ │ │ ├── cmap_composition_font1.otf
│ │ │ │ │ ├── cmap_composition_font1.ttx.cmap
│ │ │ │ │ ├── cmap_subtableselection_font1.otf
│ │ │ │ │ ├── cmap_subtableselection_font1.ttx.cmap
│ │ │ │ │ ├── cmap_subtableselection_font2.otf
│ │ │ │ │ ├── cmap_subtableselection_font2.ttx.cmap
│ │ │ │ │ ├── cmap_subtableselection_font3.otf
│ │ │ │ │ ├── cmap_subtableselection_font3.ttx.cmap
│ │ │ │ │ ├── cmap_subtableselection_font4.otf
│ │ │ │ │ ├── cmap_subtableselection_font4.ttx.cmap
│ │ │ │ │ ├── cmap_subtableselection_font5.otf
│ │ │ │ │ ├── cmap_subtableselection_font5.ttx.cmap
│ │ │ │ │ ├── gpos1_1_lookupflag_f1.otf
│ │ │ │ │ ├── gpos1_1_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gpos1_1_lookupflag_f1.ttx.GPOS
│ │ │ │ │ ├── gpos1_1_simple_f1.otf
│ │ │ │ │ ├── gpos1_1_simple_f1.ttx.GPOS
│ │ │ │ │ ├── gpos1_1_simple_f2.otf
│ │ │ │ │ ├── gpos1_1_simple_f2.ttx.GPOS
│ │ │ │ │ ├── gpos1_1_simple_f3.otf
│ │ │ │ │ ├── gpos1_1_simple_f3.ttx.GPOS
│ │ │ │ │ ├── gpos1_1_simple_f4.otf
│ │ │ │ │ ├── gpos1_1_simple_f4.ttx.GPOS
│ │ │ │ │ ├── gpos1_2_font1.otf
│ │ │ │ │ ├── gpos1_2_font1.ttx.GPOS
│ │ │ │ │ ├── gpos1_2_font2.otf
│ │ │ │ │ ├── gpos1_2_font2.ttx.GDEF
│ │ │ │ │ ├── gpos1_2_font2.ttx.GPOS
│ │ │ │ │ ├── gpos2_1_font6.otf
│ │ │ │ │ ├── gpos2_1_font6.ttx.GPOS
│ │ │ │ │ ├── gpos2_1_font7.otf
│ │ │ │ │ ├── gpos2_1_font7.ttx.GPOS
│ │ │ │ │ ├── gpos2_1_lookupflag_f1.otf
│ │ │ │ │ ├── gpos2_1_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gpos2_1_lookupflag_f1.ttx.GPOS
│ │ │ │ │ ├── gpos2_1_lookupflag_f2.otf
│ │ │ │ │ ├── gpos2_1_lookupflag_f2.ttx.GDEF
│ │ │ │ │ ├── gpos2_1_lookupflag_f2.ttx.GPOS
│ │ │ │ │ ├── gpos2_1_next_glyph_f1.otf
│ │ │ │ │ ├── gpos2_1_next_glyph_f1.ttx.GPOS
│ │ │ │ │ ├── gpos2_1_next_glyph_f2.otf
│ │ │ │ │ ├── gpos2_1_next_glyph_f2.ttx.GPOS
│ │ │ │ │ ├── gpos2_1_simple_f1.otf
│ │ │ │ │ ├── gpos2_1_simple_f1.ttx.GPOS
│ │ │ │ │ ├── gpos2_2_font1.otf
│ │ │ │ │ ├── gpos2_2_font1.ttx.GPOS
│ │ │ │ │ ├── gpos2_2_font2.otf
│ │ │ │ │ ├── gpos2_2_font2.ttx.GDEF
│ │ │ │ │ ├── gpos2_2_font2.ttx.GPOS
│ │ │ │ │ ├── gpos2_2_font3.otf
│ │ │ │ │ ├── gpos2_2_font3.ttx.GDEF
│ │ │ │ │ ├── gpos2_2_font3.ttx.GPOS
│ │ │ │ │ ├── gpos2_2_font4.otf
│ │ │ │ │ ├── gpos2_2_font4.ttx.GPOS
│ │ │ │ │ ├── gpos2_2_font5.otf
│ │ │ │ │ ├── gpos2_2_font5.ttx.GPOS
│ │ │ │ │ ├── gpos3_font1.otf
│ │ │ │ │ ├── gpos3_font1.ttx.GPOS
│ │ │ │ │ ├── gpos3_font2.otf
│ │ │ │ │ ├── gpos3_font2.ttx.GDEF
│ │ │ │ │ ├── gpos3_font2.ttx.GPOS
│ │ │ │ │ ├── gpos3_font3.otf
│ │ │ │ │ ├── gpos3_font3.ttx.GDEF
│ │ │ │ │ ├── gpos3_font3.ttx.GPOS
│ │ │ │ │ ├── gpos4_lookupflag_f1.otf
│ │ │ │ │ ├── gpos4_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gpos4_lookupflag_f1.ttx.GPOS
│ │ │ │ │ ├── gpos4_lookupflag_f2.otf
│ │ │ │ │ ├── gpos4_lookupflag_f2.ttx.GDEF
│ │ │ │ │ ├── gpos4_lookupflag_f2.ttx.GPOS
│ │ │ │ │ ├── gpos4_multiple_anchors_1.otf
│ │ │ │ │ ├── gpos4_multiple_anchors_1.ttx.GDEF
│ │ │ │ │ ├── gpos4_multiple_anchors_1.ttx.GPOS
│ │ │ │ │ ├── gpos4_simple_1.otf
│ │ │ │ │ ├── gpos4_simple_1.ttx.GDEF
│ │ │ │ │ ├── gpos4_simple_1.ttx.GPOS
│ │ │ │ │ ├── gpos5_font1.otf
│ │ │ │ │ ├── gpos5_font1.ttx.GDEF
│ │ │ │ │ ├── gpos5_font1.ttx.GPOS
│ │ │ │ │ ├── gpos5_font1.ttx.GSUB
│ │ │ │ │ ├── gpos6_font1.otf
│ │ │ │ │ ├── gpos6_font1.ttx.GDEF
│ │ │ │ │ ├── gpos6_font1.ttx.GPOS
│ │ │ │ │ ├── gpos7_1_font1.otf
│ │ │ │ │ ├── gpos7_1_font1.ttx.GPOS
│ │ │ │ │ ├── gpos9_font1.otf
│ │ │ │ │ ├── gpos9_font1.ttx.GPOS
│ │ │ │ │ ├── gpos9_font2.otf
│ │ │ │ │ ├── gpos9_font2.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining1_boundary_f1.otf
│ │ │ │ │ ├── gpos_chaining1_boundary_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining1_boundary_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining1_boundary_f2.otf
│ │ │ │ │ ├── gpos_chaining1_boundary_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining1_boundary_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining1_boundary_f3.otf
│ │ │ │ │ ├── gpos_chaining1_boundary_f3.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining1_boundary_f3.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining1_boundary_f4.otf
│ │ │ │ │ ├── gpos_chaining1_boundary_f4.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining1_boundary_f4.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining1_lookupflag_f1.otf
│ │ │ │ │ ├── gpos_chaining1_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining1_lookupflag_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining1_multiple_subrules_f1.otf
│ │ │ │ │ ├── gpos_chaining1_multiple_subrules_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining1_multiple_subrules_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining1_multiple_subrules_f2.otf
│ │ │ │ │ ├── gpos_chaining1_multiple_subrules_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining1_multiple_subrules_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining1_next_glyph_f1.otf
│ │ │ │ │ ├── gpos_chaining1_next_glyph_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining1_next_glyph_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining1_simple_f1.otf
│ │ │ │ │ ├── gpos_chaining1_simple_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining1_simple_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining1_simple_f2.otf
│ │ │ │ │ ├── gpos_chaining1_simple_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining1_simple_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining1_successive_f1.otf
│ │ │ │ │ ├── gpos_chaining1_successive_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining1_successive_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining2_boundary_f1.otf
│ │ │ │ │ ├── gpos_chaining2_boundary_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining2_boundary_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining2_boundary_f2.otf
│ │ │ │ │ ├── gpos_chaining2_boundary_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining2_boundary_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining2_boundary_f3.otf
│ │ │ │ │ ├── gpos_chaining2_boundary_f3.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining2_boundary_f3.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining2_boundary_f4.otf
│ │ │ │ │ ├── gpos_chaining2_boundary_f4.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining2_boundary_f4.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining2_lookupflag_f1.otf
│ │ │ │ │ ├── gpos_chaining2_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining2_lookupflag_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining2_multiple_subrules_f1.otf
│ │ │ │ │ ├── gpos_chaining2_multiple_subrules_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining2_multiple_subrules_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining2_multiple_subrules_f2.otf
│ │ │ │ │ ├── gpos_chaining2_multiple_subrules_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining2_multiple_subrules_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining2_next_glyph_f1.otf
│ │ │ │ │ ├── gpos_chaining2_next_glyph_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining2_next_glyph_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining2_simple_f1.otf
│ │ │ │ │ ├── gpos_chaining2_simple_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining2_simple_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining2_simple_f2.otf
│ │ │ │ │ ├── gpos_chaining2_simple_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining2_simple_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining2_successive_f1.otf
│ │ │ │ │ ├── gpos_chaining2_successive_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining2_successive_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining3_boundary_f1.otf
│ │ │ │ │ ├── gpos_chaining3_boundary_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining3_boundary_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining3_boundary_f2.otf
│ │ │ │ │ ├── gpos_chaining3_boundary_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining3_boundary_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining3_boundary_f3.otf
│ │ │ │ │ ├── gpos_chaining3_boundary_f3.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining3_boundary_f3.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining3_boundary_f4.otf
│ │ │ │ │ ├── gpos_chaining3_boundary_f4.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining3_boundary_f4.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining3_lookupflag_f1.otf
│ │ │ │ │ ├── gpos_chaining3_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining3_lookupflag_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining3_next_glyph_f1.otf
│ │ │ │ │ ├── gpos_chaining3_next_glyph_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining3_next_glyph_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining3_simple_f1.otf
│ │ │ │ │ ├── gpos_chaining3_simple_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining3_simple_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining3_simple_f2.otf
│ │ │ │ │ ├── gpos_chaining3_simple_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining3_simple_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_chaining3_successive_f1.otf
│ │ │ │ │ ├── gpos_chaining3_successive_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_chaining3_successive_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context1_boundary_f1.otf
│ │ │ │ │ ├── gpos_context1_boundary_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context1_boundary_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context1_boundary_f2.otf
│ │ │ │ │ ├── gpos_context1_boundary_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_context1_boundary_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_context1_expansion_f1.otf
│ │ │ │ │ ├── gpos_context1_expansion_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context1_expansion_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context1_lookupflag_f1.otf
│ │ │ │ │ ├── gpos_context1_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context1_lookupflag_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context1_lookupflag_f2.otf
│ │ │ │ │ ├── gpos_context1_lookupflag_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_context1_lookupflag_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_context1_multiple_subrules_f1.otf
│ │ │ │ │ ├── gpos_context1_multiple_subrules_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context1_multiple_subrules_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context1_multiple_subrules_f2.otf
│ │ │ │ │ ├── gpos_context1_multiple_subrules_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_context1_multiple_subrules_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_context1_next_glyph_f1.otf
│ │ │ │ │ ├── gpos_context1_next_glyph_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context1_next_glyph_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context1_simple_f1.otf
│ │ │ │ │ ├── gpos_context1_simple_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context1_simple_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context1_simple_f2.otf
│ │ │ │ │ ├── gpos_context1_simple_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_context1_simple_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_context1_successive_f1.otf
│ │ │ │ │ ├── gpos_context1_successive_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context1_successive_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context2_boundary_f1.otf
│ │ │ │ │ ├── gpos_context2_boundary_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context2_boundary_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context2_boundary_f2.otf
│ │ │ │ │ ├── gpos_context2_boundary_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_context2_boundary_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_context2_classes_f1.otf
│ │ │ │ │ ├── gpos_context2_classes_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context2_classes_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context2_classes_f2.otf
│ │ │ │ │ ├── gpos_context2_classes_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_context2_classes_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_context2_expansion_f1.otf
│ │ │ │ │ ├── gpos_context2_expansion_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context2_expansion_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context2_lookupflag_f1.otf
│ │ │ │ │ ├── gpos_context2_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context2_lookupflag_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context2_lookupflag_f2.otf
│ │ │ │ │ ├── gpos_context2_lookupflag_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_context2_lookupflag_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_context2_multiple_subrules_f1.otf
│ │ │ │ │ ├── gpos_context2_multiple_subrules_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context2_multiple_subrules_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context2_multiple_subrules_f2.otf
│ │ │ │ │ ├── gpos_context2_multiple_subrules_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_context2_multiple_subrules_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_context2_next_glyph_f1.otf
│ │ │ │ │ ├── gpos_context2_next_glyph_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context2_next_glyph_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context2_simple_f1.otf
│ │ │ │ │ ├── gpos_context2_simple_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context2_simple_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context2_simple_f2.otf
│ │ │ │ │ ├── gpos_context2_simple_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_context2_simple_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_context2_successive_f1.otf
│ │ │ │ │ ├── gpos_context2_successive_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context2_successive_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context3_boundary_f1.otf
│ │ │ │ │ ├── gpos_context3_boundary_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context3_boundary_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context3_boundary_f2.otf
│ │ │ │ │ ├── gpos_context3_boundary_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_context3_boundary_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_context3_lookupflag_f1.otf
│ │ │ │ │ ├── gpos_context3_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context3_lookupflag_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context3_lookupflag_f2.otf
│ │ │ │ │ ├── gpos_context3_lookupflag_f2.ttx.GDEF
│ │ │ │ │ ├── gpos_context3_lookupflag_f2.ttx.GPOS
│ │ │ │ │ ├── gpos_context3_next_glyph_f1.otf
│ │ │ │ │ ├── gpos_context3_next_glyph_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context3_next_glyph_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context3_simple_f1.otf
│ │ │ │ │ ├── gpos_context3_simple_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context3_simple_f1.ttx.GPOS
│ │ │ │ │ ├── gpos_context3_successive_f1.otf
│ │ │ │ │ ├── gpos_context3_successive_f1.ttx.GDEF
│ │ │ │ │ ├── gpos_context3_successive_f1.ttx.GPOS
│ │ │ │ │ ├── gsub1_1_lookupflag_f1.otf
│ │ │ │ │ ├── gsub1_1_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gsub1_1_lookupflag_f1.ttx.GSUB
│ │ │ │ │ ├── gsub1_1_modulo_f1.otf
│ │ │ │ │ ├── gsub1_1_modulo_f1.ttx.GSUB
│ │ │ │ │ ├── gsub1_1_simple_f1.otf
│ │ │ │ │ ├── gsub1_1_simple_f1.ttx.GSUB
│ │ │ │ │ ├── gsub1_2_lookupflag_f1.otf
│ │ │ │ │ ├── gsub1_2_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gsub1_2_lookupflag_f1.ttx.GSUB
│ │ │ │ │ ├── gsub1_2_simple_f1.otf
│ │ │ │ │ ├── gsub1_2_simple_f1.ttx.GSUB
│ │ │ │ │ ├── gsub2_1_lookupflag_f1.otf
│ │ │ │ │ ├── gsub2_1_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gsub2_1_lookupflag_f1.ttx.GSUB
│ │ │ │ │ ├── gsub2_1_multiple_sequences_f1.otf
│ │ │ │ │ ├── gsub2_1_multiple_sequences_f1.ttx.GSUB
│ │ │ │ │ ├── gsub2_1_simple_f1.otf
│ │ │ │ │ ├── gsub2_1_simple_f1.ttx.GSUB
│ │ │ │ │ ├── gsub3_1_lookupflag_f1.otf
│ │ │ │ │ ├── gsub3_1_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gsub3_1_lookupflag_f1.ttx.GSUB
│ │ │ │ │ ├── gsub3_1_multiple_f1.otf
│ │ │ │ │ ├── gsub3_1_multiple_f1.ttx.GSUB
│ │ │ │ │ ├── gsub3_1_simple_f1.otf
│ │ │ │ │ ├── gsub3_1_simple_f1.ttx.GSUB
│ │ │ │ │ ├── gsub4_1_lookupflag_f1.otf
│ │ │ │ │ ├── gsub4_1_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gsub4_1_lookupflag_f1.ttx.GSUB
│ │ │ │ │ ├── gsub4_1_multiple_ligatures_f1.otf
│ │ │ │ │ ├── gsub4_1_multiple_ligatures_f1.ttx.GSUB
│ │ │ │ │ ├── gsub4_1_multiple_ligatures_f2.otf
│ │ │ │ │ ├── gsub4_1_multiple_ligatures_f2.ttx.GSUB
│ │ │ │ │ ├── gsub4_1_multiple_ligsets_f1.otf
│ │ │ │ │ ├── gsub4_1_multiple_ligsets_f1.ttx.GSUB
│ │ │ │ │ ├── gsub4_1_simple_f1.otf
│ │ │ │ │ ├── gsub4_1_simple_f1.ttx.GSUB
│ │ │ │ │ ├── gsub7_font1.otf
│ │ │ │ │ ├── gsub7_font1.ttx.GSUB
│ │ │ │ │ ├── gsub7_font2.otf
│ │ │ │ │ ├── gsub7_font2.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining1_boundary_f1.otf
│ │ │ │ │ ├── gsub_chaining1_boundary_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining1_boundary_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining1_boundary_f2.otf
│ │ │ │ │ ├── gsub_chaining1_boundary_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining1_boundary_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining1_boundary_f3.otf
│ │ │ │ │ ├── gsub_chaining1_boundary_f3.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining1_boundary_f3.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining1_boundary_f4.otf
│ │ │ │ │ ├── gsub_chaining1_boundary_f4.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining1_boundary_f4.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining1_lookupflag_f1.otf
│ │ │ │ │ ├── gsub_chaining1_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining1_lookupflag_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining1_multiple_subrules_f1.otf
│ │ │ │ │ ├── gsub_chaining1_multiple_subrules_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining1_multiple_subrules_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining1_multiple_subrules_f2.otf
│ │ │ │ │ ├── gsub_chaining1_multiple_subrules_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining1_multiple_subrules_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining1_next_glyph_f1.otf
│ │ │ │ │ ├── gsub_chaining1_next_glyph_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining1_next_glyph_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining1_simple_f1.otf
│ │ │ │ │ ├── gsub_chaining1_simple_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining1_simple_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining1_simple_f2.otf
│ │ │ │ │ ├── gsub_chaining1_simple_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining1_simple_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining1_successive_f1.otf
│ │ │ │ │ ├── gsub_chaining1_successive_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining1_successive_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining2_boundary_f1.otf
│ │ │ │ │ ├── gsub_chaining2_boundary_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining2_boundary_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining2_boundary_f2.otf
│ │ │ │ │ ├── gsub_chaining2_boundary_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining2_boundary_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining2_boundary_f3.otf
│ │ │ │ │ ├── gsub_chaining2_boundary_f3.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining2_boundary_f3.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining2_boundary_f4.otf
│ │ │ │ │ ├── gsub_chaining2_boundary_f4.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining2_boundary_f4.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining2_lookupflag_f1.otf
│ │ │ │ │ ├── gsub_chaining2_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining2_lookupflag_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining2_multiple_subrules_f1.otf
│ │ │ │ │ ├── gsub_chaining2_multiple_subrules_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining2_multiple_subrules_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining2_multiple_subrules_f2.otf
│ │ │ │ │ ├── gsub_chaining2_multiple_subrules_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining2_multiple_subrules_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining2_next_glyph_f1.otf
│ │ │ │ │ ├── gsub_chaining2_next_glyph_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining2_next_glyph_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining2_simple_f1.otf
│ │ │ │ │ ├── gsub_chaining2_simple_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining2_simple_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining2_simple_f2.otf
│ │ │ │ │ ├── gsub_chaining2_simple_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining2_simple_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining2_successive_f1.otf
│ │ │ │ │ ├── gsub_chaining2_successive_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining2_successive_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining3_boundary_f1.otf
│ │ │ │ │ ├── gsub_chaining3_boundary_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining3_boundary_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining3_boundary_f2.otf
│ │ │ │ │ ├── gsub_chaining3_boundary_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining3_boundary_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining3_boundary_f3.otf
│ │ │ │ │ ├── gsub_chaining3_boundary_f3.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining3_boundary_f3.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining3_boundary_f4.otf
│ │ │ │ │ ├── gsub_chaining3_boundary_f4.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining3_boundary_f4.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining3_lookupflag_f1.otf
│ │ │ │ │ ├── gsub_chaining3_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining3_lookupflag_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining3_next_glyph_f1.otf
│ │ │ │ │ ├── gsub_chaining3_next_glyph_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining3_next_glyph_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining3_simple_f1.otf
│ │ │ │ │ ├── gsub_chaining3_simple_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining3_simple_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining3_simple_f2.otf
│ │ │ │ │ ├── gsub_chaining3_simple_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining3_simple_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_chaining3_successive_f1.otf
│ │ │ │ │ ├── gsub_chaining3_successive_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_chaining3_successive_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context1_boundary_f1.otf
│ │ │ │ │ ├── gsub_context1_boundary_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context1_boundary_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context1_boundary_f2.otf
│ │ │ │ │ ├── gsub_context1_boundary_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_context1_boundary_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_context1_expansion_f1.otf
│ │ │ │ │ ├── gsub_context1_expansion_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context1_expansion_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context1_lookupflag_f1.otf
│ │ │ │ │ ├── gsub_context1_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context1_lookupflag_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context1_lookupflag_f2.otf
│ │ │ │ │ ├── gsub_context1_lookupflag_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_context1_lookupflag_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_context1_multiple_subrules_f1.otf
│ │ │ │ │ ├── gsub_context1_multiple_subrules_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context1_multiple_subrules_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context1_multiple_subrules_f2.otf
│ │ │ │ │ ├── gsub_context1_multiple_subrules_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_context1_multiple_subrules_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_context1_next_glyph_f1.otf
│ │ │ │ │ ├── gsub_context1_next_glyph_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context1_next_glyph_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context1_simple_f1.otf
│ │ │ │ │ ├── gsub_context1_simple_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context1_simple_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context1_simple_f2.otf
│ │ │ │ │ ├── gsub_context1_simple_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_context1_simple_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_context1_successive_f1.otf
│ │ │ │ │ ├── gsub_context1_successive_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context1_successive_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context2_boundary_f1.otf
│ │ │ │ │ ├── gsub_context2_boundary_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context2_boundary_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context2_boundary_f2.otf
│ │ │ │ │ ├── gsub_context2_boundary_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_context2_boundary_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_context2_classes_f1.otf
│ │ │ │ │ ├── gsub_context2_classes_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context2_classes_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context2_classes_f2.otf
│ │ │ │ │ ├── gsub_context2_classes_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_context2_classes_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_context2_expansion_f1.otf
│ │ │ │ │ ├── gsub_context2_expansion_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context2_expansion_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context2_lookupflag_f1.otf
│ │ │ │ │ ├── gsub_context2_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context2_lookupflag_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context2_lookupflag_f2.otf
│ │ │ │ │ ├── gsub_context2_lookupflag_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_context2_lookupflag_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_context2_multiple_subrules_f1.otf
│ │ │ │ │ ├── gsub_context2_multiple_subrules_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context2_multiple_subrules_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context2_multiple_subrules_f2.otf
│ │ │ │ │ ├── gsub_context2_multiple_subrules_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_context2_multiple_subrules_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_context2_next_glyph_f1.otf
│ │ │ │ │ ├── gsub_context2_next_glyph_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context2_next_glyph_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context2_simple_f1.otf
│ │ │ │ │ ├── gsub_context2_simple_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context2_simple_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context2_simple_f2.otf
│ │ │ │ │ ├── gsub_context2_simple_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_context2_simple_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_context2_successive_f1.otf
│ │ │ │ │ ├── gsub_context2_successive_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context2_successive_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context3_boundary_f1.otf
│ │ │ │ │ ├── gsub_context3_boundary_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context3_boundary_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context3_boundary_f2.otf
│ │ │ │ │ ├── gsub_context3_boundary_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_context3_boundary_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_context3_lookupflag_f1.otf
│ │ │ │ │ ├── gsub_context3_lookupflag_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context3_lookupflag_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context3_lookupflag_f2.otf
│ │ │ │ │ ├── gsub_context3_lookupflag_f2.ttx.GDEF
│ │ │ │ │ ├── gsub_context3_lookupflag_f2.ttx.GSUB
│ │ │ │ │ ├── gsub_context3_next_glyph_f1.otf
│ │ │ │ │ ├── gsub_context3_next_glyph_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context3_next_glyph_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context3_simple_f1.otf
│ │ │ │ │ ├── gsub_context3_simple_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context3_simple_f1.ttx.GSUB
│ │ │ │ │ ├── gsub_context3_successive_f1.otf
│ │ │ │ │ ├── gsub_context3_successive_f1.ttx.GDEF
│ │ │ │ │ ├── gsub_context3_successive_f1.ttx.GSUB
│ │ │ │ │ ├── lookupflag_ignore_attach_f1.otf
│ │ │ │ │ ├── lookupflag_ignore_attach_f1.ttx.GDEF
│ │ │ │ │ ├── lookupflag_ignore_attach_f1.ttx.GSUB
│ │ │ │ │ ├── lookupflag_ignore_base_f1.otf
│ │ │ │ │ ├── lookupflag_ignore_base_f1.ttx.GDEF
│ │ │ │ │ ├── lookupflag_ignore_base_f1.ttx.GSUB
│ │ │ │ │ ├── lookupflag_ignore_combination_f1.otf
│ │ │ │ │ ├── lookupflag_ignore_combination_f1.ttx.GDEF
│ │ │ │ │ ├── lookupflag_ignore_combination_f1.ttx.GSUB
│ │ │ │ │ ├── lookupflag_ignore_ligatures_f1.otf
│ │ │ │ │ ├── lookupflag_ignore_ligatures_f1.ttx.GDEF
│ │ │ │ │ ├── lookupflag_ignore_ligatures_f1.ttx.GSUB
│ │ │ │ │ ├── lookupflag_ignore_marks_f1.otf
│ │ │ │ │ ├── lookupflag_ignore_marks_f1.ttx.GDEF
│ │ │ │ │ ├── lookupflag_ignore_marks_f1.ttx.GSUB
│ │ │ │ │ └── README
│ │ │ │ ├── C_F_F__2.bin
│ │ │ │ ├── C_F_F__2.ttx
│ │ │ │ ├── C_F_F_.bin
│ │ │ │ ├── C_F_F_.ttx
│ │ │ │ ├── _c_m_a_p_format_14_bw_compat.ttx
│ │ │ │ ├── _c_m_a_p_format_14.ttx
│ │ │ │ ├── COLRv1-clip-boxes-cff.ttx
│ │ │ │ ├── COLRv1-clip-boxes-glyf.ttx
│ │ │ │ ├── COLRv1-clip-boxes-q100-expected.ttx
│ │ │ │ ├── COLRv1-clip-boxes-q10-expected.ttx
│ │ │ │ ├── COLRv1-clip-boxes-q1-expected.ttx
│ │ │ │ ├── _g_l_y_f_instructions.ttx
│ │ │ │ ├── _g_l_y_f_outline_flag_bit6.glyf.bin
│ │ │ │ ├── _g_l_y_f_outline_flag_bit6.head.bin
│ │ │ │ ├── _g_l_y_f_outline_flag_bit6.loca.bin
│ │ │ │ ├── _g_l_y_f_outline_flag_bit6.maxp.bin
│ │ │ │ ├── _g_l_y_f_outline_flag_bit6.ttx
│ │ │ │ ├── graphite
│ │ │ │ │ ├── graphite_tests.ttf
│ │ │ │ │ ├── graphite_tests.ttx.Feat
│ │ │ │ │ ├── graphite_tests.ttx.Glat
│ │ │ │ │ ├── graphite_tests.ttx.Glat.setup
│ │ │ │ │ ├── graphite_tests.ttx.Silf
│ │ │ │ │ ├── graphite_tests.ttx.Silf.setup
│ │ │ │ │ └── graphite_tests.ttx.Sill
│ │ │ │ ├── _h_h_e_a_recalc_empty.ttx
│ │ │ │ ├── _h_h_e_a_recalc_OTF.ttx
│ │ │ │ ├── _h_h_e_a_recalc_TTF.ttx
│ │ │ │ ├── NotoColorEmoji.subset.index_format_3.ttx
│ │ │ │ ├── NotoSans-VF-cubic.subset.ttf
│ │ │ │ ├── ttProgram.ttx
│ │ │ │ ├── _v_h_e_a_recalc_empty.ttx
│ │ │ │ ├── _v_h_e_a_recalc_OTF.ttx
│ │ │ │ └── _v_h_e_a_recalc_TTF.ttx
│ │ │ ├── _f_p_g_m_test.py
│ │ │ ├── _f_v_a_r_test.py
│ │ │ ├── _g_c_i_d_test.py
│ │ │ ├── _g_l_y_f_test.py
│ │ │ ├── _g_v_a_r_test.py
│ │ │ ├── _h_h_e_a_test.py
│ │ │ ├── _h_m_t_x_test.py
│ │ │ ├── _k_e_r_n_test.py
│ │ │ ├── _l_c_a_r_test.py
│ │ │ ├── _l_t_a_g_test.py
│ │ │ ├── _m_e_t_a_test.py
│ │ │ ├── _m_o_r_t_test.py
│ │ │ ├── _m_o_r_x_test.py
│ │ │ ├── M_V_A_R_test.py
│ │ │ ├── _n_a_m_e_test.py
│ │ │ ├── _o_p_b_d_test.py
│ │ │ ├── O_S_2f_2_test.py
│ │ │ ├── otBase_test.py
│ │ │ ├── otConverters_test.py
│ │ │ ├── otTables_test.py
│ │ │ ├── _p_r_o_p_test.py
│ │ │ ├── S_T_A_T_test.py
│ │ │ ├── S_V_G__test.py
│ │ │ ├── tables_test.py
│ │ │ ├── _t_r_a_k_test.py
│ │ │ ├── T_S_I__0_test.py
│ │ │ ├── T_S_I__1_test.py
│ │ │ ├── ttProgram_test.py
│ │ │ ├── TupleVariation_test.py
│ │ │ ├── V_A_R_C_test.py
│ │ │ ├── _v_h_e_a_test.py
│ │ │ └── _v_m_t_x_test.py
│ │ ├── ttCollection_test.py
│ │ ├── ttFont_test.py
│ │ ├── ttGlyphSet_test.py
│ │ ├── ttVisitor_test.py
│ │ └── woff2_test.py
│ ├── ttx
│ │ ├── data
│ │ │ ├── roundtrip_DSIG_split_at_XML_parse_buffer_size.ttx
│ │ │ ├── TestBOM.ttx
│ │ │ ├── TestDFONT.dfont
│ │ │ ├── TestNoSFNT.ttx
│ │ │ ├── TestNoXML.ttx
│ │ │ ├── TestOTF.otf
│ │ │ ├── TestOTF.ttx
│ │ │ ├── TestTTC.ttc
│ │ │ ├── TestTTF.ttf
│ │ │ ├── TestTTF.ttx
│ │ │ ├── TestWOFF2.woff2
│ │ │ └── TestWOFF.woff
│ │ └── ttx_test.py
│ ├── ufoLib
│ │ ├── filenames_test.py
│ │ ├── GLIF1_test.py
│ │ ├── GLIF2_test.py
│ │ ├── glifLib_test.py
│ │ ├── __init__.py
│ │ ├── testdata
│ │ │ ├── DemoFont.ufo
│ │ │ │ ├── fontinfo.plist
│ │ │ │ ├── glyphs
│ │ │ │ │ ├── a.glif
│ │ │ │ │ ├── A_.glif
│ │ │ │ │ ├── B_.glif
│ │ │ │ │ ├── contents.plist
│ │ │ │ │ ├── F__A__B_.glif
│ │ │ │ │ ├── F_.glif
│ │ │ │ │ ├── G_.glif
│ │ │ │ │ ├── O_.glif
│ │ │ │ │ ├── R_.glif
│ │ │ │ │ ├── testglyph1.glif
│ │ │ │ │ └── testglyph1.reversed.glif
│ │ │ │ ├── lib.plist
│ │ │ │ └── metainfo.plist
│ │ │ ├── TestFont1 (UFO1).ufo
│ │ │ │ ├── fontinfo.plist
│ │ │ │ ├── glyphs
│ │ │ │ │ ├── A_.glif
│ │ │ │ │ ├── B_.glif
│ │ │ │ │ └── contents.plist
│ │ │ │ ├── groups.plist
│ │ │ │ ├── kerning.plist
│ │ │ │ ├── lib.plist
│ │ │ │ └── metainfo.plist
│ │ │ ├── TestFont1 (UFO2).ufo
│ │ │ │ ├── features.fea
│ │ │ │ ├── fontinfo.plist
│ │ │ │ ├── glyphs
│ │ │ │ │ ├── A_.glif
│ │ │ │ │ ├── B_.glif
│ │ │ │ │ └── contents.plist
│ │ │ │ ├── groups.plist
│ │ │ │ ├── kerning.plist
│ │ │ │ ├── lib.plist
│ │ │ │ └── metainfo.plist
│ │ │ ├── TestFont1 (UFO3).ufo
│ │ │ │ ├── data
│ │ │ │ │ └── com.github.fonttools.ttx
│ │ │ │ │ └── CUST.ttx
│ │ │ │ ├── fontinfo.plist
│ │ │ │ ├── glyphs
│ │ │ │ │ ├── a.glif
│ │ │ │ │ ├── b.glif
│ │ │ │ │ ├── c.glif
│ │ │ │ │ ├── contents.plist
│ │ │ │ │ ├── d.glif
│ │ │ │ │ ├── e.glif
│ │ │ │ │ ├── f.glif
│ │ │ │ │ ├── g.glif
│ │ │ │ │ ├── h.glif
│ │ │ │ │ ├── i.glif
│ │ │ │ │ ├── j.glif
│ │ │ │ │ ├── k.glif
│ │ │ │ │ ├── l.glif
│ │ │ │ │ ├── _notdef.glif
│ │ │ │ │ └── space.glif
│ │ │ │ ├── kerning.plist
│ │ │ │ ├── layercontents.plist
│ │ │ │ ├── lib.plist
│ │ │ │ └── metainfo.plist
│ │ │ ├── TestFont1 (UFO3).ufoz
│ │ │ └── UFO3-Read Data.ufo
│ │ │ ├── data
│ │ │ │ ├── org.unifiedfontobject.directory
│ │ │ │ │ ├── bar
│ │ │ │ │ │ └── lol.txt
│ │ │ │ │ └── foo.txt
│ │ │ │ └── org.unifiedfontobject.file.txt
│ │ │ ├── groups.plist
│ │ │ └── metainfo.plist
│ │ ├── testSupport.py
│ │ ├── UFO1_test.py
│ │ ├── UFO2_test.py
│ │ ├── UFO3_test.py
│ │ ├── UFOConversion_test.py
│ │ ├── ufoLib_test.py
│ │ └── UFOZ_test.py
│ ├── unicodedata_test.py
│ ├── varLib
│ │ ├── builder_test.py
│ │ ├── data
│ │ │ ├── BuildAvar2.designspace
│ │ │ ├── BuildAvarEmptyAxis.designspace
│ │ │ ├── BuildAvarIdentityMaps.designspace
│ │ │ ├── BuildAvarSingleAxis.designspace
│ │ │ ├── Build.designspace
│ │ │ ├── BuildGvarCompositeExplicitDelta.designspace
│ │ │ ├── DropOnCurves.designspace
│ │ │ ├── FeatureVarsCustomTag.designspace
│ │ │ ├── FeatureVars.designspace
│ │ │ ├── FeatureVarsWholeRange.designspace
│ │ │ ├── FeatureVarsWholeRangeEmpty.designspace
│ │ │ ├── IncompatibleArrays.designspace
│ │ │ ├── IncompatibleFeatures.designspace
│ │ │ ├── IncompatibleLookupTypes.designspace
│ │ │ ├── InterpolateLayout2.designspace
│ │ │ ├── InterpolateLayout3.designspace
│ │ │ ├── InterpolateLayout.designspace
│ │ │ ├── InterpolateLayout.glyphs
│ │ │ ├── KerningMerging.designspace
│ │ │ ├── master_base_test
│ │ │ │ ├── TestBASE.0.ttx
│ │ │ │ └── TestBASE.900.ttx
│ │ │ ├── master_cff2
│ │ │ │ ├── TestCFF2_Black.ttx
│ │ │ │ ├── TestCFF2_ExtraLight.ttx
│ │ │ │ └── TestCFF2_Regular.ttx
│ │ │ ├── master_cff2_input
│ │ │ │ ├── TestCFF2_Black.ttx
│ │ │ │ ├── TestCFF2_ExtraLight.ttx
│ │ │ │ └── TestCFF2_Regular.ttx
│ │ │ ├── master_incompatible_arrays
│ │ │ │ ├── IncompatibleArrays-Bold.ttx
│ │ │ │ └── IncompatibleArrays-Regular.ttx
│ │ │ ├── master_incompatible_features
│ │ │ │ ├── IncompatibleFeatures-Bold.ttx
│ │ │ │ └── IncompatibleFeatures-Regular.ttx
│ │ │ ├── master_incompatible_lookup_types
│ │ │ │ ├── IncompatibleLookupTypes-Bold.ttx
│ │ │ │ └── IncompatibleLookupTypes-Regular.ttx
│ │ │ ├── master_kerning_merging
│ │ │ │ ├── 0.ttx
│ │ │ │ ├── 1.ttx
│ │ │ │ └── 2.ttx
│ │ │ ├── master_non_marking_cff2
│ │ │ │ ├── TestNonMarkingCFF2_ExtraLight.ttx
│ │ │ │ └── TestNonMarkingCFF2_Regular.ttx
│ │ │ ├── master_no_overwrite_stat
│ │ │ │ ├── Test-CondensedBlack.ttx
│ │ │ │ ├── Test-CondensedThin.ttx
│ │ │ │ ├── Test-ExtendedBlack.ttx
│ │ │ │ └── Test-ExtendedThin.ttx
│ │ │ ├── master_sparse_cff2
│ │ │ │ ├── MasterSet_Kanji-w0.00.ttx
│ │ │ │ ├── MasterSet_Kanji-w1000.00.ttx
│ │ │ │ ├── MasterSet_Kanji-w439.00.ttx
│ │ │ │ ├── MasterSet_Kanji-w440.00.ttx
│ │ │ │ ├── MasterSet_Kanji-w599.00.ttx
│ │ │ │ ├── MasterSet_Kanji-w600.00.ttx
│ │ │ │ ├── MasterSet_Kanji-w669.00.ttx
│ │ │ │ ├── MasterSet_Kanji-w670.00.ttx
│ │ │ │ ├── MasterSet_Kanji-w799.00.ttx
│ │ │ │ ├── MasterSet_Kanji-w800.00.ttx
│ │ │ │ ├── MasterSet_Kanji-w889.00.ttx
│ │ │ │ └── MasterSet_Kanji-w890.00.ttx
│ │ │ ├── master_sparse_cff2_empty
│ │ │ │ ├── SparseCFF-Bold.ttx
│ │ │ │ ├── SparseCFF-Medium.ttx
│ │ │ │ └── SparseCFF-Regular.ttx
│ │ │ ├── master_ttx_drop_oncurves
│ │ │ │ ├── TestFamily-Master1.ttx
│ │ │ │ └── TestFamily-Master2.ttx
│ │ │ ├── master_ttx_getvar_ttf
│ │ │ │ └── Mutator_Getvar.ttx
│ │ │ ├── master_ttx_interpolatable_otf
│ │ │ │ ├── TestFamily2-Master0.ttx
│ │ │ │ └── TestFamily2-Master1.ttx
│ │ │ ├── master_ttx_interpolatable_ttf
│ │ │ │ ├── SparseMasters-Bold.ttx
│ │ │ │ ├── SparseMasters-Medium.ttx
│ │ │ │ ├── SparseMasters-Regular.ttx
│ │ │ │ ├── TestFamily2-Master0.ttx
│ │ │ │ ├── TestFamily2-Master1.ttx
│ │ │ │ ├── TestFamily3-Bold.ttx
│ │ │ │ ├── TestFamily3-CondensedBold.ttx
│ │ │ │ ├── TestFamily3-CondensedLight.ttx
│ │ │ │ ├── TestFamily3-CondensedSemiBold.ttx
│ │ │ │ ├── TestFamily3-Condensed.ttx
│ │ │ │ ├── TestFamily3-Light.ttx
│ │ │ │ ├── TestFamily3-Regular.ttx
│ │ │ │ ├── TestFamily3-SemiBold.ttx
│ │ │ │ ├── TestFamily4-Italic15.ttx
│ │ │ │ ├── TestFamily4-Regular.ttx
│ │ │ │ ├── TestFamily-Master0.ttx
│ │ │ │ ├── TestFamily-Master1.ttx
│ │ │ │ ├── TestFamily-Master2.ttx
│ │ │ │ ├── TestFamily-Master3.ttx
│ │ │ │ └── TestFamily-Master4.ttx
│ │ │ ├── master_ttx_varcolr_ttf
│ │ │ │ ├── TestVariableCOLR-Bold.ttx
│ │ │ │ └── TestVariableCOLR-Regular.ttx
│ │ │ ├── master_ttx_varfont_otf
│ │ │ │ └── TestCFF2VF.ttx
│ │ │ ├── master_ttx_varfont_ttf
│ │ │ │ ├── Mutator_IUP.ttx
│ │ │ │ └── SparseMasters-VF.ttx
│ │ │ ├── master_ufo
│ │ │ │ ├── SparseMasters-Bold.ufo
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── a.glif
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── dotabovecomb.glif
│ │ │ │ │ │ ├── edotabove.glif
│ │ │ │ │ │ ├── e.glif
│ │ │ │ │ │ ├── _notdef.glif
│ │ │ │ │ │ └── s.glif
│ │ │ │ │ ├── layercontents.plist
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── SparseMasters-Medium.ufo
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── e.glif
│ │ │ │ │ │ └── _notdef.glif
│ │ │ │ │ ├── layercontents.plist
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── SparseMasters-Regular.ufo
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── a.glif
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── dotabovecomb.glif
│ │ │ │ │ │ ├── edotabove.glif
│ │ │ │ │ │ ├── e.glif
│ │ │ │ │ │ ├── _notdef.glif
│ │ │ │ │ │ └── s.glif
│ │ │ │ │ ├── layercontents.plist
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── TestFamily2-Master0.ufo
│ │ │ │ │ ├── features.fea
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── a.alt.glif
│ │ │ │ │ │ ├── a.glif
│ │ │ │ │ │ ├── A_.glif
│ │ │ │ │ │ ├── ampersand.glif
│ │ │ │ │ │ ├── A_.sc.glif
│ │ │ │ │ │ ├── atilde.glif
│ │ │ │ │ │ ├── circledotted.glif
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── d.glif
│ │ │ │ │ │ ├── dieresisbelowcmb.glif
│ │ │ │ │ │ ├── dieresiscmb.glif
│ │ │ │ │ │ ├── f.glif
│ │ │ │ │ │ ├── f_t.glif
│ │ │ │ │ │ ├── n.glif
│ │ │ │ │ │ ├── _notdef.glif
│ │ │ │ │ │ ├── space.glif
│ │ │ │ │ │ ├── t.glif
│ │ │ │ │ │ ├── tildebelowcmb.glif
│ │ │ │ │ │ └── tildecmb.glif
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── TestFamily2-Master1.ufo
│ │ │ │ │ ├── features.fea
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── a.alt.glif
│ │ │ │ │ │ ├── a.glif
│ │ │ │ │ │ ├── A_.glif
│ │ │ │ │ │ ├── ampersand.glif
│ │ │ │ │ │ ├── A_.sc.glif
│ │ │ │ │ │ ├── atilde.glif
│ │ │ │ │ │ ├── circledotted.glif
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── d.glif
│ │ │ │ │ │ ├── dieresisbelowcmb.glif
│ │ │ │ │ │ ├── dieresiscmb.glif
│ │ │ │ │ │ ├── f.glif
│ │ │ │ │ │ ├── f_t.glif
│ │ │ │ │ │ ├── n.glif
│ │ │ │ │ │ ├── _notdef.glif
│ │ │ │ │ │ ├── space.glif
│ │ │ │ │ │ ├── t.glif
│ │ │ │ │ │ ├── tildebelowcmb.glif
│ │ │ │ │ │ └── tildecmb.glif
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── TestFamily3-Bold.ufo
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── F_.glif
│ │ │ │ │ │ ├── layerinfo.plist
│ │ │ │ │ │ ├── l.glif
│ │ │ │ │ │ ├── n.glif
│ │ │ │ │ │ ├── o.glif
│ │ │ │ │ │ ├── s.glif
│ │ │ │ │ │ ├── t.glif
│ │ │ │ │ │ └── T_.glif
│ │ │ │ │ ├── groups.plist
│ │ │ │ │ ├── kerning.plist
│ │ │ │ │ ├── layercontents.plist
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── TestFamily3-CondensedBold.ufo
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── F_.glif
│ │ │ │ │ │ ├── layerinfo.plist
│ │ │ │ │ │ ├── l.glif
│ │ │ │ │ │ ├── n.glif
│ │ │ │ │ │ ├── o.glif
│ │ │ │ │ │ ├── s.glif
│ │ │ │ │ │ ├── t.glif
│ │ │ │ │ │ └── T_.glif
│ │ │ │ │ ├── groups.plist
│ │ │ │ │ ├── kerning.plist
│ │ │ │ │ ├── layercontents.plist
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── TestFamily3-CondensedLight.ufo
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── F_.glif
│ │ │ │ │ │ ├── layerinfo.plist
│ │ │ │ │ │ ├── l.glif
│ │ │ │ │ │ ├── n.glif
│ │ │ │ │ │ ├── o.glif
│ │ │ │ │ │ ├── s.glif
│ │ │ │ │ │ ├── t.glif
│ │ │ │ │ │ └── T_.glif
│ │ │ │ │ ├── groups.plist
│ │ │ │ │ ├── kerning.plist
│ │ │ │ │ ├── layercontents.plist
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── TestFamily3-CondensedSemiBold.ufo
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── F_.glif
│ │ │ │ │ │ ├── layerinfo.plist
│ │ │ │ │ │ ├── l.glif
│ │ │ │ │ │ ├── n.glif
│ │ │ │ │ │ ├── o.glif
│ │ │ │ │ │ ├── s.glif
│ │ │ │ │ │ ├── t.glif
│ │ │ │ │ │ └── T_.glif
│ │ │ │ │ ├── groups.plist
│ │ │ │ │ ├── kerning.plist
│ │ │ │ │ ├── layercontents.plist
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── TestFamily3-Condensed.ufo
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── F_.glif
│ │ │ │ │ │ ├── layerinfo.plist
│ │ │ │ │ │ ├── l.glif
│ │ │ │ │ │ ├── n.glif
│ │ │ │ │ │ ├── o.glif
│ │ │ │ │ │ ├── s.glif
│ │ │ │ │ │ ├── t.glif
│ │ │ │ │ │ └── T_.glif
│ │ │ │ │ ├── groups.plist
│ │ │ │ │ ├── kerning.plist
│ │ │ │ │ ├── layercontents.plist
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── TestFamily3-Light.ufo
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── F_.glif
│ │ │ │ │ │ ├── layerinfo.plist
│ │ │ │ │ │ ├── l.glif
│ │ │ │ │ │ ├── n.glif
│ │ │ │ │ │ ├── o.glif
│ │ │ │ │ │ ├── s.glif
│ │ │ │ │ │ ├── t.glif
│ │ │ │ │ │ └── T_.glif
│ │ │ │ │ ├── groups.plist
│ │ │ │ │ ├── kerning.plist
│ │ │ │ │ ├── layercontents.plist
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── TestFamily3-Regular.ufo
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── F_.glif
│ │ │ │ │ │ ├── layerinfo.plist
│ │ │ │ │ │ ├── l.glif
│ │ │ │ │ │ ├── n.glif
│ │ │ │ │ │ ├── o.glif
│ │ │ │ │ │ ├── s.glif
│ │ │ │ │ │ ├── t.glif
│ │ │ │ │ │ └── T_.glif
│ │ │ │ │ ├── groups.plist
│ │ │ │ │ ├── kerning.plist
│ │ │ │ │ ├── layercontents.plist
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── TestFamily3-SemiBold.ufo
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── F_.glif
│ │ │ │ │ │ ├── layerinfo.plist
│ │ │ │ │ │ ├── l.glif
│ │ │ │ │ │ ├── n.glif
│ │ │ │ │ │ ├── o.glif
│ │ │ │ │ │ ├── s.glif
│ │ │ │ │ │ ├── t.glif
│ │ │ │ │ │ └── T_.glif
│ │ │ │ │ ├── groups.plist
│ │ │ │ │ ├── kerning.plist
│ │ │ │ │ ├── layercontents.plist
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── TestFamily4-Italic15.ufo
│ │ │ │ │ ├── features.fea
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── dieresiscomb.glif
│ │ │ │ │ │ ├── n.glif
│ │ │ │ │ │ ├── N_.glif
│ │ │ │ │ │ ├── odieresis.glif
│ │ │ │ │ │ ├── O_dieresis.glif
│ │ │ │ │ │ ├── o.glif
│ │ │ │ │ │ └── O_.glif
│ │ │ │ │ ├── glyphs.public.background
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── dieresiscomb.glif
│ │ │ │ │ │ ├── N_.glif
│ │ │ │ │ │ ├── o.glif
│ │ │ │ │ │ └── O_.glif
│ │ │ │ │ ├── groups.plist
│ │ │ │ │ ├── layercontents.plist
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── TestFamily4-Regular.ufo
│ │ │ │ │ ├── features.fea
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── dieresiscomb.glif
│ │ │ │ │ │ ├── n.glif
│ │ │ │ │ │ ├── N_.glif
│ │ │ │ │ │ ├── odieresis.glif
│ │ │ │ │ │ ├── O_dieresis.glif
│ │ │ │ │ │ ├── o.glif
│ │ │ │ │ │ └── O_.glif
│ │ │ │ │ ├── glyphs.public.background
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── dieresiscomb.glif
│ │ │ │ │ │ ├── n.glif
│ │ │ │ │ │ ├── N_.glif
│ │ │ │ │ │ ├── o.glif
│ │ │ │ │ │ └── O_.glif
│ │ │ │ │ ├── groups.plist
│ │ │ │ │ ├── kerning.plist
│ │ │ │ │ ├── layercontents.plist
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── TestFamily-Master0.ufo
│ │ │ │ │ ├── features.fea
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── a.glif
│ │ │ │ │ │ ├── A_.glif
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── dollar.glif
│ │ │ │ │ │ ├── dollar.nostroke.glif
│ │ │ │ │ │ ├── _notdef.glif
│ │ │ │ │ │ └── space.glif
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── TestFamily-Master1.ufo
│ │ │ │ │ ├── features.fea
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── a.glif
│ │ │ │ │ │ ├── A_.glif
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── dollar.glif
│ │ │ │ │ │ ├── dollar.nostroke.glif
│ │ │ │ │ │ ├── _notdef.glif
│ │ │ │ │ │ └── space.glif
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── TestFamily-Master2.ufo
│ │ │ │ │ ├── features.fea
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── a.glif
│ │ │ │ │ │ ├── A_.glif
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── dollar.glif
│ │ │ │ │ │ ├── dollar.nostroke.glif
│ │ │ │ │ │ ├── _notdef.glif
│ │ │ │ │ │ └── space.glif
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ ├── TestFamily-Master3.ufo
│ │ │ │ │ ├── features.fea
│ │ │ │ │ ├── fontinfo.plist
│ │ │ │ │ ├── glyphs
│ │ │ │ │ │ ├── a.glif
│ │ │ │ │ │ ├── A_.glif
│ │ │ │ │ │ ├── contents.plist
│ │ │ │ │ │ ├── dollar.glif
│ │ │ │ │ │ ├── dollar.nostroke.glif
│ │ │ │ │ │ ├── _notdef.glif
│ │ │ │ │ │ └── space.glif
│ │ │ │ │ ├── lib.plist
│ │ │ │ │ └── metainfo.plist
│ │ │ │ └── TestFamily-Master4.ufo
│ │ │ │ ├── features.fea
│ │ │ │ ├── fontinfo.plist
│ │ │ │ ├── glyphs
│ │ │ │ │ ├── a.glif
│ │ │ │ │ ├── A_.glif
│ │ │ │ │ ├── contents.plist
│ │ │ │ │ ├── dollar.glif
│ │ │ │ │ ├── dollar.nostroke.glif
│ │ │ │ │ ├── _notdef.glif
│ │ │ │ │ └── space.glif
│ │ │ │ ├── lib.plist
│ │ │ │ └── metainfo.plist
│ │ │ ├── master_vpal_test
│ │ │ │ ├── master_vpal_test_0.ttx
│ │ │ │ └── master_vpal_test_1.ttx
│ │ │ ├── master_vvar_cff2
│ │ │ │ ├── TestVVAR.0.ttx
│ │ │ │ └── TestVVAR.1.ttx
│ │ │ ├── SingleMaster.designspace
│ │ │ ├── SparseCFF2.designspace
│ │ │ ├── SparseMasters.designspace
│ │ │ ├── SparseMasters.glyphs
│ │ │ ├── SparseMasters_ufo.designspace
│ │ │ ├── TestBASE.designspace
│ │ │ ├── TestCFF2.designspace
│ │ │ ├── TestCFF2Input.designspace
│ │ │ ├── TestNonMarkingCFF2.designspace
│ │ │ ├── TestNoOverwriteSTAT.designspace
│ │ │ ├── test_results
│ │ │ │ ├── BuildAvar2.ttx
│ │ │ │ ├── BuildAvarEmptyAxis.ttx
│ │ │ │ ├── BuildAvarIdentityMaps.ttx
│ │ │ │ ├── BuildAvarSingleAxis.ttx
│ │ │ │ ├── BuildGvarCompositeExplicitDelta.ttx
│ │ │ │ ├── BuildMain.ttx
│ │ │ │ ├── BuildTestCFF2.ttx
│ │ │ │ ├── Build.ttx
│ │ │ │ ├── DropOnCurves.ttx
│ │ │ │ ├── FeatureVarsCustomTag.ttx
│ │ │ │ ├── FeatureVars_rclt.ttx
│ │ │ │ ├── FeatureVars.ttx
│ │ │ │ ├── FeatureVarsWholeRange.ttx
│ │ │ │ ├── InterpolateLayout2.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_1_diff2.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_1_diff.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_1_same.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_2_class_diff2.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_2_class_diff.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_2_class_same.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_2_spec_diff2.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_2_spec_diff.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_2_spec_same.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_3_diff.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_3_same.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_4_diff.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_4_same.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_5_diff.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_5_same.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_6_diff.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_6_same.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_7_diff.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_7_same.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_8_diff.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_8_same.ttx
│ │ │ │ ├── InterpolateLayoutGPOS_size_feat_same.ttx
│ │ │ │ ├── InterpolateLayoutMain.ttx
│ │ │ │ ├── InterpolateLayout.ttx
│ │ │ │ ├── InterpolateTestCFF2VF.ttx
│ │ │ │ ├── Mutator_Getvar-instance.ttx
│ │ │ │ ├── Mutator_IUP-instance.ttx
│ │ │ │ ├── Mutator.ttx
│ │ │ │ ├── SingleMaster.ttx
│ │ │ │ ├── SparseCFF2-VF.ttx
│ │ │ │ ├── SparseMasters.ttx
│ │ │ │ ├── TestBASE.ttx
│ │ │ │ ├── TestNonMarkingCFF2.ttx
│ │ │ │ ├── TestSparseCFF2VF.ttx
│ │ │ │ ├── TestVariableCOLR-VF.ttx
│ │ │ │ ├── test_vpal.ttx
│ │ │ │ └── TestVVAR.ttx
│ │ │ ├── TestSparseCFF2VF.designspace
│ │ │ ├── TestVariableCOLR.designspace
│ │ │ ├── test_vpal.designspace
│ │ │ ├── TestVVAR.designspace
│ │ │ └── VarLibLocationTest.designspace
│ │ ├── featureVars_test.py
│ │ ├── __init__.py
│ │ ├── instancer
│ │ │ ├── conftest.py
│ │ │ ├── data
│ │ │ │ ├── CFF2Instancer-VF-1.ttx
│ │ │ │ ├── CFF2Instancer-VF-2.ttx
│ │ │ │ ├── CFF2Instancer-VF-3.ttx
│ │ │ │ ├── PartialInstancerTest2-VF.ttx
│ │ │ │ ├── PartialInstancerTest3-VF.ttx
│ │ │ │ ├── PartialInstancerTest4-VF.ttx
│ │ │ │ ├── PartialInstancerTest-VF.ttx
│ │ │ │ ├── SinglePos.ttx
│ │ │ │ ├── STATInstancerTest.ttx
│ │ │ │ └── test_results
│ │ │ │ ├── CFF2Instancer-VF-1-instance-400.ttx
│ │ │ │ ├── CFF2Instancer-VF-2-instance-400.ttx
│ │ │ │ ├── CFF2Instancer-VF-3-instance-400.ttx
│ │ │ │ ├── PartialInstancerTest2-VF-instance-100,100.ttx
│ │ │ │ ├── PartialInstancerTest2-VF-instance-100,62.5.ttx
│ │ │ │ ├── PartialInstancerTest2-VF-instance-400,100.ttx
│ │ │ │ ├── PartialInstancerTest2-VF-instance-400,62.5.ttx
│ │ │ │ ├── PartialInstancerTest2-VF-instance-900,100.ttx
│ │ │ │ ├── PartialInstancerTest2-VF-instance-900,62.5.ttx
│ │ │ │ ├── PartialInstancerTest3-VF-instance-400-no-overlap-flags.ttx
│ │ │ │ ├── PartialInstancerTest3-VF-instance-400-no-overlaps.ttx
│ │ │ │ ├── PartialInstancerTest3-VF-instance-700-no-overlaps.ttx
│ │ │ │ └── SinglePos-VF-instance-280,18.ttx
│ │ │ ├── instancer_test.py
│ │ │ ├── names_test.py
│ │ │ └── solver_test.py
│ │ ├── interpolatable_test.py
│ │ ├── interpolate_layout_test.py
│ │ ├── iup_test.py
│ │ ├── merger_test.py
│ │ ├── models_test.py
│ │ ├── mutator_test.py
│ │ ├── stat_test.py
│ │ ├── varLib_test.py
│ │ └── varStore_test.py
│ └── voltLib
│ ├── data
│ │ ├── Empty.ttf
│ │ ├── NamdhinggoSIL1006.fea
│ │ ├── NamdhinggoSIL1006.vtp
│ │ ├── Nutso.fea
│ │ ├── Nutso.ttf
│ │ └── Nutso.vtp
│ ├── lexer_test.py
│ ├── parser_test.py
│ └── volttofea_test.py
└── tox.ini
198 directories, 2468 files
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论