├── .gitignore ├── LICENSE.md ├── README.md ├── goadbWriter.py ├── kernFeatureWriter.py ├── markFeatureWriter.py ├── setup.py ├── tests ├── goadb_full ├── goadb_full.ufo │ ├── fontinfo.plist │ ├── glyphs │ │ ├── 2cents.glif │ │ ├── 666.glif │ │ ├── 667.glif │ │ ├── 668.glif │ │ ├── 669.glif │ │ ├── A_.glif │ │ ├── A__B_.glif │ │ ├── B_.glif │ │ ├── C_.glif │ │ ├── Z_-glibber.glif │ │ ├── Z_acute.glif │ │ ├── Z_glibber.01.glif │ │ ├── Z_glibber.02.glif │ │ ├── Z_glibber.alt.glif │ │ ├── Z_glibber.glif │ │ ├── _illegal.glif │ │ ├── _notdef.glif │ │ ├── asd.glif │ │ ├── asdasd.glif │ │ ├── beyondF_F_F_F_.glif │ │ ├── contents.plist │ │ ├── eiurwoue.glif │ │ ├── f_f_i.glif │ │ ├── f_f_idieresistonos.glif │ │ ├── idieresistonos.alt.glif │ │ ├── idieresistonos.alt_idieresistonos.glif │ │ ├── idieresistonos.glif │ │ ├── layerinfo.plist │ │ ├── multitude.glif │ │ ├── u10000.glif │ │ ├── uni6666.glif │ │ ├── uni6667.glif │ │ ├── uni6669.glif │ │ ├── uniF_F_F_F_.glif │ │ ├── wät.glif │ │ ├── zero.glif │ │ ├── zero.sups.glif │ │ └── 🥳.glif │ ├── layercontents.plist │ ├── lib.plist │ └── metainfo.plist ├── goadb_no_glyphorder ├── goadb_no_glyphorder.ufo │ ├── fontinfo.plist │ ├── glyphs │ │ ├── A_.glif │ │ ├── B_.glif │ │ ├── C_.glif │ │ ├── D_.glif │ │ ├── E_.glif │ │ ├── F_.glif │ │ ├── G_.glif │ │ ├── H_.alt.glif │ │ ├── H_.glif │ │ ├── I_.alt.glif │ │ ├── I_.alt1.glif │ │ ├── I_.glif │ │ ├── J_.glif │ │ ├── K_.alt.glif │ │ ├── K_.alt1.glif │ │ ├── K_.glif │ │ ├── L_.glif │ │ ├── M_.glif │ │ ├── N_.glif │ │ ├── O_.glif │ │ ├── P_.alt.glif │ │ ├── P_.alt1.glif │ │ ├── P_.glif │ │ ├── Q_.alt.glif │ │ ├── Q_.glif │ │ ├── R_.glif │ │ ├── S_.glif │ │ ├── T_.glif │ │ ├── U_.glif │ │ ├── V_.glif │ │ ├── W_.glif │ │ ├── X_.glif │ │ ├── Y_.alt.glif │ │ ├── Y_.glif │ │ ├── Z_.glif │ │ ├── a.glif │ │ ├── ampersand.glif │ │ ├── any.glif │ │ ├── asciicircum.alt.glif │ │ ├── asciicircum.glif │ │ ├── asciitilde.alt.glif │ │ ├── asciitilde.glif │ │ ├── asterisk.alt.glif │ │ ├── asterisk.glif │ │ ├── at.glif │ │ ├── b.glif │ │ ├── backslash.glif │ │ ├── bar.glif │ │ ├── bold.glif │ │ ├── braceleft.glif │ │ ├── braceright.glif │ │ ├── bracketleft.glif │ │ ├── bracketright.glif │ │ ├── c.glif │ │ ├── clever.glif │ │ ├── colon.alt.glif │ │ ├── colon.alt1.glif │ │ ├── colon.glif │ │ ├── comma.alt.glif │ │ ├── comma.glif │ │ ├── contents.plist │ │ ├── d.glif │ │ ├── daring.glif │ │ ├── dollar.alt.glif │ │ ├── dollar.alt1.glif │ │ ├── dollar.glif │ │ ├── e.glif │ │ ├── eight.alt.glif │ │ ├── eight.glif │ │ ├── equal.glif │ │ ├── exclam.glif │ │ ├── explorer.glif │ │ ├── f.glif │ │ ├── faces.glif │ │ ├── five.alt.glif │ │ ├── five.glif │ │ ├── four.glif │ │ ├── g.glif │ │ ├── grave.alt.glif │ │ ├── grave.glif │ │ ├── great.glif │ │ ├── greater.glif │ │ ├── h.glif │ │ ├── hurdles.glif │ │ ├── hyphen.glif │ │ ├── i.alt.glif │ │ ├── i.alt1.glif │ │ ├── i.glif │ │ ├── j.alt.glif │ │ ├── j.glif │ │ ├── k.glif │ │ ├── l.glif │ │ ├── layerinfo.plist │ │ ├── less.glif │ │ ├── m.glif │ │ ├── n.glif │ │ ├── nine.glif │ │ ├── numbersign.glif │ │ ├── o.alt.glif │ │ ├── o.alt1.glif │ │ ├── o.glif │ │ ├── one.alt.glif │ │ ├── one.alt1.glif │ │ ├── one.glif │ │ ├── p.glif │ │ ├── parenleft.glif │ │ ├── parenright.glif │ │ ├── percent.glif │ │ ├── period.alt.glif │ │ ├── period.alt1.glif │ │ ├── period.glif │ │ ├── plus.glif │ │ ├── q.glif │ │ ├── question.alt.glif │ │ ├── question.alt1.glif │ │ ├── question.glif │ │ ├── quotedbl.glif │ │ ├── quotesingle.glif │ │ ├── r.alt.glif │ │ ├── r.glif │ │ ├── s.alt.glif │ │ ├── s.glif │ │ ├── semicolon.alt.glif │ │ ├── semicolon.glif │ │ ├── seven.glif │ │ ├── six.alt.glif │ │ ├── six.alt1.glif │ │ ├── six.glif │ │ ├── slash.glif │ │ ├── space.glif │ │ ├── t.glif │ │ ├── three.alt.glif │ │ ├── three.alt1.glif │ │ ├── three.glif │ │ ├── two.alt.glif │ │ ├── two.glif │ │ ├── u.alt.glif │ │ ├── u.glif │ │ ├── underscore.glif │ │ ├── v.glif │ │ ├── w.alt.glif │ │ ├── w.alt1.glif │ │ ├── w.glif │ │ ├── x.alt.glif │ │ ├── x.glif │ │ ├── y.glif │ │ ├── z.glif │ │ └── zero.glif │ ├── layercontents.plist │ └── metainfo.plist ├── goadb_template_glyphs ├── goadb_template_glyphs.ufo │ ├── fontinfo.plist │ ├── glyphs │ │ ├── contents.plist │ │ └── layerinfo.plist │ ├── layercontents.plist │ ├── lib.plist │ └── metainfo.plist ├── kern_AV.ufo │ ├── fontinfo.plist │ ├── glyphs │ │ ├── A_.glif │ │ ├── V_.glif │ │ └── contents.plist │ ├── groups.plist │ ├── kerning.plist │ ├── layercontents.plist │ ├── lib.plist │ └── metainfo.plist ├── kern_AV_dissolved.fea ├── kern_AV_singletons.fea ├── kern_all_zero_value.ufo │ ├── features.fea │ ├── fontinfo.plist │ ├── glyphs │ │ ├── A_.glif │ │ ├── B_.glif │ │ ├── C_.glif │ │ ├── _notdef.glif │ │ ├── contents.plist │ │ ├── layerinfo.plist │ │ └── space.glif │ ├── groups.plist │ ├── kerning.plist │ ├── layercontents.plist │ ├── lib.plist │ └── metainfo.plist ├── kern_example.fea ├── kern_example.ufo │ ├── fontinfo.plist │ ├── glyphs │ │ ├── A_.glif │ │ ├── A_dieresis.glif │ │ ├── L_.glif │ │ ├── L_caron.glif │ │ ├── O_.glif │ │ ├── O_dieresis.glif │ │ ├── V_.glif │ │ ├── Y_.glif │ │ ├── Y_dieresis.glif │ │ ├── contents.plist │ │ ├── i.glif │ │ ├── igrave.glif │ │ ├── layerinfo.plist │ │ ├── quotedbl.glif │ │ ├── quotesingle.glif │ │ ├── v.glif │ │ └── w.glif │ ├── groups.plist │ ├── kerning.plist │ ├── layercontents.plist │ ├── lib.plist │ └── metainfo.plist ├── kern_example_rtl.fea ├── kern_example_rtl.ufo │ ├── fontinfo.plist │ ├── glyphs │ │ ├── F_.glif │ │ ├── arA_e.glif │ │ ├── arA_lef.glif │ │ ├── arA_lefM_adda.glif │ │ ├── arB_eh.i.glif │ │ ├── arC_olon.glif │ │ ├── arE_.i.glif │ │ ├── arH_eh.glif │ │ ├── arH_ehG_oalH_amza.glif │ │ ├── arH_ehY_eh.glif │ │ ├── arJ_eh.glif │ │ ├── arP_eh.i.glif │ │ ├── arR_eh.glif │ │ ├── arR_reh.glif │ │ ├── arT_ehM_arbuta.glif │ │ ├── arY_eh.i.glif │ │ ├── arY_ehB_arree.f.glif │ │ ├── arY_ehB_arree.fa.glif │ │ ├── arY_ehB_arreeH_amza.f.glif │ │ ├── arY_ehB_arreeH_amza.fa.glif │ │ ├── arZ_ain.glif │ │ ├── contents.plist │ │ ├── dotlessi.glif │ │ ├── i.glif │ │ ├── iacute.glif │ │ ├── icircumflex.glif │ │ ├── idieresis.glif │ │ ├── igrave.glif │ │ └── imacron.glif │ ├── groups.plist │ ├── kerning.plist │ ├── layercontents.plist │ ├── lib.plist │ └── metainfo.plist ├── kern_example_rtl_subs.fea ├── kern_example_subs.fea ├── kern_example_trim.fea ├── kern_example_ufo2.fea ├── kern_example_ufo2.ufo │ ├── fontinfo.plist │ ├── glyphs │ │ ├── A_.glif │ │ ├── A_dieresis.glif │ │ ├── L_.glif │ │ ├── L_caron.glif │ │ ├── O_.glif │ │ ├── O_dieresis.glif │ │ ├── V_.glif │ │ ├── Y_.glif │ │ ├── Y_dieresis.glif │ │ ├── contents.plist │ │ ├── i.glif │ │ ├── igrave.glif │ │ ├── quotedbl.glif │ │ ├── quotesingle.glif │ │ ├── v.glif │ │ └── w.glif │ ├── groups.plist │ ├── kerning.plist │ ├── layercontents.plist │ ├── lib.plist │ └── metainfo.plist ├── kern_ignored_groups.fea ├── kern_ignored_groups.ufo │ ├── features.fea │ ├── fontinfo.plist │ ├── glyphs │ │ ├── A_.glif │ │ ├── B_.glif │ │ ├── C_.glif │ │ ├── D_.glif │ │ ├── _notdef.glif │ │ ├── contents.plist │ │ ├── layerinfo.plist │ │ └── space.glif │ ├── groups.plist │ ├── kerning.plist │ ├── layercontents.plist │ ├── lib.plist │ └── metainfo.plist ├── kern_left_side_exception.fea ├── kern_left_side_exception.ufo │ ├── fontinfo.plist │ ├── glyphs │ │ ├── A_.glif │ │ ├── A_acute.glif │ │ ├── A_breve.glif │ │ ├── A_circumflex.glif │ │ ├── A_dieresis.glif │ │ ├── A_grave.glif │ │ ├── A_macron.glif │ │ ├── A_ogonek.glif │ │ ├── A_ring.glif │ │ ├── A_tilde.glif │ │ ├── O_.glif │ │ ├── O_acute.glif │ │ ├── O_circumflex.glif │ │ ├── O_dieresis.glif │ │ ├── O_grave.glif │ │ ├── O_hungarumlaut.glif │ │ ├── O_macron.glif │ │ ├── O_slash.glif │ │ ├── O_tilde.glif │ │ ├── _notdef.glif │ │ ├── contents.plist │ │ ├── layerinfo.plist │ │ ├── parenleft.glif │ │ ├── parenright.glif │ │ ├── question.glif │ │ └── space.glif │ ├── groups.plist │ ├── kerning.plist │ ├── layercontents.plist │ ├── lib.plist │ └── metainfo.plist ├── kern_mock_rtl.fea ├── kern_mock_rtl.ufo │ ├── features.fea │ ├── fontinfo.plist │ ├── glyphs │ │ ├── L_.glif │ │ ├── L_acute.glif │ │ ├── L_caron.glif │ │ ├── L_commaaccent.glif │ │ ├── L_dot.glif │ │ ├── L_dotbelow.glif │ │ ├── L_dotbelowmacron.glif │ │ ├── L_linebelow.glif │ │ ├── L_slash.glif │ │ ├── V_.glif │ │ ├── a.glif │ │ ├── aacute.glif │ │ ├── acircumflex.glif │ │ ├── adieresis.glif │ │ ├── agrave.glif │ │ ├── amacron.glif │ │ ├── atilde.glif │ │ ├── backslash.glif │ │ ├── contents.plist │ │ ├── dotlessi.glif │ │ ├── i.glif │ │ ├── iacute.glif │ │ ├── icircumflex.glif │ │ ├── idieresis.glif │ │ ├── igrave.glif │ │ ├── iota.glif │ │ ├── iotadieresistonos.glif │ │ ├── lambda.glif │ │ ├── layerinfo.plist │ │ ├── t.glif │ │ ├── tcaron.glif │ │ ├── tcedilla.glif │ │ └── tcommaaccent.glif │ ├── groups.plist │ ├── kerning.plist │ ├── layercontents.plist │ ├── lib.plist │ └── metainfo.plist ├── kern_nightmare.fea ├── kern_nightmare.ufo │ ├── features.fea │ ├── fontinfo.plist │ ├── glyphs │ │ ├── A_.glif │ │ ├── B_.glif │ │ ├── C_.glif │ │ ├── D_.glif │ │ ├── E_.glif │ │ ├── F_.glif │ │ ├── G_.glif │ │ ├── H_.glif │ │ ├── I_.glif │ │ ├── J_.glif │ │ ├── K_.glif │ │ ├── L_.glif │ │ ├── M_.glif │ │ ├── N_.glif │ │ ├── O_.glif │ │ ├── P_.glif │ │ ├── Q_.glif │ │ ├── R_.glif │ │ ├── S_.glif │ │ ├── T_.glif │ │ ├── U_.glif │ │ ├── V_.glif │ │ ├── W_.glif │ │ ├── X_.glif │ │ ├── Y_.glif │ │ ├── Z_.glif │ │ ├── contents.plist │ │ └── layerinfo.plist │ ├── groups.plist │ ├── kerning.plist │ ├── layercontents.plist │ ├── lib.plist │ └── metainfo.plist ├── kern_no_groups.fea ├── kern_no_groups.ufo │ ├── features.fea │ ├── fontinfo.plist │ ├── glyphs │ │ ├── A_.glif │ │ ├── B_.glif │ │ ├── C_.glif │ │ ├── _notdef.glif │ │ ├── contents.plist │ │ ├── layerinfo.plist │ │ └── space.glif │ ├── groups.plist │ ├── kerning.plist │ ├── layercontents.plist │ ├── lib.plist │ └── metainfo.plist ├── kern_ss4_exceptions.fea ├── kern_ss4_exceptions.ufo │ ├── features.fea │ ├── fontinfo.plist │ ├── glyphs │ │ ├── L_.glif │ │ ├── L_acute.glif │ │ ├── L_caron.glif │ │ ├── L_commaaccent.glif │ │ ├── L_dot.glif │ │ ├── L_dotbelow.glif │ │ ├── L_dotbelowmacron.glif │ │ ├── L_linebelow.glif │ │ ├── L_slash.glif │ │ ├── V_.glif │ │ ├── a.glif │ │ ├── aacute.glif │ │ ├── acircumflex.glif │ │ ├── adieresis.glif │ │ ├── agrave.glif │ │ ├── amacron.glif │ │ ├── atilde.glif │ │ ├── backslash.glif │ │ ├── contents.plist │ │ ├── dotlessi.glif │ │ ├── i.glif │ │ ├── iacute.glif │ │ ├── icircumflex.glif │ │ ├── idieresis.glif │ │ ├── igrave.glif │ │ ├── iota.glif │ │ ├── iotadieresistonos.glif │ │ ├── lambda.glif │ │ ├── layerinfo.plist │ │ ├── t.glif │ │ ├── tcaron.glif │ │ ├── tcedilla.glif │ │ └── tcommaaccent.glif │ ├── groups.plist │ ├── kerning.plist │ ├── layercontents.plist │ ├── lib.plist │ └── metainfo.plist ├── kern_suffix.ufo │ ├── fontinfo.plist │ ├── glyphs │ │ ├── A_.glif │ │ ├── A_dieresis.glif │ │ ├── L_.glif │ │ ├── L_caron.glif │ │ ├── O_.glif │ │ ├── O_dieresis.glif │ │ ├── V_.cxt.glif │ │ ├── Y_.glif │ │ ├── Y_dieresis.glif │ │ ├── contents.plist │ │ ├── i.glif │ │ ├── igrave.glif │ │ ├── layerinfo.plist │ │ ├── quotedbl.glif │ │ ├── quotesingle.glif │ │ ├── v.glif │ │ └── w.glif │ ├── groups.plist │ ├── kerning.plist │ ├── layercontents.plist │ ├── lib.plist │ └── metainfo.plist ├── kern_suffix_ignored.fea ├── kern_suffix_present.fea ├── kern_unused_groups.fea ├── kern_unused_groups.ufo │ ├── features.fea │ ├── fontinfo.plist │ ├── glyphs │ │ ├── A_.glif │ │ ├── B_.glif │ │ ├── C_.glif │ │ ├── _notdef.glif │ │ ├── contents.plist │ │ ├── layerinfo.plist │ │ └── space.glif │ ├── groups.plist │ ├── kerning.plist │ ├── layercontents.plist │ ├── lib.plist │ └── metainfo.plist ├── mark_deva_simple.ufo │ ├── features.fea │ ├── fontinfo.plist │ ├── glyphs │ │ ├── _notdef.glif │ │ ├── a.glif │ │ ├── acutecmb.glif │ │ ├── contents.plist │ │ ├── dvA_nusvara.glif │ │ ├── dvC_andrabindu.glif │ │ ├── dvK_a.glif │ │ ├── dvK_ha.glif │ │ ├── dvN_ukta.glif │ │ ├── dvQ_a.glif │ │ ├── dvR_eph.glif │ │ ├── dvV_irama.glif │ │ └── space.glif │ ├── groups.plist │ ├── kerning.plist │ ├── layercontents.plist │ ├── lib.plist │ └── metainfo.plist ├── mark_deva_simple_abvm.fea ├── mark_deva_simple_blwm.fea ├── mark_deva_simple_mark.fea ├── mark_no_group.ufo │ ├── fontinfo.plist │ ├── glyphs │ │ ├── _notdef.glif │ │ ├── acutecmb.glif │ │ ├── cedillacmb.glif │ │ ├── circumflexcmb.glif │ │ ├── commabelowcmb.glif │ │ ├── contents.plist │ │ ├── dotbelowcmb.glif │ │ ├── gravecmb.glif │ │ ├── layerinfo.plist │ │ ├── o.glif │ │ └── space.glif │ ├── groups.plist │ ├── layercontents.plist │ ├── lib.plist │ └── metainfo.plist ├── mark_rtl_liga.fea ├── mark_rtl_liga.ufo │ ├── fontinfo.plist │ ├── glyphs │ │ ├── arF_atha.glif │ │ ├── arF_athatan.glif │ │ ├── arK_afA_lefM_aksura.glif │ │ ├── arK_asra.glif │ │ ├── arK_asratan.glif │ │ ├── contents.plist │ │ └── layerinfo.plist │ ├── groups.plist │ ├── layercontents.plist │ ├── lib.plist │ └── metainfo.plist ├── mark_simple.fea ├── mark_simple.ufo │ ├── fontinfo.plist │ ├── glyphs │ │ ├── _notdef.glif │ │ ├── a.glif │ │ ├── acutecmb.glif │ │ ├── cedillacmb.glif │ │ ├── circumflexcmb.glif │ │ ├── commabelowcmb.glif │ │ ├── contents.plist │ │ ├── dotbelowcmb.glif │ │ ├── gravecmb.glif │ │ ├── o.glif │ │ ├── oslash.glif │ │ └── space.glif │ ├── groups.plist │ ├── layercontents.plist │ ├── lib.plist │ └── metainfo.plist ├── mark_simple_classes.fea ├── mark_simple_noclasses.fea ├── mark_trim.fea ├── mark_trim.ufo │ ├── features.fea │ ├── fontinfo.plist │ ├── glyphs │ │ ├── O_.glif │ │ ├── _notdef.glif │ │ ├── acutecmb.cap.glif │ │ ├── acutecmb.glif │ │ ├── brevecmb.cap.glif │ │ ├── brevecmb.glif │ │ ├── caroncmb.cap.glif │ │ ├── caroncmb.glif │ │ ├── cedillacmb.glif │ │ ├── circumflexcmb.cap.glif │ │ ├── circumflexcmb.glif │ │ ├── commabelowcmb.glif │ │ ├── contents.plist │ │ ├── dieresiscmb.cap.glif │ │ ├── dieresiscmb.glif │ │ ├── dotaccentcmb.cap.glif │ │ ├── dotaccentcmb.glif │ │ ├── gravecmb.cap.glif │ │ ├── gravecmb.glif │ │ ├── hungarumlautcmb.cap.glif │ │ ├── hungarumlautcmb.glif │ │ ├── layerinfo.plist │ │ ├── macroncmb.cap.glif │ │ ├── macroncmb.glif │ │ ├── o.glif │ │ ├── ringcmb.cap.glif │ │ ├── ringcmb.glif │ │ ├── space.glif │ │ ├── tildecmb.cap.glif │ │ └── tildecmb.glif │ ├── groups.plist │ ├── kerning.plist │ ├── layercontents.plist │ ├── lib.plist │ └── metainfo.plist ├── mkmk_simple.fea ├── project_mark_liga_ltr │ ├── GSUB.fea │ ├── GlyphOrderAndAliasDB │ ├── LigaLTR-Light.otf │ ├── README.md │ ├── collateral │ │ └── make_ligatures_ltr.py │ ├── features.fea │ ├── kern.fea │ ├── liga_ltr.ufo │ │ ├── fontinfo.plist │ │ ├── glyphs │ │ │ ├── _notdef.glif │ │ │ ├── a.glif │ │ │ ├── acutecmb.cap.glif │ │ │ ├── acutecmb.glif │ │ │ ├── b.glif │ │ │ ├── c.glif │ │ │ ├── contents.plist │ │ │ ├── d.glif │ │ │ ├── dotaccentcmb.cap.glif │ │ │ ├── dotaccentcmb.glif │ │ │ ├── dotbelowcmb.glif │ │ │ ├── dotlessi.glif │ │ │ ├── dotlessi.liga.glif │ │ │ ├── e.glif │ │ │ ├── f.glif │ │ │ ├── f.liga.glif │ │ │ ├── f_i.glif │ │ │ ├── f_i_i.glif │ │ │ ├── f_i_i_i.glif │ │ │ ├── f_i_i_i_i.glif │ │ │ ├── f_i_i_i_i_i.glif │ │ │ ├── f_i_i_i_i_i_i.glif │ │ │ ├── f_i_i_i_i_i_i_i.glif │ │ │ ├── f_i_i_i_i_i_i_i_i.glif │ │ │ ├── g.glif │ │ │ ├── h.glif │ │ │ ├── i.glif │ │ │ ├── j.glif │ │ │ ├── k.glif │ │ │ ├── l.glif │ │ │ ├── layerinfo.plist │ │ │ ├── m.glif │ │ │ ├── n.glif │ │ │ ├── o.glif │ │ │ ├── p.glif │ │ │ ├── q.glif │ │ │ ├── r.glif │ │ │ ├── s.glif │ │ │ ├── space.glif │ │ │ ├── t.glif │ │ │ ├── u.glif │ │ │ ├── v.glif │ │ │ ├── w.glif │ │ │ ├── x.glif │ │ │ ├── y.glif │ │ │ └── z.glif │ │ ├── groups.plist │ │ ├── kerning.plist │ │ ├── layercontents.plist │ │ ├── lib.plist │ │ └── metainfo.plist │ └── mark.fea ├── project_mark_liga_rtl │ ├── GSUB.fea │ ├── LigaRTL-Light.otf │ ├── README.md │ ├── features.fea │ ├── kern.fea │ ├── liga_rtl.ufo │ │ ├── data │ │ │ └── com.adobe.type.processedHashMap │ │ ├── fontinfo.plist │ │ ├── glyphs │ │ │ ├── _notdef.glif │ │ │ ├── arF_atha.glif │ │ │ ├── arF_athatan.glif │ │ │ ├── arH_eh.f.glif │ │ │ ├── arH_eh.glif │ │ │ ├── arH_eh.i.glif │ │ │ ├── arH_eh.m.glif │ │ │ ├── arH_eh.mc.glif │ │ │ ├── arH_eh.s.glif │ │ │ ├── arH_ehY_ehB_arree.f.glif │ │ │ ├── arH_ehY_ehB_arree.glif │ │ │ ├── arK_asra.glif │ │ │ ├── arK_asratan.glif │ │ │ ├── arY_ehB_arree.f.glif │ │ │ ├── arY_ehB_arree.glif │ │ │ ├── contents.plist │ │ │ ├── layerinfo.plist │ │ │ └── space.glif │ │ ├── groups.plist │ │ ├── kerning.plist │ │ ├── layercontents.plist │ │ ├── lib.plist │ │ └── metainfo.plist │ ├── mark.fea │ ├── markclasses.fea │ └── mkmk.fea ├── test_goadbWriter.py ├── test_kernFeatureWriter.py ├── test_markFeatureWriter.py ├── tmp_example_trim.fea └── tmp_kern_example_ufo2.fea ├── utilities ├── README.md └── flKernExport.py └── vintage ├── AdobeFontLabUtils.py ├── BezChar.py ├── WriteFeaturesKernFDK.py └── WriteFeaturesMarkFDK.py /.gitignore: -------------------------------------------------------------------------------- 1 | .coverage 2 | coverage.xml 3 | htmlcov/* 4 | 5 | build/* 6 | .eggs/* 7 | *.egg-info/* 8 | *.pyc 9 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/fontinfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ascender 6 | 750 7 | capHeight 8 | 750 9 | descender 10 | -250 11 | postscriptBlueValues 12 | 13 | 14 | postscriptFamilyBlues 15 | 16 | 17 | postscriptFamilyOtherBlues 18 | 19 | 20 | postscriptOtherBlues 21 | 22 | 23 | postscriptStemSnapH 24 | 25 | 26 | postscriptStemSnapV 27 | 28 | 29 | unitsPerEm 30 | 1000 31 | xHeight 32 | 500 33 | 34 | 35 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/2cents.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/666.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/667.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/668.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/669.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/A_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/A__B_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/B_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/C_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/Z_-glibber.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/Z_acute.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/Z_glibber.01.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/Z_glibber.02.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/Z_glibber.alt.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/Z_glibber.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/_illegal.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/_notdef.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/asd.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/asdasd.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/beyondF_F_F_F_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/eiurwoue.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/f_f_i.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/f_f_idieresistonos.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/idieresistonos.alt.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/idieresistonos.alt_idieresistonos.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/idieresistonos.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/layerinfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | color 6 | 1,0,1,0.7 7 | 8 | 9 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/multitude.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/u10000.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/uni6666.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/uni6667.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/uni6669.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/uniF_F_F_F_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/wät.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/zero.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/zero.sups.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/glyphs/🥳.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/layercontents.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | foreground 7 | glyphs 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/goadb_full.ufo/metainfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | creator 6 | com.github.fonttools.ufoLib 7 | formatVersion 8 | 3 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/fontinfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ascender 6 | 750 7 | capHeight 8 | 750 9 | descender 10 | -250 11 | postscriptBlueValues 12 | 13 | 14 | postscriptFamilyBlues 15 | 16 | 17 | postscriptFamilyOtherBlues 18 | 19 | 20 | postscriptOtherBlues 21 | 22 | 23 | postscriptStemSnapH 24 | 25 | 26 | postscriptStemSnapV 27 | 28 | 29 | unitsPerEm 30 | 1000 31 | xHeight 32 | 500 33 | 34 | 35 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/A_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/B_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/C_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/D_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/E_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/F_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/G_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/H_.alt.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/H_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/I_.alt.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/I_.alt1.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/I_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/J_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/K_.alt.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/K_.alt1.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/K_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/L_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/M_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/N_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/O_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/P_.alt.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/P_.alt1.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/P_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/Q_.alt.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/Q_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/R_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/S_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/T_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/U_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/V_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/W_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/X_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/Y_.alt.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/Y_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/Z_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/a.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/ampersand.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/any.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/asciicircum.alt.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/asciicircum.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/asciitilde.alt.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/asciitilde.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/asterisk.alt.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/asterisk.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/at.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/b.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/backslash.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/bar.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/bold.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/braceleft.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/braceright.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/bracketleft.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/bracketright.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/c.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/clever.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/colon.alt.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/colon.alt1.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/colon.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/comma.alt.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/comma.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/d.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/daring.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/dollar.alt.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/dollar.alt1.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/dollar.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/e.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/eight.alt.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/eight.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/equal.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/exclam.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/explorer.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/f.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/faces.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/five.alt.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/five.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/four.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/g.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/grave.alt.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/grave.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/great.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/greater.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/h.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/hurdles.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/hyphen.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/i.alt.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/i.alt1.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/i.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/j.alt.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/j.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/k.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/l.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/layerinfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | color 6 | 1,0,1,0.7 7 | 8 | 9 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/less.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/m.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/n.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/nine.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/numbersign.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/o.alt.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/o.alt1.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/o.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/one.alt.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/one.alt1.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/one.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/p.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/parenleft.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/parenright.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/percent.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/period.alt.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/period.alt1.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/period.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/plus.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/q.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/question.alt.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/question.alt1.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/question.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/quotedbl.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/quotesingle.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/r.alt.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/r.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/s.alt.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/s.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/semicolon.alt.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/semicolon.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/seven.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/six.alt.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/six.alt1.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/six.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/slash.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/space.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/t.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/three.alt.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/three.alt1.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/three.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/two.alt.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/two.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/u.alt.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/u.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/underscore.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/v.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/w.alt.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/w.alt1.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/w.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/x.alt.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/x.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/y.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/z.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/glyphs/zero.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/layercontents.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | foreground 7 | glyphs 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/goadb_no_glyphorder.ufo/metainfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | creator 6 | com.github.fonttools.ufoLib 7 | formatVersion 8 | 3 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/goadb_template_glyphs: -------------------------------------------------------------------------------- 1 | .notdef .notdef 2 | A A 3 | B B 4 | C C -------------------------------------------------------------------------------- /tests/goadb_template_glyphs.ufo/fontinfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ascender 6 | 750 7 | capHeight 8 | 750 9 | descender 10 | -250 11 | postscriptBlueValues 12 | 13 | 14 | postscriptFamilyBlues 15 | 16 | 17 | postscriptFamilyOtherBlues 18 | 19 | 20 | postscriptOtherBlues 21 | 22 | 23 | postscriptStemSnapH 24 | 25 | 26 | postscriptStemSnapV 27 | 28 | 29 | unitsPerEm 30 | 1000 31 | xHeight 32 | 500 33 | 34 | 35 | -------------------------------------------------------------------------------- /tests/goadb_template_glyphs.ufo/glyphs/contents.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/goadb_template_glyphs.ufo/glyphs/layerinfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | color 6 | 1,0,1,0.7 7 | 8 | 9 | -------------------------------------------------------------------------------- /tests/goadb_template_glyphs.ufo/layercontents.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | foreground 7 | glyphs 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/goadb_template_glyphs.ufo/lib.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | public.glyphOrder 6 | 7 | .notdef 8 | A 9 | B 10 | C 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /tests/goadb_template_glyphs.ufo/metainfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | creator 6 | com.github.fonttools.ufoLib 7 | formatVersion 8 | 3 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/kern_AV.ufo/glyphs/contents.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | A 6 | A_.glif 7 | V 8 | V_.glif 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/kern_AV.ufo/groups.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | LATIN 6 | 7 | A 8 | V 9 | 10 | public.kern1.LAT_A 11 | 12 | A 13 | 14 | public.kern1.LAT_V 15 | 16 | V 17 | 18 | public.kern2.LAT_A 19 | 20 | A 21 | 22 | public.kern2.LAT_V 23 | 24 | V 25 | 26 | uc 27 | 28 | A 29 | V 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /tests/kern_AV.ufo/kerning.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | public.kern1.LAT_A 6 | 7 | public.kern2.LAT_A 8 | 10 9 | public.kern2.LAT_V 10 | -119 11 | 12 | public.kern1.LAT_V 13 | 14 | public.kern2.LAT_A 15 | -120 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /tests/kern_AV.ufo/layercontents.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | public.default 7 | glyphs 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/kern_AV.ufo/lib.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | public.glyphOrder 6 | 7 | A 8 | V 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/kern_AV.ufo/metainfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | creator 6 | com.github.fonttools.ufoLib 7 | formatVersion 8 | 3 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/kern_AV_dissolved.fea: -------------------------------------------------------------------------------- 1 | # PS Name: SourceSerif4-Regular 2 | # MinKern: +/- 3 inclusive 3 | 4 | 5 | # glyph, glyph: 6 | pos A A 10; 7 | pos A V -119; 8 | pos V A -120; 9 | -------------------------------------------------------------------------------- /tests/kern_AV_singletons.fea: -------------------------------------------------------------------------------- 1 | # PS Name: SourceSerif4-Regular 2 | # MinKern: +/- 3 inclusive 3 | 4 | @MMK_L_LAT_A = [A]; 5 | @MMK_L_LAT_V = [V]; 6 | @MMK_R_LAT_A = [A]; 7 | @MMK_R_LAT_V = [V]; 8 | 9 | # group, group/glyph: 10 | pos @MMK_L_LAT_A @MMK_R_LAT_A 10; 11 | pos @MMK_L_LAT_A @MMK_R_LAT_V -119; 12 | pos @MMK_L_LAT_V @MMK_R_LAT_A -120; 13 | -------------------------------------------------------------------------------- /tests/kern_all_zero_value.ufo/features.fea: -------------------------------------------------------------------------------- 1 | include(../../../../../features.fea); 2 | -------------------------------------------------------------------------------- /tests/kern_all_zero_value.ufo/glyphs/contents.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | .notdef 6 | _notdef.glif 7 | A 8 | A_.glif 9 | B 10 | B_.glif 11 | C 12 | C_.glif 13 | space 14 | space.glif 15 | 16 | 17 | -------------------------------------------------------------------------------- /tests/kern_all_zero_value.ufo/glyphs/layerinfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | color 6 | 1,0,1,0.7 7 | 8 | 9 | -------------------------------------------------------------------------------- /tests/kern_all_zero_value.ufo/glyphs/space.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /tests/kern_all_zero_value.ufo/kerning.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | B 6 | 7 | public.kern2.LAT_A 8 | 0 9 | public.kern2.LAT_E 10 | 0 11 | public.kern2.LAT_O 12 | 0 13 | 14 | public.kern1.LAT_A 15 | 16 | public.kern2.LAT_A 17 | 0 18 | public.kern2.LAT_E 19 | 0 20 | public.kern2.LAT_O 21 | 0 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /tests/kern_all_zero_value.ufo/layercontents.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | public.default 7 | glyphs 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/kern_all_zero_value.ufo/lib.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | public.glyphOrder 6 | 7 | .notdef 8 | space 9 | A 10 | B 11 | C 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /tests/kern_all_zero_value.ufo/metainfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | creator 6 | com.github.fonttools.ufoLib 7 | formatVersion 8 | 3 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/kern_example.ufo/glyphs/layerinfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | color 6 | 1,0.75,0,0.7 7 | 8 | 9 | -------------------------------------------------------------------------------- /tests/kern_example.ufo/glyphs/quotedbl.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | public.markColor 12 | 0,1,0.8,0.2 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /tests/kern_example.ufo/glyphs/quotesingle.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /tests/kern_example.ufo/layercontents.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | foreground 7 | glyphs 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/kern_example.ufo/lib.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | public.glyphOrder 6 | 7 | A 8 | L 9 | O 10 | V 11 | Y 12 | i 13 | v 14 | w 15 | Adieresis 16 | Lcaron 17 | Odieresis 18 | Ydieresis 19 | igrave 20 | quotesingle 21 | quotedbl 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /tests/kern_example.ufo/metainfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | creator 6 | com.github.fonttools.ufoLib 7 | formatVersion 8 | 3 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/kern_example_rtl.ufo/glyphs/F_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /tests/kern_example_rtl.ufo/glyphs/arA_e.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/kern_example_rtl.ufo/glyphs/arA_lef.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /tests/kern_example_rtl.ufo/glyphs/arZ_ain.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /tests/kern_example_rtl.ufo/glyphs/dotlessi.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /tests/kern_example_rtl.ufo/glyphs/iacute.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /tests/kern_example_rtl.ufo/glyphs/icircumflex.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /tests/kern_example_rtl.ufo/glyphs/igrave.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /tests/kern_example_rtl.ufo/glyphs/imacron.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /tests/kern_example_rtl.ufo/layercontents.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | public.default 7 | glyphs 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/kern_example_rtl.ufo/metainfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | creator 6 | com.github.fonttools.ufoLib 7 | formatVersion 8 | 3 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/kern_example_ufo2.ufo/glyphs/quotedbl.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | public.markColor 12 | 0,1,0.8,0.2 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /tests/kern_example_ufo2.ufo/glyphs/quotesingle.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /tests/kern_example_ufo2.ufo/layercontents.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | public.default 7 | glyphs 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/kern_example_ufo2.ufo/lib.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | public.glyphOrder 6 | 7 | A 8 | L 9 | O 10 | V 11 | Y 12 | i 13 | v 14 | w 15 | Adieresis 16 | Lcaron 17 | Odieresis 18 | Ydieresis 19 | igrave 20 | quotesingle 21 | quotedbl 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /tests/kern_example_ufo2.ufo/metainfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | creator 6 | com.github.fonttools.ufoLib 7 | formatVersion 8 | 3 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/kern_ignored_groups.fea: -------------------------------------------------------------------------------- 1 | # PS Name: SourceSerif4-Regular 2 | # MinKern: +/- 3 inclusive 3 | 4 | @MMK_L_LAT_ABC = [A B C]; 5 | @MMK_R_LAT_ABC = [A B C]; 6 | 7 | # glyph, glyph exceptions: 8 | pos A A 20; 9 | pos A B 0; 10 | pos A C 25; 11 | pos B A -10; 12 | pos B B 5; 13 | pos B C -25; 14 | pos C A 15; 15 | pos C B -50; 16 | pos C C 5; 17 | pos D A 20; 18 | pos D B 10; 19 | pos D C -5; 20 | -------------------------------------------------------------------------------- /tests/kern_ignored_groups.ufo/features.fea: -------------------------------------------------------------------------------- 1 | include(../../../../../features.fea); 2 | -------------------------------------------------------------------------------- /tests/kern_ignored_groups.ufo/glyphs/contents.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | .notdef 6 | _notdef.glif 7 | A 8 | A_.glif 9 | B 10 | B_.glif 11 | C 12 | C_.glif 13 | D 14 | D_.glif 15 | space 16 | space.glif 17 | 18 | 19 | -------------------------------------------------------------------------------- /tests/kern_ignored_groups.ufo/glyphs/layerinfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | color 6 | 1,0,1,0.7 7 | 8 | 9 | -------------------------------------------------------------------------------- /tests/kern_ignored_groups.ufo/glyphs/space.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /tests/kern_ignored_groups.ufo/groups.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | LATIN 6 | 7 | A 8 | B 9 | C 10 | 11 | public.kern1.LAT_ABC 12 | 13 | A 14 | B 15 | C 16 | 17 | public.kern2.LAT_ABC 18 | 19 | A 20 | B 21 | C 22 | 23 | uc 24 | 25 | A 26 | B 27 | C 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /tests/kern_ignored_groups.ufo/layercontents.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | public.default 7 | glyphs 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/kern_ignored_groups.ufo/lib.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | public.glyphOrder 6 | 7 | .notdef 8 | space 9 | A 10 | B 11 | C 12 | D 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /tests/kern_ignored_groups.ufo/metainfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | creator 6 | com.github.fonttools.ufoLib 7 | formatVersion 8 | 3 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/kern_left_side_exception.ufo/glyphs/A_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /tests/kern_left_side_exception.ufo/glyphs/A_acute.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /tests/kern_left_side_exception.ufo/glyphs/A_breve.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /tests/kern_left_side_exception.ufo/glyphs/A_circumflex.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /tests/kern_left_side_exception.ufo/glyphs/A_grave.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /tests/kern_left_side_exception.ufo/glyphs/A_macron.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /tests/kern_left_side_exception.ufo/glyphs/A_ogonek.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /tests/kern_left_side_exception.ufo/glyphs/A_ring.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /tests/kern_left_side_exception.ufo/glyphs/O_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /tests/kern_left_side_exception.ufo/glyphs/O_acute.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /tests/kern_left_side_exception.ufo/glyphs/O_circumflex.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /tests/kern_left_side_exception.ufo/glyphs/O_grave.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /tests/kern_left_side_exception.ufo/glyphs/O_hungarumlaut.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /tests/kern_left_side_exception.ufo/glyphs/O_macron.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /tests/kern_left_side_exception.ufo/glyphs/O_slash.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /tests/kern_left_side_exception.ufo/glyphs/layerinfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | color 6 | 1,0.75,0,0.7 7 | 8 | 9 | -------------------------------------------------------------------------------- /tests/kern_left_side_exception.ufo/glyphs/parenleft.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /tests/kern_left_side_exception.ufo/glyphs/parenright.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /tests/kern_left_side_exception.ufo/glyphs/question.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /tests/kern_left_side_exception.ufo/glyphs/space.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /tests/kern_left_side_exception.ufo/layercontents.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | public.default 7 | glyphs 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/kern_left_side_exception.ufo/metainfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | creator 6 | com.github.fonttools.ufoLib 7 | formatVersion 8 | 3 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/kern_mock_rtl.ufo/features.fea: -------------------------------------------------------------------------------- 1 | include(../../../../../features.fea); 2 | -------------------------------------------------------------------------------- /tests/kern_mock_rtl.ufo/glyphs/L_acute.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /tests/kern_mock_rtl.ufo/glyphs/L_caron.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /tests/kern_mock_rtl.ufo/glyphs/L_dot.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /tests/kern_mock_rtl.ufo/glyphs/L_dotbelow.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /tests/kern_mock_rtl.ufo/glyphs/L_dotbelowmacron.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /tests/kern_mock_rtl.ufo/glyphs/L_linebelow.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /tests/kern_mock_rtl.ufo/glyphs/L_slash.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /tests/kern_mock_rtl.ufo/glyphs/aacute.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /tests/kern_mock_rtl.ufo/glyphs/acircumflex.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /tests/kern_mock_rtl.ufo/glyphs/agrave.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /tests/kern_mock_rtl.ufo/glyphs/amacron.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /tests/kern_mock_rtl.ufo/glyphs/backslash.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /tests/kern_mock_rtl.ufo/glyphs/iacute.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /tests/kern_mock_rtl.ufo/glyphs/icircumflex.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /tests/kern_mock_rtl.ufo/glyphs/igrave.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /tests/kern_mock_rtl.ufo/glyphs/layerinfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | color 6 | 1,0,1,0.7 7 | 8 | 9 | -------------------------------------------------------------------------------- /tests/kern_mock_rtl.ufo/glyphs/tcaron.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /tests/kern_mock_rtl.ufo/layercontents.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | public.default 7 | glyphs 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/kern_mock_rtl.ufo/metainfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | creator 6 | com.github.fonttools.ufoLib 7 | formatVersion 8 | 3 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/kern_nightmare.ufo/features.fea: -------------------------------------------------------------------------------- 1 | include(../../../../../features.fea); 2 | -------------------------------------------------------------------------------- /tests/kern_nightmare.ufo/glyphs/Q_.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /tests/kern_nightmare.ufo/glyphs/layerinfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | color 6 | 1,0,1,0.7 7 | 8 | 9 | -------------------------------------------------------------------------------- /tests/kern_nightmare.ufo/layercontents.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | public.default 7 | glyphs 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/kern_nightmare.ufo/metainfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | creator 6 | com.github.fonttools.ufoLib 7 | formatVersion 8 | 3 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/kern_no_groups.fea: -------------------------------------------------------------------------------- 1 | # PS Name: SourceSerif4-Regular 2 | # MinKern: +/- 3 inclusive 3 | 4 | 5 | # glyph, glyph: 6 | pos A A 20; 7 | pos A C 25; 8 | pos B A -10; 9 | pos B B 5; 10 | pos B C -25; 11 | pos C A 15; 12 | pos C B -50; 13 | pos C C 5; 14 | -------------------------------------------------------------------------------- /tests/kern_no_groups.ufo/features.fea: -------------------------------------------------------------------------------- 1 | include(../../../../../features.fea); 2 | -------------------------------------------------------------------------------- /tests/kern_no_groups.ufo/glyphs/contents.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | .notdef 6 | _notdef.glif 7 | A 8 | A_.glif 9 | B 10 | B_.glif 11 | C 12 | C_.glif 13 | space 14 | space.glif 15 | 16 | 17 | -------------------------------------------------------------------------------- /tests/kern_no_groups.ufo/glyphs/layerinfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | color 6 | 1,0,1,0.7 7 | 8 | 9 | -------------------------------------------------------------------------------- /tests/kern_no_groups.ufo/glyphs/space.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /tests/kern_no_groups.ufo/kerning.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | A 6 | 7 | A 8 | 20 9 | B 10 | 0 11 | C 12 | 25 13 | 14 | B 15 | 16 | A 17 | -10 18 | B 19 | 5 20 | C 21 | -25 22 | 23 | C 24 | 25 | A 26 | 15 27 | B 28 | -50 29 | C 30 | 5 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /tests/kern_no_groups.ufo/layercontents.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | public.default 7 | glyphs 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/kern_no_groups.ufo/lib.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | public.glyphOrder 6 | 7 | .notdef 8 | space 9 | A 10 | B 11 | C 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /tests/kern_no_groups.ufo/metainfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | creator 6 | com.github.fonttools.ufoLib 7 | formatVersion 8 | 3 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/kern_ss4_exceptions.ufo/features.fea: -------------------------------------------------------------------------------- 1 | include(../../../../../features.fea); 2 | -------------------------------------------------------------------------------- /tests/kern_ss4_exceptions.ufo/glyphs/L_acute.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /tests/kern_ss4_exceptions.ufo/glyphs/L_caron.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /tests/kern_ss4_exceptions.ufo/glyphs/L_dot.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /tests/kern_ss4_exceptions.ufo/glyphs/L_dotbelow.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /tests/kern_ss4_exceptions.ufo/glyphs/L_dotbelowmacron.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /tests/kern_ss4_exceptions.ufo/glyphs/L_linebelow.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /tests/kern_ss4_exceptions.ufo/glyphs/L_slash.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /tests/kern_ss4_exceptions.ufo/glyphs/aacute.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /tests/kern_ss4_exceptions.ufo/glyphs/acircumflex.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /tests/kern_ss4_exceptions.ufo/glyphs/agrave.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /tests/kern_ss4_exceptions.ufo/glyphs/amacron.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /tests/kern_ss4_exceptions.ufo/glyphs/backslash.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /tests/kern_ss4_exceptions.ufo/glyphs/iacute.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /tests/kern_ss4_exceptions.ufo/glyphs/icircumflex.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /tests/kern_ss4_exceptions.ufo/glyphs/igrave.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /tests/kern_ss4_exceptions.ufo/glyphs/layerinfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | color 6 | 1,0,1,0.7 7 | 8 | 9 | -------------------------------------------------------------------------------- /tests/kern_ss4_exceptions.ufo/glyphs/tcaron.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /tests/kern_ss4_exceptions.ufo/layercontents.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | public.default 7 | glyphs 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/kern_ss4_exceptions.ufo/metainfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | creator 6 | com.github.fonttools.ufoLib 7 | formatVersion 8 | 3 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/kern_suffix.ufo/glyphs/layerinfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | color 6 | 1,0.75,0,0.7 7 | 8 | 9 | -------------------------------------------------------------------------------- /tests/kern_suffix.ufo/glyphs/quotedbl.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | public.markColor 12 | 0,1,0.8,0.2 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /tests/kern_suffix.ufo/glyphs/quotesingle.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /tests/kern_suffix.ufo/layercontents.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | foreground 7 | glyphs 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/kern_suffix.ufo/lib.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | public.glyphOrder 6 | 7 | A 8 | L 9 | O 10 | V.cxt 11 | Y 12 | i 13 | v 14 | w 15 | Adieresis 16 | Lcaron 17 | Odieresis 18 | Ydieresis 19 | igrave 20 | quotesingle 21 | quotedbl 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /tests/kern_suffix.ufo/metainfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | creator 6 | com.github.fonttools.ufoLib 7 | formatVersion 8 | 3 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/kern_unused_groups.fea: -------------------------------------------------------------------------------- 1 | # PS Name: SourceSerif4-Regular 2 | # MinKern: +/- 3 inclusive 3 | 4 | 5 | # glyph, glyph: 6 | pos A A 20; 7 | pos A C 25; 8 | pos B A -10; 9 | pos B B 5; 10 | pos B C -25; 11 | pos C A 15; 12 | pos C B -50; 13 | pos C C 5; 14 | -------------------------------------------------------------------------------- /tests/kern_unused_groups.ufo/features.fea: -------------------------------------------------------------------------------- 1 | include(../../../../../features.fea); 2 | -------------------------------------------------------------------------------- /tests/kern_unused_groups.ufo/glyphs/contents.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | .notdef 6 | _notdef.glif 7 | A 8 | A_.glif 9 | B 10 | B_.glif 11 | C 12 | C_.glif 13 | space 14 | space.glif 15 | 16 | 17 | -------------------------------------------------------------------------------- /tests/kern_unused_groups.ufo/glyphs/layerinfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | color 6 | 1,0,1,0.7 7 | 8 | 9 | -------------------------------------------------------------------------------- /tests/kern_unused_groups.ufo/glyphs/space.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /tests/kern_unused_groups.ufo/kerning.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | A 6 | 7 | A 8 | 20 9 | B 10 | 0 11 | C 12 | 25 13 | 14 | B 15 | 16 | A 17 | -10 18 | B 19 | 5 20 | C 21 | -25 22 | 23 | C 24 | 25 | A 26 | 15 27 | B 28 | -50 29 | C 30 | 5 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /tests/kern_unused_groups.ufo/layercontents.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | public.default 7 | glyphs 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/kern_unused_groups.ufo/lib.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | public.glyphOrder 6 | 7 | .notdef 8 | space 9 | A 10 | B 11 | C 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /tests/kern_unused_groups.ufo/metainfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | creator 6 | com.github.fonttools.ufoLib 7 | formatVersion 8 | 3 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/mark_deva_simple.ufo/features.fea: -------------------------------------------------------------------------------- 1 | include (../../../../features.fea); 2 | -------------------------------------------------------------------------------- /tests/mark_deva_simple.ufo/glyphs/acutecmb.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /tests/mark_deva_simple.ufo/glyphs/dvA_nusvara.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /tests/mark_deva_simple.ufo/glyphs/dvN_ukta.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /tests/mark_deva_simple.ufo/glyphs/dvQ_a.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /tests/mark_deva_simple.ufo/glyphs/dvV_irama.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /tests/mark_deva_simple.ufo/glyphs/space.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/mark_deva_simple.ufo/kerning.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | public.kern1.Ka 6 | 7 | public.kern2.Ra 8 | -7 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/mark_deva_simple.ufo/layercontents.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | public.default 7 | glyphs 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/mark_deva_simple.ufo/lib.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | public.glyphOrder 6 | 7 | .notdef 8 | space 9 | dvKa 10 | dvKha 11 | dvQa 12 | dvCandrabindu 13 | dvAnusvara 14 | dvNukta 15 | dvVirama 16 | dvReph 17 | a 18 | acutecmb 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /tests/mark_deva_simple.ufo/metainfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | creator 6 | com.github.fonttools.ufoLib 7 | formatVersion 8 | 3 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/mark_deva_simple_abvm.fea: -------------------------------------------------------------------------------- 1 | lookup MARK_BASE_abvmBINDU { 2 | @bGC_dvKa_abvmBINDU = [ dvKa dvQa ]; 3 | pos base @bGC_dvKa_abvmBINDU mark @MC_abvmBINDU; 4 | pos base dvKha mark @MC_abvmBINDU; 5 | } MARK_BASE_abvmBINDU; 6 | 7 | 8 | lookup MARK_BASE_abvmCANDRABINDU { 9 | @bGC_dvKa_abvmCANDRABINDU = [ dvKa dvQa ]; 10 | pos base @bGC_dvKa_abvmCANDRABINDU mark @MC_abvmCANDRABINDU; 11 | pos base dvKha mark @MC_abvmCANDRABINDU; 12 | } MARK_BASE_abvmCANDRABINDU; 13 | 14 | 15 | lookup MARK_BASE_abvmTOP { 16 | @bGC_dvKa_abvmTOP = [ dvKa dvQa ]; 17 | pos base @bGC_dvKa_abvmTOP mark @MC_abvmTOP; 18 | pos base dvKha mark @MC_abvmTOP; 19 | } MARK_BASE_abvmTOP; 20 | 21 | -------------------------------------------------------------------------------- /tests/mark_deva_simple_blwm.fea: -------------------------------------------------------------------------------- 1 | lookup MARK_BASE_blwmBOTTOM { 2 | pos base dvKa mark @MC_blwmBOTTOM; 3 | pos base dvKha mark @MC_blwmBOTTOM; 4 | pos base dvQa mark @MC_blwmBOTTOM; 5 | } MARK_BASE_blwmBOTTOM; 6 | 7 | 8 | lookup MARK_BASE_blwmNUKTA { 9 | pos base dvKa mark @MC_blwmNUKTA; 10 | pos base dvKha mark @MC_blwmNUKTA; 11 | } MARK_BASE_blwmNUKTA; 12 | 13 | -------------------------------------------------------------------------------- /tests/mark_deva_simple_mark.fea: -------------------------------------------------------------------------------- 1 | markClass acutecmb @MC_aboveLC; 2 | markClass dvAnusvara @MC_abvmBINDU; 3 | markClass dvCandrabindu @MC_abvmCANDRABINDU; 4 | markClass dvNukta @MC_blwmNUKTA; 5 | markClass dvReph @MC_abvmTOP; 6 | markClass dvVirama @MC_blwmBOTTOM; 7 | 8 | lookup MARK_BASE_aboveLC { 9 | pos base a mark @MC_aboveLC; 10 | } MARK_BASE_aboveLC; 11 | 12 | -------------------------------------------------------------------------------- /tests/mark_no_group.ufo/glyphs/acutecmb.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /tests/mark_no_group.ufo/glyphs/circumflexcmb.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /tests/mark_no_group.ufo/glyphs/contents.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | .notdef 6 | _notdef.glif 7 | acutecmb 8 | acutecmb.glif 9 | cedillacmb 10 | cedillacmb.glif 11 | circumflexcmb 12 | circumflexcmb.glif 13 | commabelowcmb 14 | commabelowcmb.glif 15 | dotbelowcmb 16 | dotbelowcmb.glif 17 | gravecmb 18 | gravecmb.glif 19 | o 20 | o.glif 21 | space 22 | space.glif 23 | 24 | 25 | -------------------------------------------------------------------------------- /tests/mark_no_group.ufo/glyphs/dotbelowcmb.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /tests/mark_no_group.ufo/glyphs/gravecmb.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /tests/mark_no_group.ufo/glyphs/layerinfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | color 6 | 1,0,1,0.7 7 | 8 | 9 | -------------------------------------------------------------------------------- /tests/mark_no_group.ufo/glyphs/space.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /tests/mark_no_group.ufo/groups.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | LATIN 6 | 7 | o 8 | 9 | lc 10 | 11 | o 12 | 13 | public.kern1.LAT_b 14 | 15 | o 16 | 17 | public.kern2.LAT_o 18 | 19 | o 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /tests/mark_no_group.ufo/layercontents.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | public.default 7 | glyphs 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/mark_no_group.ufo/lib.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | public.glyphOrder 6 | 7 | .notdef 8 | space 9 | o 10 | gravecmb 11 | acutecmb 12 | circumflexcmb 13 | commabelowcmb 14 | cedillacmb 15 | dotbelowcmb 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /tests/mark_no_group.ufo/metainfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | creator 6 | com.github.fonttools.ufoLib 7 | formatVersion 8 | 3 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/mark_rtl_liga.fea: -------------------------------------------------------------------------------- 1 | @mGC_aboveAR_85_770 = [ arFatha arFathatan ]; 2 | @mGC_belowAR_0_0 = [ arKasra arKasratan ]; 3 | 4 | markClass @mGC_aboveAR_85_770 @MC_aboveAR; 5 | markClass @mGC_belowAR_0_0 @MC_belowAR; 6 | 7 | lookup MARK_LIGATURE_aboveAR { 8 | lookupflag RightToLeft; 9 | 10 | pos ligature arKafAlefMaksura mark @MC_aboveAR ligComponent mark @MC_aboveAR; 11 | } MARK_LIGATURE_aboveAR; 12 | 13 | 14 | lookup MARK_LIGATURE_belowAR { 15 | lookupflag RightToLeft; 16 | 17 | pos ligature arKafAlefMaksura mark @MC_belowAR ligComponent mark @MC_belowAR; 18 | } MARK_LIGATURE_belowAR; 19 | 20 | -------------------------------------------------------------------------------- /tests/mark_rtl_liga.ufo/glyphs/arF_atha.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | public.markColor 21 | 0.952,0.6552,0.648,1 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /tests/mark_rtl_liga.ufo/glyphs/arK_asra.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | public.markColor 20 | 0.952,0.6552,0.648,1 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /tests/mark_rtl_liga.ufo/glyphs/contents.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | arFatha 6 | arF_atha.glif 7 | arFathatan 8 | arF_athatan.glif 9 | arKafAlefMaksura 10 | arK_afA_lefM_aksura.glif 11 | arKasra 12 | arK_asra.glif 13 | arKasratan 14 | arK_asratan.glif 15 | 16 | 17 | -------------------------------------------------------------------------------- /tests/mark_rtl_liga.ufo/glyphs/layerinfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | color 6 | 1,0,1,0.7 7 | 8 | 9 | -------------------------------------------------------------------------------- /tests/mark_rtl_liga.ufo/groups.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | COMBINING_MARKS 6 | 7 | arFatha 8 | arFathatan 9 | arKasra 10 | arKasratan 11 | 12 | LIGATURES_WITH_2_COMPONENTS 13 | 14 | arKafAlefMaksura 15 | 16 | public.kern1.ALEFMAKSURA_1ST_ARA 17 | 18 | arKafAlefMaksura 19 | 20 | public.kern2.KAFALEFMAKSURA_2ND_ARA 21 | 22 | arKafAlefMaksura 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /tests/mark_rtl_liga.ufo/layercontents.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | public.default 7 | glyphs 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/mark_rtl_liga.ufo/lib.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | public.glyphOrder 6 | 7 | arKafAlefMaksura 8 | arFatha 9 | arFathatan 10 | arKasra 11 | arKasratan 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /tests/mark_rtl_liga.ufo/metainfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | creator 6 | com.github.fonttools.ufoLib 7 | formatVersion 8 | 3 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/mark_simple.fea: -------------------------------------------------------------------------------- 1 | @mGC_aboveLC_0_495 = [ gravecmb acutecmb circumflexcmb ]; 2 | @mGC_belowLC_0_n20 = [ commabelowcmb dotbelowcmb ]; 3 | 4 | markClass @mGC_aboveLC_0_495 @MC_aboveLC; 5 | markClass @mGC_belowLC_0_n20 @MC_belowLC; 6 | 7 | lookup MARK_BASE_aboveLC { 8 | @bGC_o_aboveLC = [ o oslash ]; 9 | pos base @bGC_o_aboveLC mark @MC_aboveLC; 10 | pos base a mark @MC_aboveLC; 11 | } MARK_BASE_aboveLC; 12 | 13 | 14 | lookup MARK_BASE_belowLC { 15 | pos base a mark @MC_belowLC; 16 | pos base o mark @MC_belowLC; 17 | } MARK_BASE_belowLC; 18 | 19 | -------------------------------------------------------------------------------- /tests/mark_simple.ufo/glyphs/acutecmb.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /tests/mark_simple.ufo/glyphs/circumflexcmb.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /tests/mark_simple.ufo/glyphs/contents.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | .notdef 6 | _notdef.glif 7 | a 8 | a.glif 9 | acutecmb 10 | acutecmb.glif 11 | cedillacmb 12 | cedillacmb.glif 13 | circumflexcmb 14 | circumflexcmb.glif 15 | commabelowcmb 16 | commabelowcmb.glif 17 | dotbelowcmb 18 | dotbelowcmb.glif 19 | gravecmb 20 | gravecmb.glif 21 | o 22 | o.glif 23 | oslash 24 | oslash.glif 25 | space 26 | space.glif 27 | 28 | 29 | -------------------------------------------------------------------------------- /tests/mark_simple.ufo/glyphs/dotbelowcmb.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /tests/mark_simple.ufo/glyphs/gravecmb.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /tests/mark_simple.ufo/glyphs/space.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /tests/mark_simple.ufo/layercontents.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | public.default 7 | glyphs 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/mark_simple.ufo/lib.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | public.glyphOrder 6 | 7 | .notdef 8 | space 9 | a 10 | o 11 | oslash 12 | gravecmb 13 | acutecmb 14 | circumflexcmb 15 | commabelowcmb 16 | cedillacmb 17 | dotbelowcmb 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /tests/mark_simple.ufo/metainfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | creator 6 | com.github.fonttools.ufoLib 7 | formatVersion 8 | 3 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/mark_simple_classes.fea: -------------------------------------------------------------------------------- 1 | @mGC_aboveLC_0_495 = [ gravecmb acutecmb circumflexcmb ]; 2 | @mGC_belowLC_0_n20 = [ commabelowcmb dotbelowcmb ]; 3 | 4 | markClass @mGC_aboveLC_0_495 @MC_aboveLC; 5 | markClass @mGC_belowLC_0_n20 @MC_belowLC; 6 | -------------------------------------------------------------------------------- /tests/mark_simple_noclasses.fea: -------------------------------------------------------------------------------- 1 | lookup MARK_BASE_aboveLC { 2 | @bGC_o_aboveLC = [ o oslash ]; 3 | pos base @bGC_o_aboveLC mark @MC_aboveLC; 4 | pos base a mark @MC_aboveLC; 5 | } MARK_BASE_aboveLC; 6 | 7 | 8 | lookup MARK_BASE_belowLC { 9 | pos base a mark @MC_belowLC; 10 | pos base o mark @MC_belowLC; 11 | } MARK_BASE_belowLC; 12 | 13 | -------------------------------------------------------------------------------- /tests/mark_trim.fea: -------------------------------------------------------------------------------- 1 | @mGC_above_0_495 = [ gravecmb acutecmb circumflexcmb tildecmb macroncmb brevecmb dotaccentcmb dieresiscmb ringcmb hungarumlautcmb caroncmb ]; 2 | @mGC_above_0_690 = [ gravecmb.cap acutecmb.cap circumflexcmb.cap tildecmb.cap macroncmb.cap brevecmb.cap dotaccentcmb.cap dieresiscmb.cap ringcmb.cap hungarumlautcmb.cap caroncmb.cap ]; 3 | 4 | markClass @mGC_above_0_495 @MC_above; 5 | markClass @mGC_above_0_690 @MC_above; 6 | 7 | markClass commabelowcmb @MC_below; 8 | 9 | lookup MARK_BASE_above { 10 | pos base O mark @MC_above; 11 | pos base o mark @MC_above; 12 | } MARK_BASE_above; 13 | 14 | 15 | lookup MARK_BASE_below { 16 | pos base O mark @MC_below; 17 | pos base o mark @MC_below; 18 | } MARK_BASE_below; 19 | 20 | -------------------------------------------------------------------------------- /tests/mark_trim.ufo/features.fea: -------------------------------------------------------------------------------- 1 | include (../../../../featuresVar.fea); 2 | 3 | table OS/2 { 4 | include (../../../Instances/Text/Regular/os2.fea); 5 | include (../../../../familyOS2.fea); 6 | } OS/2; 7 | 8 | # GPOS ----------------------------------- 9 | feature mark { 10 | include (../../../Instances/Text/Regular/mark.fea); 11 | } mark; 12 | 13 | feature mkmk { 14 | include (../../../Instances/Text/Regular/mkmk.fea); 15 | } mkmk; 16 | 17 | feature kern { 18 | lookupflag IgnoreMarks; 19 | lookup KERN useExtension { 20 | include (../../../Instances/Text/Regular/kern.fea); 21 | } KERN; 22 | 23 | include (../../../Instances/Text/Regular/kern_ctxt.fea); 24 | } kern; 25 | -------------------------------------------------------------------------------- /tests/mark_trim.ufo/glyphs/acutecmb.cap.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /tests/mark_trim.ufo/glyphs/acutecmb.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /tests/mark_trim.ufo/glyphs/brevecmb.cap.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /tests/mark_trim.ufo/glyphs/brevecmb.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /tests/mark_trim.ufo/glyphs/caroncmb.cap.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /tests/mark_trim.ufo/glyphs/caroncmb.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /tests/mark_trim.ufo/glyphs/circumflexcmb.cap.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /tests/mark_trim.ufo/glyphs/circumflexcmb.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /tests/mark_trim.ufo/glyphs/dotaccentcmb.cap.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /tests/mark_trim.ufo/glyphs/dotaccentcmb.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /tests/mark_trim.ufo/glyphs/gravecmb.cap.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /tests/mark_trim.ufo/glyphs/gravecmb.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /tests/mark_trim.ufo/glyphs/layerinfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | color 6 | 1,0.75,0,0.7 7 | 8 | 9 | -------------------------------------------------------------------------------- /tests/mark_trim.ufo/glyphs/macroncmb.cap.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /tests/mark_trim.ufo/glyphs/macroncmb.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /tests/mark_trim.ufo/glyphs/space.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /tests/mark_trim.ufo/kerning.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | public.kern1.LAT_O 6 | 7 | public.kern2.LAT_O 8 | 10 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /tests/mark_trim.ufo/layercontents.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | foreground 7 | glyphs 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/mark_trim.ufo/metainfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | creator 6 | com.github.fonttools.ufoLib 7 | formatVersion 8 | 3 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/mkmk_simple.fea: -------------------------------------------------------------------------------- 1 | lookup MKMK_MARK_aboveLC { 2 | lookupflag MarkAttachmentType @MC_aboveLC; 3 | 4 | pos mark gravecmb mark @MC_aboveLC; 5 | pos mark acutecmb mark @MC_aboveLC; 6 | pos mark circumflexcmb mark @MC_aboveLC; 7 | } MKMK_MARK_aboveLC; 8 | 9 | 10 | lookup MKMK_MARK_belowLC { 11 | lookupflag MarkAttachmentType @MC_belowLC; 12 | 13 | pos mark commabelowcmb mark @MC_belowLC; 14 | pos mark dotbelowcmb mark @MC_belowLC; 15 | } MKMK_MARK_belowLC; 16 | 17 | -------------------------------------------------------------------------------- /tests/project_mark_liga_ltr/GlyphOrderAndAliasDB: -------------------------------------------------------------------------------- 1 | .notdef .notdef 2 | space space 3 | a a 4 | b b 5 | c c 6 | d d 7 | e e 8 | f f 9 | g g 10 | h h 11 | i i 12 | j j 13 | k k 14 | l l 15 | m m 16 | n n 17 | o o 18 | p p 19 | q q 20 | r r 21 | s s 22 | t t 23 | u u 24 | v v 25 | w w 26 | x x 27 | y y 28 | z z 29 | dotlessi dotlessi 30 | uni0301 acutecmb 31 | uni0301.cap acutecmb.cap 32 | uni0307 dotaccentcmb 33 | uni0307.cap dotaccentcmb.cap 34 | uni0323 dotbelowcmb 35 | f_i f_i 36 | f_i_i f_i_i 37 | f_i_i_i f_i_i_i 38 | f_i_i_i_i f_i_i_i_i 39 | f_i_i_i_i_i f_i_i_i_i_i 40 | f_i_i_i_i_i_i f_i_i_i_i_i_i 41 | f_i_i_i_i_i_i_i f_i_i_i_i_i_i_i 42 | f_i_i_i_i_i_i_i_i f_i_i_i_i_i_i_i_i 43 | -------------------------------------------------------------------------------- /tests/project_mark_liga_ltr/LigaLTR-Light.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adobe-type-tools/python-modules/406ca5fcdaa41ecd820cadff659cab4e9ff78dc0/tests/project_mark_liga_ltr/LigaLTR-Light.otf -------------------------------------------------------------------------------- /tests/project_mark_liga_ltr/README.md: -------------------------------------------------------------------------------- 1 | # Liga LTR 2 | 3 | This is a test project for mark-to-ligature attachment in left-to-right context. 4 | The `f_i` (`f_i_i`, `f_i_i_i`, etc.) ligatures within the UFO file are created using a [Python script](collateral/make_ligatures_ltr.py). They contain up to 9 anchor attachment points per role (above, below, etc.), which is the maximum supported by the FDK’s mark feature writer. 5 | 6 | The mark feature within this projects exercises ligature marks, as well as trimming anchor names for upper- and lowercase distinction – plus a random anchor to be skipped. 7 | 8 | markfeaturewriter -t liga_ltr.ufo 9 | 10 | -------------------------------------------------------------------------------- /tests/project_mark_liga_ltr/features.fea: -------------------------------------------------------------------------------- 1 | languagesystem DFLT dflt; 2 | 3 | include(GSUB.fea); 4 | 5 | feature kern { 6 | include(kern.fea); 7 | } kern; 8 | 9 | feature mark { 10 | include(mark.fea); 11 | } mark; 12 | 13 | 14 | -------------------------------------------------------------------------------- /tests/project_mark_liga_ltr/liga_ltr.ufo/glyphs/acutecmb.cap.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /tests/project_mark_liga_ltr/liga_ltr.ufo/glyphs/dotaccentcmb.cap.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /tests/project_mark_liga_ltr/liga_ltr.ufo/glyphs/dotaccentcmb.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /tests/project_mark_liga_ltr/liga_ltr.ufo/glyphs/dotbelowcmb.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /tests/project_mark_liga_ltr/liga_ltr.ufo/glyphs/dotlessi.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /tests/project_mark_liga_ltr/liga_ltr.ufo/glyphs/dotlessi.liga.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | public.markColor 21 | 0.5,0.5,0.5,0.5 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /tests/project_mark_liga_ltr/liga_ltr.ufo/glyphs/f_i.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /tests/project_mark_liga_ltr/liga_ltr.ufo/glyphs/f_i_i.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /tests/project_mark_liga_ltr/liga_ltr.ufo/glyphs/f_i_i_i.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /tests/project_mark_liga_ltr/liga_ltr.ufo/glyphs/f_i_i_i_i.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /tests/project_mark_liga_ltr/liga_ltr.ufo/glyphs/l.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /tests/project_mark_liga_ltr/liga_ltr.ufo/glyphs/layerinfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | color 6 | 1,0,1,0.7 7 | 8 | 9 | -------------------------------------------------------------------------------- /tests/project_mark_liga_ltr/liga_ltr.ufo/glyphs/space.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /tests/project_mark_liga_ltr/liga_ltr.ufo/layercontents.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | public.default 7 | glyphs 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/project_mark_liga_ltr/liga_ltr.ufo/metainfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | creator 6 | com.github.fonttools.ufoLib 7 | formatVersion 8 | 3 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/project_mark_liga_rtl/LigaRTL-Light.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adobe-type-tools/python-modules/406ca5fcdaa41ecd820cadff659cab4e9ff78dc0/tests/project_mark_liga_rtl/LigaRTL-Light.otf -------------------------------------------------------------------------------- /tests/project_mark_liga_rtl/README.md: -------------------------------------------------------------------------------- 1 | # Liga RTL 2 | 3 | This is a test project for mark-to-ligature attachment in right-to-left context. 4 | The mark feature within this projects exercises RTL ligature marks, as well as writing a mkmk feature, and writing groups to a markclasses.fea file. 5 | 6 | markfeaturewriter -mc liga_rtl.ufo 7 | 8 | -------------------------------------------------------------------------------- /tests/project_mark_liga_rtl/features.fea: -------------------------------------------------------------------------------- 1 | include (GSUB.fea); 2 | 3 | feature kern { 4 | include (kern.fea); 5 | } kern; 6 | 7 | include (markclasses.fea); 8 | feature mark { 9 | include (mark.fea); 10 | } mark; 11 | 12 | feature mkmk { 13 | include (mkmk.fea); 14 | } mkmk; 15 | 16 | -------------------------------------------------------------------------------- /tests/project_mark_liga_rtl/kern.fea: -------------------------------------------------------------------------------- 1 | # PS Name: MyriadArabic-Light 2 | # MinKern: +/- 3 inclusive 3 | 4 | @MMK_L_HEH_1ST_ARA = [arHeh]; 5 | @MMK_L_SPACE = [space]; 6 | @MMK_L_YEHBARREE_LIGS_1ST_ARA = [arHehYehBarree arHehYehBarree.f]; 7 | @MMK_R_SPACE = [space]; 8 | 9 | 10 | lookup RTL_kerning { 11 | lookupflag RightToLeft IgnoreMarks; 12 | 13 | 14 | # RTL group, group/glyph: 15 | pos @MMK_L_SPACE arHehYehBarree <300 0 300 0>; 16 | pos @MMK_L_YEHBARREE_LIGS_1ST_ARA arHehYehBarree <360 0 360 0>; 17 | 18 | 19 | } RTL_kerning; 20 | 21 | -------------------------------------------------------------------------------- /tests/project_mark_liga_rtl/liga_rtl.ufo/glyphs/arF_atha.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /tests/project_mark_liga_rtl/liga_rtl.ufo/glyphs/arK_asra.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /tests/project_mark_liga_rtl/liga_rtl.ufo/glyphs/layerinfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | color 6 | 1,0,1,0.7 7 | 8 | 9 | -------------------------------------------------------------------------------- /tests/project_mark_liga_rtl/liga_rtl.ufo/glyphs/space.glif: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tests/project_mark_liga_rtl/liga_rtl.ufo/layercontents.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | public.default 7 | glyphs 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/project_mark_liga_rtl/liga_rtl.ufo/lib.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | public.glyphOrder 6 | 7 | .notdef 8 | space 9 | arHeh 10 | arHeh.s 11 | arHeh.i 12 | arHeh.m 13 | arHeh.f 14 | arHeh.mc 15 | arYehBarree 16 | arYehBarree.f 17 | arHehYehBarree 18 | arHehYehBarree.f 19 | arFatha 20 | arFathatan 21 | arKasra 22 | arKasratan 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /tests/project_mark_liga_rtl/liga_rtl.ufo/metainfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | creator 6 | com.github.fonttools.ufoLib 7 | formatVersion 8 | 3 9 | 10 | 11 | -------------------------------------------------------------------------------- /tests/project_mark_liga_rtl/markclasses.fea: -------------------------------------------------------------------------------- 1 | @mGC_aboveAR_85_770 = [ arFatha arFathatan ]; 2 | @mGC_belowAR_0_0 = [ arKasra arKasratan ]; 3 | 4 | markClass @mGC_aboveAR_85_770 @MC_aboveAR; 5 | markClass @mGC_belowAR_0_0 @MC_belowAR; 6 | -------------------------------------------------------------------------------- /tests/project_mark_liga_rtl/mkmk.fea: -------------------------------------------------------------------------------- 1 | lookup MKMK_MARK_aboveAR { 2 | lookupflag RightToLeft MarkAttachmentType @MC_aboveAR; 3 | 4 | pos mark arFatha mark @MC_aboveAR; 5 | pos mark arFathatan mark @MC_aboveAR; 6 | } MKMK_MARK_aboveAR; 7 | 8 | 9 | lookup MKMK_MARK_belowAR { 10 | lookupflag RightToLeft MarkAttachmentType @MC_belowAR; 11 | 12 | pos mark arKasra mark @MC_belowAR; 13 | pos mark arKasratan mark @MC_belowAR; 14 | } MKMK_MARK_belowAR; 15 | 16 | --------------------------------------------------------------------------------