From 5801e12e4a409a22caf2fd738e4d02828d212181 Mon Sep 17 00:00:00 2001 From: Skef Iterum Date: Fri, 24 Mar 2023 02:40:25 -0700 Subject: [PATCH 01/13] Add python `otfautohint` into afdko (still missing most tests) --- .flake8 | 3 +- docs/otfautohint_Notes.md | 126 + pyproject.toml | 1 + python/afdko/convertfonttocid.py | 8 +- python/afdko/makeinstancesufo.py | 8 +- python/afdko/otfautohint/__init__.py | 41 + python/afdko/otfautohint/__main__.py | 945 ++++++ python/afdko/otfautohint/_version.py | 4 + python/afdko/otfautohint/autohint.py | 439 +++ python/afdko/otfautohint/fdTools.py | 809 +++++ python/afdko/otfautohint/glyphData.py | 1450 +++++++++ python/afdko/otfautohint/hinter.py | 2816 +++++++++++++++++ python/afdko/otfautohint/hintstate.py | 585 ++++ python/afdko/otfautohint/logging.py | 121 + python/afdko/otfautohint/otfFont.py | 731 +++++ python/afdko/otfautohint/overlap.py | 66 + python/afdko/otfautohint/report.py | 225 ++ python/afdko/otfautohint/splitpsdicts.py | 232 ++ python/afdko/otfautohint/ufoFont.py | 922 ++++++ python/afdko/ufotools.py | 4 +- setup.py | 4 +- .../_notdef.glif | 17 +- .../a.glif | 14 +- .../b.glif | 21 +- .../c.glif | 4 +- .../d.glif | 24 +- .../e.glif | 4 +- .../f.glif | 30 +- .../g.glif | 59 +- .../h.glif | 4 +- .../i.glif | 4 +- .../j.glif | 17 +- .../k.glif | 14 +- .../l.glif | 4 +- .../m.glif | 30 +- .../n.glif | 8 +- .../o.glif | 4 +- .../p.glif | 8 +- .../q.glif | 23 +- .../r.glif | 16 +- .../s.glif | 4 +- .../t.glif | 36 +- .../u.glif | 20 +- .../v.glif | 4 +- .../w.glif | 4 +- .../x.glif | 29 +- .../y.glif | 4 +- .../z.glif | 4 +- .../_notdef.glif | 44 +- .../a.glif | 44 +- .../b.glif | 36 +- .../c.glif | 22 +- .../d.glif | 31 +- .../e.glif | 57 +- .../f.glif | 4 +- .../g.glif | 117 +- .../h.glif | 4 +- .../i.glif | 10 +- .../j.glif | 29 +- .../k.glif | 4 +- .../l.glif | 4 +- .../m.glif | 34 +- .../n.glif | 34 +- .../o.glif | 4 +- .../p.glif | 42 +- .../q.glif | 43 +- .../r.glif | 24 +- .../s.glif | 26 +- .../t.glif | 23 +- .../u.glif | 29 +- .../v.glif | 8 +- .../w.glif | 16 +- .../x.glif | 4 +- .../y.glif | 20 +- .../z.glif | 12 +- .../expected_output/black.ufo/fontinfo.plist | 2 +- .../expected_output/bold.ufo/fontinfo.plist | 2 +- .../A_.glif | 21 +- .../A_acute.glif | 22 +- .../A_dieresis.glif | 44 +- .../A_tilde.glif | 31 +- .../Y_.glif | 43 +- .../Y_acute.glif | 45 +- .../Y_dieresis.glif | 49 +- .../Y_tilde.glif | 72 +- .../a.glif | 39 +- .../aacute.glif | 39 +- .../acutecmb.cap.glif | 4 +- .../acutecmb.glif | 4 +- .../adieresis.glif | 41 +- .../atilde.glif | 80 +- .../dieresiscmb.cap.glif | 4 +- .../dieresiscmb.glif | 4 +- .../tildecmb.cap.glif | 12 +- .../tildecmb.glif | 35 +- .../y.glif | 36 +- .../yacute.glif | 36 +- .../ydieresis.glif | 38 +- .../ytilde.glif | 80 +- .../A_.glif | 16 +- .../A_acute.glif | 30 +- .../A_dieresis.glif | 16 +- .../A_tilde.glif | 46 +- .../Y_.glif | 12 +- .../Y_acute.glif | 12 +- .../Y_dieresis.glif | 13 +- .../Y_tilde.glif | 40 +- .../a.glif | 22 +- .../aacute.glif | 50 +- .../acutecmb.cap.glif | 4 +- .../acutecmb.glif | 4 +- .../adieresis.glif | 44 +- .../atilde.glif | 64 +- .../dieresiscmb.cap.glif | 4 +- .../dieresiscmb.glif | 4 +- .../tildecmb.cap.glif | 28 +- .../tildecmb.glif | 16 +- .../y.glif | 25 +- .../yacute.glif | 25 +- .../ydieresis.glif | 34 +- .../ytilde.glif | 51 +- .../data/com.adobe.type.processedHashMap | 44 +- .../regular.ufo/fontinfo.plist | 2 +- .../A_.glif | 102 +- .../A_acute.glif | 144 +- .../A_dieresis.glif | 156 +- .../A_tilde.glif | 202 +- .../Y_.glif | 107 +- .../Y_acute.glif | 149 +- .../Y_dieresis.glif | 170 +- .../Y_tilde.glif | 215 +- .../a.glif | 150 +- .../aacute.glif | 182 +- .../acutecmb.cap.glif | 40 +- .../acutecmb.glif | 40 +- .../adieresis.glif | 249 +- .../atilde.glif | 240 +- .../dieresiscmb.cap.glif | 58 +- .../dieresiscmb.glif | 58 +- .../tildecmb.cap.glif | 77 +- .../tildecmb.glif | 74 +- .../y.glif | 127 +- .../yacute.glif | 159 +- .../ydieresis.glif | 198 +- .../ytilde.glif | 218 +- .../data/com.adobe.type.processedHashMap | 44 +- .../regular1.ufo/fontinfo.plist | 2 +- .../A_.glif | 102 +- .../A_acute.glif | 144 +- .../A_dieresis.glif | 156 +- .../A_tilde.glif | 202 +- .../Y_.glif | 107 +- .../Y_acute.glif | 149 +- .../Y_dieresis.glif | 170 +- .../Y_tilde.glif | 215 +- .../a.glif | 150 +- .../aacute.glif | 182 +- .../acutecmb.cap.glif | 40 +- .../acutecmb.glif | 40 +- .../adieresis.glif | 249 +- .../atilde.glif | 240 +- .../dieresiscmb.cap.glif | 58 +- .../dieresiscmb.glif | 58 +- .../tildecmb.cap.glif | 77 +- .../tildecmb.glif | 74 +- .../y.glif | 127 +- .../yacute.glif | 159 +- .../ydieresis.glif | 198 +- .../ytilde.glif | 218 +- .../semibold.ufo/fontinfo.plist | 2 +- .../A_.glif | 46 +- .../A_acute.glif | 48 +- .../A_dieresis.glif | 39 +- .../A_tilde.glif | 57 +- .../Y_.glif | 131 +- .../Y_acute.glif | 114 +- .../Y_dieresis.glif | 118 +- .../Y_tilde.glif | 136 +- .../a.glif | 37 +- .../aacute.glif | 37 +- .../acutecmb.cap.glif | 4 +- .../acutecmb.glif | 4 +- .../adieresis.glif | 45 +- .../atilde.glif | 64 +- .../dieresiscmb.cap.glif | 4 +- .../dieresiscmb.glif | 4 +- .../tildecmb.cap.glif | 12 +- .../tildecmb.glif | 12 +- .../y.glif | 112 +- .../yacute.glif | 112 +- .../ydieresis.glif | 122 +- .../ytilde.glif | 132 +- .../A_.glif | 41 +- .../A_acute.glif | 44 +- .../A_dieresis.glif | 43 +- .../A_tilde.glif | 55 +- .../Y_.glif | 23 +- .../Y_acute.glif | 21 +- .../Y_dieresis.glif | 31 +- .../Y_tilde.glif | 33 +- .../a.glif | 4 +- .../aacute.glif | 4 +- .../acutecmb.cap.glif | 4 +- .../acutecmb.glif | 4 +- .../adieresis.glif | 16 +- .../atilde.glif | 42 +- .../dieresiscmb.cap.glif | 4 +- .../dieresiscmb.glif | 4 +- .../tildecmb.cap.glif | 13 +- .../tildecmb.glif | 14 +- .../y.glif | 34 +- .../yacute.glif | 34 +- .../ydieresis.glif | 44 +- .../ytilde.glif | 58 +- .../input/master2.ufo/fontinfo.plist | 2 +- tests/makeinstancesufo_test.py | 2 +- .../expected_output/basic_shapes.otf | Bin 0 -> 1308 bytes tests/otfautohint_data/input/basic_shapes.otf | Bin 0 -> 1216 bytes .../input/basic_shapes.ufo/fontinfo.plist | 160 + .../basic_shapes.ufo/glyphs/_notdef.glif | 6 + .../input/basic_shapes.ufo/glyphs/circle.glif | 20 + .../basic_shapes.ufo/glyphs/circle2.glif | 20 + .../basic_shapes.ufo/glyphs/contents.plist | 18 + .../input/basic_shapes.ufo/glyphs/square.glif | 12 + .../basic_shapes.ufo/glyphs/square2.glif | 12 + .../basic_shapes.ufo/glyphs/triangle.glif | 11 + .../input/basic_shapes.ufo/lib.plist | 15 + .../input/basic_shapes.ufo/metainfo.plist | 10 + .../input/fontinfo/bad_base_token | 6 + .../otfautohint_data/input/fontinfo/bad_begin | 15 + .../input/fontinfo/bad_end_fddict | 15 + .../input/fontinfo/bad_end_glyphset | 10 + .../input/fontinfo/bad_fddict_key | 16 + .../input/fontinfo/base_token_list | 5 + .../input/fontinfo/bluefuzz_fontname | 21 + .../otfautohint_data/input/fontinfo/finalfont | 15 + .../input/fontinfo/no_dominant_h_v | 13 + tests/otfautohint_test.py | 103 + 238 files changed, 14159 insertions(+), 6650 deletions(-) create mode 100644 docs/otfautohint_Notes.md create mode 100644 python/afdko/otfautohint/__init__.py create mode 100644 python/afdko/otfautohint/__main__.py create mode 100644 python/afdko/otfautohint/_version.py create mode 100644 python/afdko/otfautohint/autohint.py create mode 100644 python/afdko/otfautohint/fdTools.py create mode 100644 python/afdko/otfautohint/glyphData.py create mode 100644 python/afdko/otfautohint/hinter.py create mode 100644 python/afdko/otfautohint/hintstate.py create mode 100644 python/afdko/otfautohint/logging.py create mode 100644 python/afdko/otfautohint/otfFont.py create mode 100644 python/afdko/otfautohint/overlap.py create mode 100644 python/afdko/otfautohint/report.py create mode 100644 python/afdko/otfautohint/splitpsdicts.py create mode 100644 python/afdko/otfautohint/ufoFont.py create mode 100644 tests/otfautohint_data/expected_output/basic_shapes.otf create mode 100644 tests/otfautohint_data/input/basic_shapes.otf create mode 100644 tests/otfautohint_data/input/basic_shapes.ufo/fontinfo.plist create mode 100644 tests/otfautohint_data/input/basic_shapes.ufo/glyphs/_notdef.glif create mode 100644 tests/otfautohint_data/input/basic_shapes.ufo/glyphs/circle.glif create mode 100644 tests/otfautohint_data/input/basic_shapes.ufo/glyphs/circle2.glif create mode 100644 tests/otfautohint_data/input/basic_shapes.ufo/glyphs/contents.plist create mode 100644 tests/otfautohint_data/input/basic_shapes.ufo/glyphs/square.glif create mode 100644 tests/otfautohint_data/input/basic_shapes.ufo/glyphs/square2.glif create mode 100644 tests/otfautohint_data/input/basic_shapes.ufo/glyphs/triangle.glif create mode 100644 tests/otfautohint_data/input/basic_shapes.ufo/lib.plist create mode 100644 tests/otfautohint_data/input/basic_shapes.ufo/metainfo.plist create mode 100644 tests/otfautohint_data/input/fontinfo/bad_base_token create mode 100644 tests/otfautohint_data/input/fontinfo/bad_begin create mode 100644 tests/otfautohint_data/input/fontinfo/bad_end_fddict create mode 100644 tests/otfautohint_data/input/fontinfo/bad_end_glyphset create mode 100644 tests/otfautohint_data/input/fontinfo/bad_fddict_key create mode 100644 tests/otfautohint_data/input/fontinfo/base_token_list create mode 100644 tests/otfautohint_data/input/fontinfo/bluefuzz_fontname create mode 100644 tests/otfautohint_data/input/fontinfo/finalfont create mode 100644 tests/otfautohint_data/input/fontinfo/no_dominant_h_v create mode 100644 tests/otfautohint_test.py diff --git a/.flake8 b/.flake8 index 4ac972406..84a55adee 100644 --- a/.flake8 +++ b/.flake8 @@ -5,7 +5,7 @@ select = E,F,W,B,B901,B902,B903 # ignore W504 line break before binary operator -ignore = W504,B017 +ignore = W504,B017,E731,E741 # explicitly set line length limitation max-line-length = 79 @@ -13,7 +13,6 @@ max-line-length = 79 # exclude files that haven't had linting fixes applied yet exclude = agd.py, - beztools.py, comparefamily.py, otf2otc.py, proofpdf.py, diff --git a/docs/otfautohint_Notes.md b/docs/otfautohint_Notes.md new file mode 100644 index 000000000..bdfe862e5 --- /dev/null +++ b/docs/otfautohint_Notes.md @@ -0,0 +1,126 @@ +# Notes on the OTF autohinter + +`otfautohint` contains a Python port of the "Automatic Coloring" code +originally written in C by Bill Paxton. That code was most recently distributed +as "psautohint" in a PyPI package of the same name. + +Most of the algorithms are unchanged but not all. Some notable differences are: + +1. Because all code is now in Python there is no role for the `bez` charstring + interchange format. CharStrings are now directly unpacked into `glyphData` + objects. These are capable of representing any (decompiled) CharString with + the caveats that the particular spline operator (e.g. `rCurveTo` vs + `curveTo`) is not recorded. +2. Intermediate hint state is now maintained in `hintState` objects, one per + glyph, rather than in globals. +3. The C code algorithms for vertical and horizontal hinting were mostly + implemented as separate functions. In the port there is typically one + function shared by both dimensions. The `glyphData/pt` 2-tuple object has + special `a` and `o` value accessors and a class-level switch as part of this + unification. Some bug fixes and improvements that were only added to one + dimension in the past now work in both. +4. In the C code spline characteristics such as bounding boxes and measures of + flatness were calculated by approximating spline curves with line segments. + In the Python code these calculations are closed-form and implemented with + fontTools' quadratic and cubic root finders. +5. The C code had special functions for handling a spline with an inflection + point. The new code copies and splits such splines at their inflection points, + analyzes the copies, and copies the resulting analysis back to the inflected + splines. +6. The mask distribution algorithm (which is equivalent to what used to be + called "hint substitution" is implemeneted somewhat differently. + +There are also some features that are not (yet) ported: + +1. The C code for hint substitution "promoted" hints to earlier splines under + some circumstances. This was not included because testing did not indicate + it was of noticable benefit in current renderers. +2. Previous versions of psautohint would clean up duplicate `moveTo` operators + and warn about duplicate subpaths or unusually large glyphs. It is now more + appropriate to check for these characteristics using sanitizers at earlier + stages in the development process. +3. Under some circumstances the C autohinter would divide curved splines at *t* + == .5 when the ``allow-changes`` option was active. The primary reason for + doing so was when a single spline "wanted" conflicting hints at its start + and end points. This is a relatively rare circumstance and the Adobe + maintainers are evaluating what, if anything, should be done in this case. +4. The C autohinter would add a new hint mask before each subpath in the + "percent" and "perthousand" glyphs but did not offer this option for other + glyphs. This code was not ported. + +Most functions are now documented in-line. Adapter code in `autohint.py` calls +`hint()` on `glyphHinter` in `hinter.py`, which in turn calls into the +dimension-specific `hhinter` and `vhinter` objects in the same file. + +The Python code is slower when hinting individual glyphs, often 5 or more times +as slow or more compared with the C code on the same machine. It also uses more +memory. However, by default glyphs are now hinted in parallel using the Python +`multiprocessing` module when multiple CPU cores are available. As part of this +change the glyphs are also unpacked just before hinting and updated right after +hinting in order to lower the total memory used by the process at a given time. +As a result the overall hinting process is often slightly faster on +contemporary machines. + +# Some notes on hinting glyphs in a variable font + +## Stem ordering + +The initial CFF2 specification, and all revisions at the time of writing, +require that stems are defined in increasing order by their (lower) starting +locations and then, if two stems start at the same place, their ending +locations (which are higher except in the case of ghost hints). Duplicate +stems are disallowed. Stems that would be specified out of order in a +particular master (relative to the default master ordering) must therefore be +removed. + + + +As long as a design space is defined by interpolation only (rather than +extrapolation) the extremes of stem ordering are represented by the (sorted) +orders in the individual masters. Consider a variable glyph with *n* masters. +The bottom edge of stem *i* at some point in design space can be represented as + +c1\*s*i*1 + c2\*s*i*2 + ... + c*n*\*s*in* + +where c1 + c2 + ... + c*n* == 1 and 0 <= c*k* <= 1 + +The signed distance between the bottom edges of two stems *i* and *j* is accordingly + +c1\*s*i*1 + c2\*s*i*2 + ... + c*n*\*s*in* - c1\*s*j*1 + c2\*s*j*2 + ... + c*n*\*s*jn* + +or + +c1\*(s*i*1 - s*j*1) + c2\*(s*i*2 - s*j*2) + ... + c*n*\*(s*in* - s*jn*) + +The minimum/maximum distance in the space will therefore be *s**ik* +- *s**jk* for whatever master *k* minimizes/maximizes this value. +The question of whether *i* and *j* change order anywhere in design space is +therefore equivalent to the question of whether *i* and *j* change order in any +master, which is further equivalent to the question of whether they appear in a +different order in any master besides the default. + +## Stem overlap + +Suppose that stems *i* and *j* are in the same order across all masters with +stem *i* before stem *j* (so either s*ik* < s*jk* or +(s*ik* == s*jk* and e*ik* < +e*jk*)). Whether *i* overlaps with *j* in a given master *k* is +defined by whether s*jk* - e*ik* < Om (the +overlap margin). Therefore, by reasoning analogous to the above, the question +of whether two consistently ordered stems overlap in design space is equivalent +to whether they overlap in at least one master. + +Any two stems that change order between two masters overlap at some point in design +space interpolated between those masters. The question of whether two stems overlap +in the general is therefore equivalent to: + +1. Do the stems change order in any master relative to the default master? If yes, + then they overlap. +2. If no, then is there any master *k* in which s*jk* - + e*ik* < Om? If yes, then they overlap. diff --git a/pyproject.toml b/pyproject.toml index 23d18ddb8..f657ff002 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,3 +10,4 @@ requires = [ build-backend = "setuptools.build_meta" [tool.setuptools_scm] +write_to = "python/afdko/otfautohint/_version.py" diff --git a/python/afdko/convertfonttocid.py b/python/afdko/convertfonttocid.py index 8903d77f4..f48f92e0c 100644 --- a/python/afdko/convertfonttocid.py +++ b/python/afdko/convertfonttocid.py @@ -4,7 +4,7 @@ convertfonttocid.py. v 1.13.2 Jul 30 2020 Convert a Type 1 font to CID, given multiple hint dict defs in the -"fontinfo" file. See psautohint help, with the "--doc-fddict" option, +"fontinfo" file. See otfautohint help, with the "--doc-fddict" option, or the makeotf user guide for details on this format. The output file produced by convertFontToCID() is a CID Type 1 font, no matter what the input is. @@ -508,11 +508,11 @@ def parseFontInfoFile(fontDictList, fontInfoData, glyphList, maxY, minY, # e.g outside of the Font BBox. We do this because if there are # glyphs which are not assigned to a user specified font dict, # it is because it doesn't make sense to provide alignment zones - # for the glyph. Since psautohint does require at least one bottom zone - # and one top zone, we add one bottom and one top zone that are + # for the glyph. Since otfautohint does require at least one bottom + # zone # and one top zone, we add one bottom and one top zone that are # outside the font BBox, so that hinting won't be affected by them. # NOTE: The FDDict receives a special name "No Alignment Zones" which - # psautohint recognizes. + # otfautohint recognizes. defaultFDDict = fontDictList[0] for key in kBlueValueKeys + kOtherBlueValueKeys: diff --git a/python/afdko/makeinstancesufo.py b/python/afdko/makeinstancesufo.py index df379f531..6ed0a05dd 100644 --- a/python/afdko/makeinstancesufo.py +++ b/python/afdko/makeinstancesufo.py @@ -20,7 +20,7 @@ ) from defcon import Font -from psautohint.__main__ import main as psautohint +from .otfautohint.__main__ import main as otfautohint from ufonormalizer import normalizeUFO from ufoProcessor import build as ufoProcessorBuild @@ -86,7 +86,7 @@ def filterDesignspaceInstances(dsDoc, options): def updateInstance(fontInstancePath, options): """ - Run checkoutlinesufo and psautohint, unless explicitly suppressed. + Run checkoutlinesufo and otfautohint, unless explicitly suppressed. """ if options.doOverlapRemoval: logger.info("Doing overlap removal with checkoutlinesufo on %s ..." % @@ -100,12 +100,12 @@ def updateInstance(fontInstancePath, options): raise if options.doAutoHint: - logger.info("Running psautohint on %s ..." % fontInstancePath) + logger.info("Running otfautohint on %s ..." % fontInstancePath) ah_args = ['--no-zones-stems', fontInstancePath] if options.no_round: ah_args.insert(0, '-d') try: - psautohint(ah_args) + otfautohint(ah_args) except (Exception, SystemExit): raise diff --git a/python/afdko/otfautohint/__init__.py b/python/afdko/otfautohint/__init__.py new file mode 100644 index 000000000..17980ea35 --- /dev/null +++ b/python/afdko/otfautohint/__init__.py @@ -0,0 +1,41 @@ +import os + + +class FontParseError(Exception): + pass + + +def _font_is_ufo(path): + from fontTools.ufoLib import UFOReader + from fontTools.ufoLib.errors import UFOLibError + try: + UFOReader(path, validate=False) + return True + except (UFOLibError, KeyError, TypeError): + return False + + +def get_font_format(font_file_path): + if _font_is_ufo(font_file_path): + return "UFO" + elif os.path.isfile(font_file_path): + with open(font_file_path, 'rb') as f: + head = f.read(4) + if head == b'OTTO': + return 'OTF' + elif head[0:2] == b'\x01\x00': + return 'CFF' + elif head[0:2] == b'\x80\x01': + return 'PFB' + elif head in (b'%!PS', b'%!Fo'): + for fullhead in (b'%!PS-AdobeFont', b'%!FontType1', + b'%!PS-Adobe-3.0 Resource-CIDFont'): + f.seek(0) + if f.read(len(fullhead)) == fullhead: + if b"CID" not in fullhead: + return 'PFA' + else: + return 'PFC' + return None + else: + return None diff --git a/python/afdko/otfautohint/__main__.py b/python/afdko/otfautohint/__main__.py new file mode 100644 index 000000000..e02ffc7e0 --- /dev/null +++ b/python/afdko/otfautohint/__main__.py @@ -0,0 +1,945 @@ +# Copyright 2014,2022 Adobe. All rights reserved. + +""" +Auto-hinting program for OpenType/CFF and cubic spline UFO fonts. +""" + +import argparse +import logging +import os +import re +import subprocess +import sys +import textwrap + +from . import get_font_format +from ._version import version as __version__ +from .logging import logging_conf +from .autohint import ACOptions, hintFiles + + +FONTINFO_FILE_NAME = 'fontinfo' + +GENERAL_INFO = """ +otfautohint is a tool for hinting fonts. It supports the following formats: +CFF (a.k.a. Type 2), OTF (name- and CID-keyed), and UFO. + +By default, otfautohint will hint all glyphs in the input font. Options are +available to specify a subset of the glyphs for hinting and other settings. + +Note that the hinting results are better if the font's alignment zones are set +properly. For a font supporting a bicameral script (e.g. Latin, Greek, or +Cyrillic) the zones should capture the baseline, the x-height and the capital +height, and respective overshoots of the glyphs, at the very least. +Additionally, ascender, descender, small cap, and figures heights may also be +considered. + +The reports provided by the stemHist tool can be useful for choosing alignment +zone and stem width values. +""" + +FDDICT_DOC = r""" +By default, otfautohint uses the font's global alignment zones and stem widths +when hinting each glyph. However, if there is a file named 'fontinfo' in the +same directory as the input font file, otfautohint will search it for +definitions of sets of alignment zones (a.k.a 'FDDict'), and for matching +lists of glyphs to which each FDDict should be applied to. This approach +allows a group of glyphs to be hinted using a different set of zones and stem +widths than other glyphs. + +If FDDict definitions are used, then the global alignment zones and stem widths +in the source font will be ignored. For any glyphs not covered by an explicit +FDDict definition, otfautohint will synthesize a dummy FDDict, where the zones +are set outside of the font's bounding box, so not to influence the hinting. +This is desirable for glyphs that have no features that need to be aligned. + +To use a FDDict, one must define both the values of alignment zones and stem +widths, and the set of glyphs to apply it to. The FDDict must be defined in +the file before the set of glyphs which belong to it. Both the FDDict and the +glyph set define a name; an FDDict is applied to the glyph set with the same +name. + +A fontinfo file can contain multiple FDDict definitions with the same name. +The values from each definition will be merged, with later values overriding +earlier ones in the case of duplicates. Defining multiple GlyphSets with +the same name is not allowed. + +Running otfautohint with the option --print-dflt-fddict will provide the list +of default FDDict values for the source font. These can be used as a starting +point for alternate FDDict definitions. + +Running otfautohint with the option --print-list-fddict will provide all the +user-defined FDDict defintions, as well as the list of glyphs associated with +each of them. One can use these to confirm the values, and to check which +glyphs are assigned to which FDDict. In particular, one should check the glyph +list of the FDDict named 'No Alignment Zones'; this list contains the glyphs +that did not match any of the search terms of the user-defined FDDicts. + +The definitions use the following syntax: + +begin FDDict + + + ... + +end FDDict + +begin GlyphSet + ... + +end GlyphSet + +The glyph names may be either a real glyph name, or a regular expression +designed to match several names. + +An abbreviated regex primer: +^ ..... Matches at the start of the glyph name +$ ..... Matches at the end +[aABb] Matches any one character in the set a, A, b, B +[A-Z] Matches any one character in the set comprising the range from A-Z +[abA-Z] Matches any one character in the set a, b, and the characters + in the range from A-Z +. ..... Matches any single character ++ ..... Maches whatever preceded it one or more times +* ..... Matches whatever preceded it none or more times. +\ ..... An escape character that includes the following character without + the second one being interpreted as a regex special character + +Examples: +^[A-Z]$ Matches names with one character in the range from A-Z. +^[A-Z].+ Matches any name where the first character is in the range A-Z, + and it is followed by one or more characters. +[A-Z].+ Matches any name with a character that is in the range A-Z and + which is followed by one or more characters. +^[A-Z].* Matches any name with one or more characters, and + the first character is in the range A-Z +^.+\.smallcaps Matches any name that contains ".smallcaps" +^.+\.smallcaps$ Matches any name that ends with ".smallcaps" +^.+\.s[0-24]0$ Matches any name that ends with ".s00",".s10",".s20" or ".s40" + + +Example FDDict and GlyphSet definitions +======================================= + +begin FDDict ST_Smallcaps + # It's good practice to put the non-hint stuff first + OrigEmSqUnits 1000 + FlexOK true + # This gets used as the hint dict name if the font + # is eventually built as a CID font. + FontName MyFont-Bold + + # Alignment zones + # The first is a bottom zone, the rest are top zones + BaselineOvershoot -20 + BaselineYCoord 0 + CapHeight 900 + CapOvershoot 20 + LcHeight 700 + LcOvershoot 15 + + # Stem widths + DominantV [236 267] + DominantH [141 152] +end FDDict ST_Smallcaps + + +begin FDDict LM_Smallcaps + OrigEmSqUnits 1000 + FlexOK true + FontName MyFont-Bold + BaselineOvershoot -25 + BaselineYCoord 0 + CapHeight 950 + CapOvershoot 25 + LcHeight 750 + LcOvershoot 21 + DominantV [236 267] + DominantH [141 152] +end FDDict LM_Smallcaps + + +begin GlyphSet LM_Smallcaps + [Ll]\S+\.smallcap [Mm]\S+\.smallcap +end GlyphSet LM_Smallcaps + + +begin GlyphSet ST_Smallcaps + [Tt]\S+\.smallcap [Ss]\S+\.smallcap +end GlyphSet ST_Smallcaps + +*************************************** + +Note that whitespace must exist between keywords and values, but is otherwise +ignored. '#' marks the start of a comment; all the text after this character +on a line is ignored. GlyphSet and FDDict definitions may be intermixed, +as long as any FDDict is defined before the GlyphSet which refers to it. + +At least two BlueValue pairs (the 'BaselineYCoord' bottom zone and any top +zone), and DominantH and DominantV values must be provided. All other keywords +are optional. + +The full set of recognized FDDict keywords is: + +BlueValue pairs: + # BaselineOvershoot is a bottom zone, the rest are top zones. + BaselineYCoord + BaselineOvershoot + + CapHeight + CapOvershoot + + LcHeight + LcOvershoot + + AscenderHeight + AscenderOvershoot + + FigHeight + FigOvershoot + + Height5 + Height5Overshoot + + Height6 + Height6Overshoot + +OtherBlues pairs: + Baseline5Overshoot + Baseline5 + + Baseline6Overshoot + Baseline6 + + SuperiorOvershoot + SuperiorBaseline + + OrdinalOvershoot + OrdinalBaseline + + DescenderOvershoot + DescenderHeight + +FamilyBlueValue pairs: + # Any BlueValue keyword preceded by "Family" + +FamilyOtherBlueValue pairs: + # Any OtherBlueValue keyword preceded by "Family" + +For zones which capture the bottom of a feature in a glyph --BaselineYCoord +and all OtherBlues values-- the value specifies the top of the zone, and the +'Overshoot' is a negative value which specifes the offset to the bottom of +the zone, e.g. + BaselineYCoord 0 + BaselineOvershoot -12 + +For zones which capture the top of a feature in a glyph --all BlueValue values +except BaselineYCoord-- the value specifies the bottom of the zone, and the +'Overshoot' is a positive value which specifes the offset to the top of the +zone, e.g. + Height6 800 + Height6Overshoot 20 + +Note also that there is no implied sequential order of values. Height6 may have +a value less than or equal to CapHeight. + +The values for keywords in one FontDict definiton are completely independent +from the values used in another FontDict. There is no inheritance from one +definition to the next. + +Miscellaneous values: + FontName ..... PostScript font name. + Only used by makeotf when building a CID font. + OrigEmSqUnits Single value: size of em-square. + Only used by makeotf when building a CID font. + LanguageGroup 0 or 1. Specifies whether counter hints for ideographic + glyphs should be applied. + Only used by makeotf when building a CID font. + DominantV .... List of dominant vertical stems, in the form + [ ...] + DominantH .... List of dominant horizontal stems, in the form + [ ...] + FlexOK ....... true or false. + VCounterChars List of glyphs to which counter hints may be applied, + in the form [ ...] + HCounterChars List of glyphs to which counter hints may be applied, + in the form [ ...] + +Counter hints help to keep the space between stems open and equal in size. +otfautohint will try and add counter hints to only a short hard-coded list +of glyphs, + V-counters: m, M, T, ellipsis + H-counters: element, equivalence, notelement, divide + +To extend this list, use the VCounterChars and HCounterChars keywords. +A maximum of 64 glyph names can be added to either the vertical or +horizontal list. + +--- +Note for cognoscenti: the otfautohint program code ignores StdHW and StdVW +entries if DominantV and DominantH entries are present, so it omits writing the +Std[HV]W keywords to fontinfo file. Also, otfautohint will add anynon-duplicate +stem width values for StemSnap[HV] to the Dominant[HV] stem width list, but the +StemSnap[HV] entries are not necessary if the full list of stem widths are +supplied as values for the Dominant[HV] keywords. Hence it also writes the full +stem list for the Dominant[HV] keywords, and does not write the StemSnap[HV] +keywords, to the fontinfo file. This is technically not right, as Dominant[HV] +array is supposed to hold only two values, but the otfautohint program is not +affected, and it can write fewer entries this way. +""" + + +def _read_txt_file(file_path): + with open(file_path, encoding='utf-8') as f: + return f.read() + + +def _expand_cid_name(glyph_name, name_aliases): + glyphRange = glyph_name.split("-") + if len(glyphRange) > 1: + g1 = _expand_cid_name(glyphRange[0], name_aliases) + g2 = _expand_cid_name(glyphRange[1], name_aliases) + glyph_name = "%s-%s" % (g1, g2) + + elif glyph_name[0] == "/": + glyph_name = "cid" + glyph_name[1:].zfill(5) + if glyph_name == "cid00000": + glyph_name = ".notdef" + name_aliases[glyph_name] = "cid00000" + + elif glyph_name.startswith("cid") and (len(glyph_name) < 8): + glyph_name = "cid" + glyph_name[3:].zfill(5) + if glyph_name == "cid00000": + glyph_name = ".notdef" + name_aliases[glyph_name] = "cid00000" + + return glyph_name + + +def _process_glyph_list_arg(glyph_list, name_aliases): + return [_expand_cid_name(n, name_aliases) for n in glyph_list] + + +class HintOptions(ACOptions): + def __init__(self, pargs): + super(HintOptions, self).__init__() + self.inputPaths = pargs.font_paths + self.outputPaths = pargs.output_paths + self.referenceFont = pargs.reference_font + self.referenceOutputPath = pargs.reference_out + self.hintAll = pargs.hint_all_ufo + self.allowChanges = pargs.allow_changes + self.noFlex = pargs.no_flex + self.noHintSub = pargs.no_hint_sub + self.allow_no_blues = pargs.no_zones_stems + self.ignoreFontinfo = pargs.ignore_fontinfo + self.logOnly = pargs.report_only + self.removeConflicts = not pargs.keep_conflicts + self.printFDDictList = pargs.print_list_fddict + self.printAllFDDict = pargs.print_all_fddict + self.roundCoords = not pargs.decimal + self.writeToDefaultLayer = pargs.write_to_default_layer + self.maxSegments = pargs.max_segments + self.verbose = pargs.verbose + if pargs.force_overlap: + self.overlapForcing = True + elif pargs.force_no_overlap: + self.overlapForcing = False + if pargs.processes: + self.process_count = pargs.processes + + +class _CustomHelpFormatter(argparse.RawDescriptionHelpFormatter): + """ + Adds extra line between options + """ + @staticmethod + def __add_whitespace(i, i_wtsp, arg): + if i == 0: + return arg + return (" " * i_wtsp) + arg + + def _split_lines(self, arg, width): + arg_rows = arg.splitlines() + for i, line in enumerate(arg_rows): + search = re.search(r'\s*[0-9\-]{0,}\.?\s*', line) + if line.strip() == "": + arg_rows[i] = " " + elif search: + line_wtsp = search.end() + lines = [self.__add_whitespace(j, line_wtsp, x) + for j, x in enumerate(textwrap.wrap(line, width))] + arg_rows[i] = lines + + # [''] adds the extra line between args + return [item for sublist in arg_rows for item in sublist] + [''] + + +class _AdditionalHelpAction(argparse.Action): + """ + Based on argparse's _HelpAction and _VersionAction. + """ + + def __init__(self, + option_strings, + addl_help=None, + dest=argparse.SUPPRESS, + default=argparse.SUPPRESS, + help=None): + super(_AdditionalHelpAction, self).__init__( + option_strings=option_strings, + dest=dest, + default=default, + nargs=0, + help=help) + self.addl_help = addl_help + + def __call__(self, parser, namespace, values, option_string=None): + formatter = parser._get_formatter() + formatter.add_text(self.addl_help) + parser.exit(message=formatter.format_help()) + + +def _split_comma_sequence(comma_str): + return [item.strip() for item in comma_str.split(',')] + + +def _check_save_path(path_str): + test_path = os.path.abspath(os.path.realpath(path_str)) + del_test_file = True + check_path = test_path + if os.path.isdir(test_path): + check_path = os.path.join(test_path, "dummy") + try: + if os.path.exists(check_path): + del_test_file = False + open(check_path, 'a').close() + if del_test_file: + os.remove(check_path) + except (IOError, OSError): + raise argparse.ArgumentTypeError( + f"{test_path} is not a valid path to write to.") + return test_path + + +def _check_tx(): + try: + subprocess.check_output(["tx", "-h"], stderr=subprocess.STDOUT) + return True + except (subprocess.CalledProcessError, OSError): + return False + + +def _validate_font_paths(path_lst, parser): + """ + Checks that all input paths are fonts, and that all are the same format. + Returns the font format string. + """ + has_tx = None + format_set = set() + for path in path_lst: + font_format = get_font_format(path) + base_name = os.path.basename(path) + if font_format is None: + parser.error(f"{base_name} is not a supported font format") + if font_format in ("PFA", "PFB", "PFC"): + if has_tx is None: + has_tx = _check_tx() + if not has_tx: + parser.error(f"{base_name} font format requires 'tx'. " + "Please install 'afdko'.") + format_set.add(font_format) + if len(format_set) > 1: + parser.error("the input fonts must be all of the same format") + # get the set's single-item via tuple unpacking + ft_format_str, = format_set + return ft_format_str + + +def _validate_path(path_str): + valid_path = os.path.abspath(os.path.realpath(path_str)) + if not os.path.exists(valid_path): + raise argparse.ArgumentTypeError( + f"{path_str} is not a valid path.") + return valid_path + + +RE_COUNTER_CHARS = re.compile( + r"([VH]CounterChars)\s+[\(\[]\s*([^\)\r\n]+)[\)\]]") +RE_COMMENT_LINE = re.compile(r"#[^\r\n]+") + + +def _parse_fontinfo_file(options, fontinfo_path): + """ + Collects VCounterChars and HCounterChars values from a fontinfo file, + and updates the ACOptions class. + """ + data = _read_txt_file(fontinfo_path) + data = re.sub(RE_COMMENT_LINE, "", data) + counterGlyphLists = RE_COUNTER_CHARS.findall(data) + for glname, glist in counterGlyphLists: + # True indicates there should be an error if the glyph is missing + if glist: + glyphList = {k: True for k in glist.split()} + if glname[0] == "V": + options.vCounterGlyphs.update(glyphList) + else: + options.hCounterGlyphs.update(glyphList) + + +def add_common_options(parser, term): + parser_fonts = parser.add_argument( + 'font_paths', + metavar='FONT', + nargs='*', + type=_validate_path, + help='Type1/CFF/OTF/UFO font files' + ) + parser.add_argument( + '-v', + '--verbose', + action='count', + default=0, + help='verbose mode\n' + 'Use -vv for extra-verbose mode.' + ) + glyphs_parser = parser.add_mutually_exclusive_group() + glyphs_parser.add_argument( + '-g', + '--glyphs', + metavar='GLYPH_LIST', + dest='glyphs_to_hint', + type=_split_comma_sequence, + default=[], + help='comma-separated sequence of glyphs to %s\n' % term + + 'The glyph identifiers may be glyph indexes, glyph names, or ' + 'glyph CIDs. CID values must be prefixed with a forward slash.\n' + 'Examples:\n' + ' otfautohint -g A,B,C,69 MyFont.ufo\n' + ' otfautohint -g /103,/434,68 MyCIDFont' + ) + glyphs_parser.add_argument( + '--glyphs-file', + metavar='PATH', + dest='glyphs_to_hint_file', + type=_validate_path, + help='file containing a list of glyphs to %s\n' % term + + 'The file must contain a comma-separated sequence of glyph ' + 'identifiers.' + ) + glyphs_parser.add_argument( + '-x', + '--exclude-glyphs', + metavar='GLYPH_LIST', + dest='glyphs_to_not_hint', + type=_split_comma_sequence, + default=[], + help='comma-separated sequence of glyphs to NOT %s\n' % term + + "Counterpart to '--glyphs' option." + ) + glyphs_parser.add_argument( + '--exclude-glyphs-file', + metavar='PATH', + dest='glyphs_to_not_hint_file', + type=_validate_path, + help='file containing a list of glyphs to NOT %s\n' % term + + "Counterpart to '--glyphs-file' option." + ) + overlap_parser = parser.add_mutually_exclusive_group() + overlap_parser.add_argument( + '-m', + '--overlap-glyphs', + metavar='GLYPH_LIST', + dest='overlaps_to_hint', + type=_split_comma_sequence, + default=[], + help='comma-separated sequence of glyphs to be corrected for ' + 'overlap\nSame convention as --glyphs flag' + ) + overlap_parser.add_argument( + '--overlaps-file', + metavar='PATH', + dest='overlaps_to_hint_file', + type=_validate_path, + help='file containing a list of glyphs to be corrected for overlap\n' + 'The file must contain a comma-separated sequence of glyph ' + 'identifiers.' + ) + overlap_parser.add_argument( + '--force-overlap', + action='store_true', + help='Correct for potential overlap on all glyphs (the default when ' + 'using -r or hinting a variable font and not supplying an ' + 'overlap list)' + ) + overlap_parser.add_argument( + '--force-no-overlap', + action='store_true', + help='Do not correct for potential overlap on any glyphs (the ' + 'default when hinting individual, non-variable fonts and not ' + 'supplying an overlap list)' + ) + parser.add_argument( + '--log', + metavar='PATH', + dest='log_path', + type=_check_save_path, + help='write output messages to a file' + ) + parser.add_argument( + '-p', + '--processes', + type=int, + help="The number of glyph-%sing processes (default is " % term + + "os.cpu_count(), which is typically the number of CPU cores " + "in the computer. If negative the number will be subtracted " + "from the core count (with a minimum result of 1)" + ) + parser.add_argument( + '--version', + action='version', + version=__version__ + ) + parser.add_argument( + '--traceback', + action='store_true', + help="show traceback for exceptions.", + ) + return parser_fonts + + +def handle_glyph_lists(options, parsed_args): + if parsed_args.glyphs_to_hint: + options.explicitGlyphs = True + options.glyphList = _process_glyph_list_arg( + parsed_args.glyphs_to_hint, options.nameAliases) + elif parsed_args.glyphs_to_not_hint: + options.excludeGlyphList = True + options.glyphList = _process_glyph_list_arg( + parsed_args.glyphs_to_not_hint, options.nameAliases) + elif parsed_args.glyphs_to_hint_file: + options.explicitGlyphs = True + options.glyphList = _process_glyph_list_arg( + _read_txt_file(parsed_args.glyphs_to_hint_file), + options.nameAliases) + elif parsed_args.glyphs_to_not_hint_file: + options.excludeGlyphList = True + options.glyphList = _process_glyph_list_arg( + _read_txt_file(parsed_args.glyphs_to_not_hint_file), + options.nameAliases) + + if parsed_args.overlaps_to_hint: + options.overlapList = _process_glyph_list_arg( + parsed_args.overlaps_to_hint, options.nameAliases) + elif parsed_args.overlaps_to_hint_file: + options.overlapList = _process_glyph_list_arg( + _read_txt_file(parsed_args.overlaps_to_hint_file), + options.nameAliases) + + +def get_options(args): + parser = argparse.ArgumentParser( + formatter_class=_CustomHelpFormatter, + description=__doc__ + ) + parser_fonts = add_common_options(parser, 'hint') + parser.add_argument( + '-o', + '--output', + metavar='PATH', + nargs='+', + dest='output_paths', + type=_check_save_path, + help='specify a file to write the hints to\n' + 'The hints are written to a new font instead of modifying the ' + 'original one.' + ) + parser.add_argument( + '-r', + '--reference-font', + metavar='PATH', + type=_validate_path, + help='reference font\n' + 'Font to be used as reference, when hinting multiple fonts ' + 'compatibily.' + ) + parser.add_argument( + '-b', + '--reference-out', + metavar='PATH', + type=_check_save_path, + help='reference out\n' + 'Output path for the reference font, when hinting multiple ' + 'fonts compatibily.' + ) + parser.add_argument( + '-a', + '--all', + action='store_true', + dest='hint_all_ufo', + help='hint all glyphs\n' + 'All glyphs get hinted even if:\n' + '- they have been hinted before, or\n' + '- the outlines in the default layer have not changed\n' + 'This is a UFO-only option.' + ) + parser.add_argument( + '-w', + '--write-to-default-layer', + action='store_true', + help='write hints to default layer. This is a UFO-only option.' + ) + parser.add_argument( + '-k', + '--keep-conflicts', + action='store_true', + help='When hinting a variable font keep a stem hint even when its ' + 'order inverts compared with another stem.' + ) + report_parser = parser.add_mutually_exclusive_group() + report_parser.add_argument( + '-c', + '--allow-changes', + action='store_true', + help='allow changes to the glyph outlines\n' + 'Paths are reordered to reduce hint substitution, and nearly ' + 'straight curves are flattened.' + ) + report_parser.add_argument( + '--report-only', + action='store_true', + help='process the font without modifying it' + ) + parser.add_argument( + '-d', + '--decimal', + action='store_true', + help='use decimal coordinates' + ) + parser.add_argument( + '--no-flex', + action='store_true', + help='suppress generation of flex commands' + ) + parser.add_argument( + '--no-hint-sub', + action='store_true', + help='suppress hint substitution' + ) + parser.add_argument( + '--no-zones-stems', + action='store_true', + help='allow the font to have no alignment zones nor stem widths' + ) + parser.add_argument( + '--fontinfo-file', + metavar='PATH', + type=_validate_path, + help='file containing hinting parameters\n' + f"Default: '{FONTINFO_FILE_NAME}'" + ) + parser.add_argument( + '--ignore-fontinfo', + action='store_true', + help='Ignore fontinfo files in the same directory as the font' + ) + fddict_parser = parser.add_mutually_exclusive_group() + fddict_parser.add_argument( + '--print-list-fddict', + action='store_true', + help='print the list of private dictionaries in the single font, ' + 'reference font, or default instance, whether defined in the ' + 'font or using fontinfo files, and the glyphs associated with ' + 'each' + ) + fddict_parser.add_argument( + '--print-all-fddict', + action='store_true', + help='print the list of private dictionaries for all fonts or ' + 'instances, whether defined in the font or using fontinfo ' + 'files, and the glyphs associated with each' + ) + parser.add_argument( + '--doc-fontinfo', + action=_AdditionalHelpAction, + help="show a description of the format for defining sets of " + "alternate alignment zones in a 'fontinfo' file and exit", + addl_help=FDDICT_DOC + ) + parser.add_argument( + '--info', + action=_AdditionalHelpAction, + help="show program's general info and exit", + addl_help=GENERAL_INFO + ) + parser.add_argument( + '--max-segments', + type=int, + default=100, + help="Don't hint glyph in dimension when more than this number " + "of segments are generated" + ) + parser.add_argument( + '--test', + action='store_true', + help="toggle settings needed for testing", + ) + + parsed_args = parser.parse_args(args) + + logging_conf(parsed_args.verbose, parsed_args.log_path) + + if (not len(parsed_args.font_paths or []) and + len(parsed_args.output_paths or [])): + # allow "otfautohint -o outputpath inputpath" + # see https://github.com/adobe-type-tools/psautohint/issues/129 + half = len(parsed_args.output_paths) // 2 + parsed_args.font_paths = [ + parsed_args.output_paths.pop(half) for _ in range(half)] + + if not len(parsed_args.font_paths): + parser.error( + f"the following arguments are required: {parser_fonts.metavar}") + + if (parsed_args.output_paths and + len(parsed_args.font_paths) != len(parsed_args.output_paths)): + parser.error("number of input and output fonts differ") + + if parsed_args.reference_font in parsed_args.font_paths: + parser.error("the reference font cannot also be a font input") + + if len(parsed_args.font_paths) != len(set(parsed_args.font_paths)): + parser.error("found duplicate font inputs") + + if parsed_args.reference_font: + all_font_paths = parsed_args.font_paths + [parsed_args.reference_font] + else: + all_font_paths = parsed_args.font_paths + + options = HintOptions(parsed_args) + + options.font_format = _validate_font_paths(all_font_paths, parser) + + handle_glyph_lists(options, parsed_args) + + if options.ignoreFontinfo: + pass + elif not parsed_args.fontinfo_file: + fontinfo_path = os.path.join(os.path.dirname(all_font_paths[0]), + FONTINFO_FILE_NAME) + if os.path.isfile(fontinfo_path): + _parse_fontinfo_file(options, fontinfo_path) + else: + options.fontinfoPath = parsed_args.fontinfo_file + _parse_fontinfo_file(options, parsed_args.fontinfo_file) + + return options, parsed_args + + +def main(args=None): + options, pargs = get_options(args) + + try: + hintFiles(options) + except Exception as ex: + if pargs.traceback: + raise + logging.error(ex) + return 1 + + +class ReportOptions(ACOptions): + def __init__(self, pargs): + super(ReportOptions, self).__init__() + self.hintAll = True + self.noFlex = True + self.allow_no_blues = True + self.logOnly = True + self.inputPaths = pargs.font_paths + self.outputPaths = pargs.output_paths + self.report_stems = not pargs.alignment_zones + self.report_zones = pargs.alignment_zones + self.report_all_stems = pargs.all_stems + self.verbose = pargs.verbose + if pargs.force_overlap: + self.overlapForcing = True + elif pargs.force_no_overlap: + self.overlapForcing = False + if pargs.processes: + self.process_count = pargs.processes + + +def get_stemhist_options(args): + parser = argparse.ArgumentParser( + formatter_class=_CustomHelpFormatter, + description='Stem and Alignment zones report for PostScript, ' + 'OpenType/CFF and UFO fonts.' + ) + add_common_options(parser, 'report') + parser.add_argument( + '-o', + '--output', + metavar='PATH', + nargs='+', + dest='output_paths', + type=_check_save_path, + help='When this is specified, the path argument is used as the base ' + 'path for the reports. Otherwise, the font file path is used as ' + 'the base path. Several reports are written, using the base path ' + 'name plus an extension.\n' + 'Without the -z option, the report files are:\n' + ' .hstm.txt The horizontal stems.\n' + ' .vstm.txt The vertical stems.\n' + 'With the -z option, the report files are:\n' + ' .top.txt The top zones.\n' + ' .bot.txt The bottom zones.' + ) + parser.add_argument( + '-z', + '--alignment-zones', + action='store_true', + dest='alignment_zones', + help='Print alignment zone report rather than stem report.' + ) + parser.add_argument( + '-a', + '--all', + action='store_true', + dest='all_stems', + help='Include stems formed by curved line segments; by default, ' + 'includes only stems formed by straight line segments.' + ) + parsed_args = parser.parse_args(args) + + logging_conf(parsed_args.verbose, parsed_args.log_path) + + if (parsed_args.output_paths and + len(parsed_args.font_paths) != len(parsed_args.output_paths)): + parser.error("number of input and output fonts differ") + + if len(parsed_args.font_paths) != len(set(parsed_args.font_paths)): + parser.error("found duplicate font inputs") + + options = ReportOptions(parsed_args) + + options.font_format = _validate_font_paths(parsed_args.font_paths, parser) + + handle_glyph_lists(options, parsed_args) + + return options, parsed_args + + +def stemhist(args=None): + options, pargs = get_stemhist_options(args) + + try: + hintFiles(options) + except Exception as ex: + if pargs.traceback: + raise + logging.error(ex) + return 1 + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/python/afdko/otfautohint/_version.py b/python/afdko/otfautohint/_version.py new file mode 100644 index 000000000..34faabe04 --- /dev/null +++ b/python/afdko/otfautohint/_version.py @@ -0,0 +1,4 @@ +# file generated by setuptools_scm +# don't change, don't track in version control +__version__ = version = '3.9.4.dev67+g0fda11a1.d20230324' +__version_tuple__ = version_tuple = (3, 9, 4, 'dev67', 'g0fda11a1.d20230324') diff --git a/python/afdko/otfautohint/autohint.py b/python/afdko/otfautohint/autohint.py new file mode 100644 index 000000000..380967b06 --- /dev/null +++ b/python/afdko/otfautohint/autohint.py @@ -0,0 +1,439 @@ +# Copyright 2016 Adobe. All rights reserved. + +# Methods: + +# Parse args. If glyphlist is from file, read in entire file as single string, +# and remove all white space, then parse out glyph-names and GID's. + +import logging +import os +import time +from collections import namedtuple +from threading import Thread +from multiprocessing import Pool, Manager, current_process + +from .otfFont import CFFFontData +from .ufoFont import UFOFontData +from .report import Report, GlyphReport +from .hinter import glyphHinter +from .logging import log_receiver +from .fdTools import FDDictManager + +from . import (get_font_format, FontParseError) + +log = logging.getLogger(__name__) + + +class ACOptions(object): + def __init__(self): + self.inputPaths = [] + self.outputPaths = [] + self.referenceFont = None + self.referenceOutputPath = None + self.glyphList = [] + # True when contents of glyphList were specified directly by the user + self.explicitGlyphs = False + self.nameAliases = {} + self.excludeGlyphList = False + self.overlapList = [] + self.overlapForcing = None + self.hintAll = False + self.readHints = True + self.allowChanges = False + self.noFlex = False + self.noHintSub = False + self.allow_no_blues = False + self.fontinfoPath = None + self.ignoreFontinfo = False + self.logOnly = False + self.removeConflicts = True + # Copy of parse_args verbose for child processes + self.verbose = 0 + self.printFDDictList = False + self.printAllFDDict = False + self.roundCoords = True + self.writeToDefaultLayer = False + # If this number of segments is exceeded in a dimension, don't hint + # (Only applies when explicitGlyphs is False) + self.maxSegments = 100 + self.font_format = None + self.report_zones = False + self.report_stems = False + self.report_all_stems = False + self.process_count = None + # False in these dictionaries indicates that there should be no + # warning if the glyph is missing + self.hCounterGlyphs = {'element': False, 'equivalence': False, + 'notelement': False, 'divide': False} + self.vCounterGlyphs = {'m': False, 'M': False, 'T': False, + 'ellipsis': False} + self.upperSpecials = {'questiondown': False, 'exclamdown': False, + 'semicolon': False} + self.lowerSpecials = {'question': False, 'exclam': False, + 'colon': False} + self.noBlues = {'at': False, 'bullet': False, 'copyright': False, + 'currency': False, 'registered': False} +# self.newHintsOnMoveto = {'percent': False, 'perthousand': False} + + def __str__(self): + # used only when debugging. + import inspect + data = [] + methodList = inspect.getmembers(self) + for fname, fvalue in methodList: + if fname[0] == "_": + continue + data.append(str((fname, fvalue))) + data.append("") + return os.linesep.join(data) + + def justReporting(self): + return self.report_zones or self.report_stems + + +def getGlyphNames(glyphTag, fontGlyphList, fDesc): + glyphNameList = [] + rangeList = glyphTag.split("-") + try: + prevGID = fontGlyphList.index(rangeList[0]) + except ValueError: + if len(rangeList) > 1: + log.warning("glyph ID <%s> in range %s from glyph selection " + "list option is not in font. <%s>.", + rangeList[0], glyphTag, fDesc) + else: + log.warning("glyph ID <%s> from glyph selection list option " + "is not in font. <%s>.", rangeList[0], fDesc) + return None + glyphNameList.append(fontGlyphList[prevGID]) + + for glyphTag2 in rangeList[1:]: + try: + gid = fontGlyphList.index(glyphTag2) + except ValueError: + log.warning("glyph ID <%s> in range %s from glyph selection " + "list option is not in font. <%s>.", + glyphTag2, glyphTag, fDesc) + return None + for i in range(prevGID + 1, gid + 1): + glyphNameList.append(fontGlyphList[i]) + prevGID = gid + + return glyphNameList + + +def filterGlyphList(options, fontGlyphList, fDesc): + """ + Returns the list of glyphs which are in the intersection of the argument + list and the glyphs in the font. + """ + if not options.glyphList: + glyphList = fontGlyphList + else: + # expand ranges: + glyphList = [] + for glyphTag in options.glyphList: + glyphNames = getGlyphNames(glyphTag, fontGlyphList, fDesc) + if glyphNames is not None: + glyphList.extend(glyphNames) + if options.excludeGlyphList: + glyphList = [n for n in fontGlyphList if n not in glyphList] + return glyphList + + +def get_glyph(options, font, name): + try: + gl = font.convertToGlyphData(name, options.readHints, # stems + options.readHints, # flex + options.roundCoords, + options.hintAll) + if gl is None or gl.isEmpty(): + log.info("Skipping glyph %s: no data from convertToGlyphData" % + name) + return None + return gl + except KeyError: + # Source fonts may be sparse, e.g. be a subset of the + # reference font. + return None + + +FontInstance = namedtuple("FontInstance", "font inpath outpath") + + +def setUniqueDescs(fontInstances): + descs = [f.font.getPSName() for f in fontInstances] + if None in descs or '' in descs or len(descs) != len(set(descs)): + if len(fontInstances) == 1: + # Don't add a substantive instance path when hinting one font + fontInstances[0].font.desc = '' + return + descs = [f.inpath for f in fontInstances] + try: + prefix = os.path.commonpath(descs) + descs = [os.path.relpath(p, prefix) for p in descs] + while True: + dn = [os.path.dirname(p) for p in descs] + if len(set(os.path.basename(p) for p in descs)) == 1: + descs = dn + else: + break + except ValueError: + pass + for f, d in zip(fontInstances, descs): + f.font.desc = d + + +class fontWrapper: + """ + Stores references to one or more related instance font objects. + Extracts glyphs from those objects by name, hints them, and + stores the result back those objects. Optionally saves the + modified glyphs in corresponding output font files. + """ + def __init__(self, options, fil): + self.options = options + self.fontInstances = fil + setUniqueDescs(fil) + if len(fil) > 1: + self.isVF = False + else: + self.isVF = (hasattr(fil[0].font, 'ttFont') and + 'fvar' in fil[0].font.ttFont) + self.reportOnly = options.justReporting() + assert not self.reportOnly or (not self.isVF and len(fil) == 1) + self.notFound = 0 + self.glyphNameList = filterGlyphList(options, + fil[0].font.getGlyphList(), + fil[0].font.desc) + if not self.glyphNameList: + raise FontParseError("Selected glyph list is empty for " + + "font <%s>." % fil[0].font.desc) + self.dictManager = FDDictManager(options, fil, self.glyphNameList, + self.isVF) + + def numGlyphs(self): + return len(self.glyphNameList) + + def hintStatus(self, name, hgt): + an = self.options.nameAliases.get(name, name) + if hgt is None: + log.warning("%s: Could not hint!", an) + return False + hs = [g.hasHints(both=True) for g in hgt if g is not None] + if False in hs: + if len(hgt) == 1: + log.info("%s: No hints added!", an) + return False + elif True in hs: + log.info("%s: Hints only added to some instances!", an) + return True + else: + log.info("%s: No hints added to any instances!", an) + return False + return True + + class glyphiter: + def __init__(self, parent): + self.fw = parent + self.gnit = parent.glyphNameList.__iter__() + self.notFound = 0 + + def __next__(self): + # gnit's StopIteration exception stops this iteration + vi = 0 + stillLooking = True + while stillLooking: + stillLooking = False + name = self.gnit.__next__() + if self.fw.reportOnly and name == '.notdef': + stillLooking = True + continue + if self.fw.isVF: + gt, vi = self.fw.fontInstances[0].font.get_vf_glyphs(name) + else: + gt = tuple((get_glyph(self.fw.options, f.font, name) + for f in self.fw.fontInstances)) + if True not in (g is not None for g in gt): + self.notFound += 1 + stillLooking = True + self.fw.notFound = self.notFound + return name, gt, self.fw.dictManager.getRecKey(name, vi) + + def __iter__(self): + return self.glyphiter(self) + + def hint(self): + hintedAny = False + + report = Report() if self.reportOnly else None + + pcount = self.options.process_count + if pcount is None: + pcount = os.cpu_count() + if pcount < 0: + pcount = os.cpu_count() - pcount + if pcount < 0: + pcount = 1 + if pcount > self.numGlyphs(): + pcount = self.numGlyphs() + + if pcount > 1 and current_process().daemon: + pcount = 1 + if self.options.process_count is not None: + log.warning("Program was already spawned by a different " + + "python process: running as single process") + + pool = None + lt = None + try: + dictRecord = self.dictManager.getDictRecord() + if pcount == 1: + glyphHinter.initialize(self.options, dictRecord) + gmap = map(glyphHinter.hint, self) + else: + # set_start_method('spawn') + manager = Manager() + logQueue = manager.Queue(-1) + lt = Thread(target=log_receiver, args=(logQueue,)) + lt.start() + pool = Pool(pcount, initializer=glyphHinter.initialize, + initargs=(self.options, dictRecord, + logQueue)) + if report is not None: + # Retain glyph ordering for reporting purposes + gmap = pool.imap(glyphHinter.hint, self) + else: + gmap = pool.imap_unordered(glyphHinter.hint, self) + + for name, r in gmap: + if isinstance(r, GlyphReport): + if report is not None: + report.glyphs[name] = r + else: + hasHints = self.hintStatus(name, r) + if r is None: + r = [None] * len(self.fontInstances) + if not self.options.logOnly: + if hasHints: + hintedAny = True + font = self.fontInstances[0].font + for i, new_glyph in enumerate(r): + if i > 0 and not self.isVF: + font = self.fontInstances[i].font + font.updateFromGlyph(new_glyph, name) + if self.isVF: + font.merge_hinted_glyphs(name) + + if self.notFound: + log.info("Skipped %s of %s glyphs.", self.notFound, + self.numGlyphs()) + + if report is not None: + report.save(self.fontInstances[0].outpath, self.options) + elif not hintedAny: + log.info("No glyphs were hinted.") + + if pool is not None: + pool.close() + pool.join() + logQueue.put(None) + lt.join() + finally: + if pool is not None: + pool.terminate() + pool.join() + if lt is not None: + logQueue.put(None) + lt.join() + + return hintedAny + + def save(self): + for f in self.fontInstances: + log.info("Saving font file %s with new hints..." % f.outpath) + f.font.save(f.outpath) + + def close(self): + for f in self.fontInstances: + log.info("Closing font file %s without saving." % f.outpath) + f.font.close() + + +def openFont(path, options): + font_format = get_font_format(path) + if font_format is None: + raise FontParseError(f"{path} is not a supported font format") + + if font_format == "UFO": + font = UFOFontData(path, options.logOnly, options.writeToDefaultLayer) + else: + font = CFFFontData(path, font_format) + + return font + + +def get_outpath(options, font_path, i): + if i == 'r': + if options.referenceOutputPath is not None: + outpath = options.referenceOutputPath + else: + outpath = font_path + else: + if options.outputPaths is not None and i < len(options.outputPaths): + outpath = options.outputPaths[i] + else: + outpath = font_path + return outpath + + +def hintFiles(options): + fontInstances = [] + # If there is a reference font, prepend it to font paths. + # It must be the first font in the list, code below assumes that. + if options.referenceFont: + font = openFont(options.referenceFont, options) + if hasattr(font, 'ttFont'): + assert 'fvar' not in font.ttFont, ("Can't use a CFF2 VF font as a " + "default font in a set of MM " + "fonts.") + fontInstances.append(FontInstance(font, + os.path.abspath(options.referenceFont), + get_outpath(options, options.referenceFont, 'r'))) + + # Open the rest of the fonts and handle output paths. + for i, path in enumerate(options.inputPaths): + fontInstances.append(FontInstance(openFont(path, options), + os.path.abspath(path), + get_outpath(options, path, i))) + + noFlex = options.noFlex + if fontInstances and options.referenceFont: + log.info("Hinting fonts with reference %s. Start time: %s.", + fontInstances[0].font.desc, time.asctime()) + if fontInstances[0].font.isCID(): + options.noFlex = True + fw = fontWrapper(options, fontInstances) + if fw.hint(): + fw.save() + else: + fw.close() + log.info("Done hinting fonts with reference %s. End time: %s.", + fontInstances[0].font.desc, time.asctime()) + else: + for fi in fontInstances: + log.info("Hinting font %s. Start time: %s.", fi.font.desc, + time.asctime()) + if fi[0].isCID(): + options.noFlex = True # Flex hinting in CJK fonts does + # bad things. For CFF fonts, being a CID font is a good + # indicator of being CJK. + else: + options.noFlex = noFlex + fw = fontWrapper(options, [fi]) + if fw.hint(): + fw.save() + else: + fw.close() + log.info("Done hinting font %s. End time: %s.", fi.font.desc, + time.asctime()) diff --git a/python/afdko/otfautohint/fdTools.py b/python/afdko/otfautohint/fdTools.py new file mode 100644 index 000000000..6db257b18 --- /dev/null +++ b/python/afdko/otfautohint/fdTools.py @@ -0,0 +1,809 @@ +# Copyright 2014 Adobe. All rights reserved. + +""" +Tools for processing "fontinfo" files. See "otfautohint --doc-fddict", or the +MakeOTF user guide for details on this format. + +The "fontinfo" file is expected to be in the same directory as the input +font file. +""" + +import logging +import re +import numbers +import sys +import os + + +log = logging.getLogger(__name__) + +# Tokens seen in font info file that are not +# part of a FDDict or GlyphSet definition. +kBeginToken = "begin" +kEndToken = "end" +kFDDictToken = "FDDict" +kGlyphSetToken = "GlyphSet" +kFinalDictName = "FinalFont" +kDefaultDictName = "No Alignment Zones" +kBaseStateTokens = [ + "FontName", + "FullName", + "IsBoldStyle", + "IsItalicStyle", + "ConvertToCID", + "PreferOS/2TypoMetrics", + "IsOS/2WidthWeigthSlopeOnly", + "IsOS/2OBLIQUE", + "UseOldNameID4", + "LicenseCode" +] +kBlueValueKeys = [ + "BaselineOvershoot", # 0 + "BaselineYCoord", # 1 + "CapHeight", # 2 + "CapOvershoot", # 3 + "LcHeight", # 4 + "LcOvershoot", # 5 + "AscenderHeight", # 6 + "AscenderOvershoot", # 7 + "FigHeight", # 8 + "FigOvershoot", # 9 + "Height5", # 10 + "Height5Overshoot", # 11 + "Height6", # 12 + "Height6Overshoot", # 13 +] + +kFamilyValueKeys = ['Family' + i for i in kBlueValueKeys] + +kOtherBlueValueKeys = [ + "Baseline5Overshoot", # 0 + "Baseline5", # 1 + "Baseline6Overshoot", # 2 + "Baseline6", # 3 + "SuperiorOvershoot", # 4 + "SuperiorBaseline", # 5 + "OrdinalOvershoot", # 6 + "OrdinalBaseline", # 7 + "DescenderOvershoot", # 8 + "DescenderHeight", # 9 +] + +kOtherFamilyValueKeys = ['Family' + i for i in kOtherBlueValueKeys] + +kOtherFDDictKeys = [ + "FontName", + "OrigEmSqUnits", + "LanguageGroup", + "DominantV", + "DominantH", + "FlexOK", + "VCounterChars", + "HCounterChars", + "BlueFuzz" +] + +kFontDictBluePairsName = "BlueValuesPairs" +kFontDictOtherBluePairsName = "OtherBlueValuesPairs" +kFontDictFamilyPairsName = "FamilyValuesPairs" +kFontDictOtherFamilyPairsName = "OtherFamilyValuesPairs" + +kRunTimeFDDictKeys = [ + "DictName", + kFontDictBluePairsName, + kFontDictOtherBluePairsName, + kFontDictFamilyPairsName, + kFontDictOtherFamilyPairsName, +] + +kFDDictKeys = (kOtherFDDictKeys + + kBlueValueKeys + + kOtherBlueValueKeys + + kFamilyValueKeys + + kOtherFamilyValueKeys + + kRunTimeFDDictKeys) +kFontInfoKeys = (kOtherFDDictKeys + + kBlueValueKeys + + kOtherBlueValueKeys + + kFamilyValueKeys + + kOtherFamilyValueKeys + + ["StemSnapH", "StemSnapV"]) + + +class FontInfoParseError(ValueError): + pass + + +class FDDict: + def __init__(self, fdIndex, dictName=None, fontName=None): + self.fdIndex = fdIndex + for key in kFDDictKeys: + setattr(self, key, None) + if dictName is not None: + self.DictName = dictName + else: + self.DictName = "FDArray[%s]" % fdIndex + self.FontName = fontName + self.FlexOK = True + setattr(self, kFontDictBluePairsName, []) + setattr(self, kFontDictOtherBluePairsName, []) + setattr(self, kFontDictFamilyPairsName, []) + setattr(self, kFontDictOtherFamilyPairsName, []) + + def __str__(self): + a = '' + for k, v in vars(self).items(): + if k not in kFontInfoKeys or v is None: + continue + if k == 'FontName': + continue + if isinstance(v, list): + v = '[%s]' % ' '.join((str(i) for i in v)) + elif v is False: + v = 'false' + elif v is True: + v = 'true' + elif not isinstance(v, str): + v = str(v) + a += "%s %s\n" % (k, v) + return a + + def setInfo(self, key, value): + if key == 'LanguageGroup': + if ((isinstance(value, numbers.Number) and value == 1) or + value == '1'): + value = 1 + else: + value = 0 + elif key in ('DominantV', 'DominantH'): + if type(value) == list: + value = [int(v) for v in value] + else: + value = [int(value)] + elif key == 'FlexOK': + if value is None: + value = True # default + elif value == 'false': + value = False + else: + value = bool(value) + elif key in ('VCounterChars', 'HCounterChars'): + pass # already formatted in __main__::_parse_fontinfo_file + elif key in ('FontName', 'DictName'): + pass # keep the string + elif value is not None: + value = int(value) + + setattr(self, key, value) + + def buildBlueLists(self): + log.info("Building BlueValue lists for FDDict %s" % self.DictName) + if self.BaselineOvershoot is None: + raise FontInfoParseError( + "FDDict definition %s is missing the BaselineYCoord/" + "BaselineOvershoot values. These are required." % + self.DictName) + elif int(self.BaselineOvershoot) > 0: + raise FontInfoParseError( + "The BaselineYCoord/BaselineOvershoot in FDDict definition %s " + "must be a bottom zone - the BaselineOvershoot must be " + "negative, not positive." % self.DictName) + + blueKeyList = [kBlueValueKeys, + kOtherBlueValueKeys, + kFamilyValueKeys, + kOtherFamilyValueKeys] + bluePairListNames = [kFontDictBluePairsName, + kFontDictOtherBluePairsName, + kFontDictFamilyPairsName, + kFontDictOtherFamilyPairsName] + for i in range(4): + keyList = blueKeyList[i] + pairFieldName = bluePairListNames[i] + bluePairList = [] + for key in keyList: + if key.endswith("Overshoot"): + width = getattr(self, key) + if width is not None: + baseName = key[:-len("Overshoot")] + zonePos = None + if key == "BaselineOvershoot": + zonePos = self.BaselineYCoord + tempKey = "BaselineYCoord" + elif key == "FamilyBaselineOvershoot": + zonePos = self.FamilyBaselineYCoord + tempKey = "FamilyBaselineYCoord" + else: + for posSuffix in ["", "Height", "Baseline"]: + tempKey = "%s%s" % (baseName, posSuffix) + value = getattr(self, tempKey, None) + if value is not None: + zonePos = value + break + if zonePos is None: + raise FontInfoParseError( + "Failed to find fontinfo FDDict %s top/bottom " + "zone name %s to match the zone width key '%s'" + "." % (self.DictName, tempKey, key)) + if width < 0: + topPos = zonePos + bottomPos = zonePos + width + isBottomZone = 1 + if (i == 0) and (key != "BaselineOvershoot"): + raise FontInfoParseError( + "FontDict %s. Zone %s is a top zone, and " + "the width (%s) must be positive." % + (self.DictName, tempKey, width)) + elif ((i == 2) and + (key != "FamilyBaselineOvershoot")): + raise FontInfoParseError( + "FontDict %s. Zone %s is a top zone, and " + "the width (%s) must be positive." % + (self.DictName, tempKey, width)) + else: + bottomPos = zonePos + topPos = zonePos + width + isBottomZone = 0 + if i == 1 and width > 0: + raise FontInfoParseError( + "FontDict %s. Zone %s is a bottom zone, " + "and so the width (%s) must be negative." % + (self.DictName, tempKey, width)) + bluePairList.append((topPos, bottomPos, tempKey, + self.DictName, isBottomZone)) + log.debug("%s BlueValue %s: (%g, %g)" % + ('Bottom' if isBottomZone else 'Top', + tempKey, bottomPos, topPos)) + if bluePairList: + bluePairList = sorted(bluePairList) + prevPair = bluePairList[0] + zoneBuffer = 2 * self.BlueFuzz + 1 + for pair in bluePairList[1:]: + if prevPair[0] > pair[1]: + raise FontInfoParseError( + "In FDDict %s. The top of zone %s at %s overlaps " + "zone %s with the bottom at %s." % + (self.DictName, prevPair[2], prevPair[0], pair[2], + pair[1])) + elif abs(pair[1] - prevPair[0]) <= zoneBuffer: + raise FontInfoParseError( + "In FDDict %s. The top of zone %s at %s is within " + "the min separation limit (%s units) of zone %s " + "with the bottom at %s." % + (self.DictName, prevPair[2], prevPair[0], + zoneBuffer, pair[2], pair[1])) + prevPair = pair + setattr(self, pairFieldName, bluePairList) + return + + def __repr__(self): + fddict = {k: v for k, v in vars(self).items() if v is not None} + return "<%s '%s' %s>" % ( + self.__class__.__name__, fddict.get('DictName', 'no name'), fddict) + + +def parseFontInfoFile(fdArrayMap, data, glyphList, maxY, minY, fontName): + # fontDictList may or may not already contain a + # font dict taken from the source font top FontDict. + # The map of glyph names to font dict: the index into fontDictList. + fdSelectMap = {} + # The user-specified set of blue values to write into the output font, + # some sort of merge of the individual font dicts. May not be supplied. + finalFDict = None + setName = None + + glyphSetSet = set() + + blueFuzz = fdArrayMap[0].BlueFuzz + + # Get rid of comments. + data = re.sub(r"#[^\r\n]+[\r\n]", "", data) + + # We assume that no items contain whitespace. + tokenList = data.split() + numTokens = len(tokenList) + i = 0 + baseState = 0 + inValue = 1 + inDictValue = 2 + dictState = 3 + glyphSetState = 4 + fdIndexDict = {} + assert tuple(fdArrayMap.keys()) == (0,) + maxfdIndex = max(fdArrayMap.keys()) + dictValueList = [] + dictKeyWord = '' + + state = baseState + + while i < numTokens: + token = tokenList[i] + i += 1 + if state == baseState: + if token == kBeginToken: + token = tokenList[i] + i += 1 + if token == kFDDictToken: + state = dictState + dictName = tokenList[i] + i += 1 + if dictName == kFinalDictName: + # This is dict is NOT used to hint any glyphs; it is + # used to supply the merged alignment zones and stem + # widths for the final font. + if finalFDict is None: + finalFDict = FDDict(maxfdIndex + 1, + dictName=dictName) + fdDict = finalFDict + else: + if dictName not in fdIndexDict: + fdDict = FDDict(maxfdIndex + 1, dictName=dictName) + # save dict and FDIndex. + maxfdIndex += 1 + fdIndexDict[dictName] = maxfdIndex + fdArrayMap[maxfdIndex] = fdDict + else: + fdDict = fdArrayMap[fdIndexDict[dictName]] + + elif token == kGlyphSetToken: + state = glyphSetState + setName = tokenList[i] + if setName in glyphSetSet: + raise FontInfoParseError( + "Duplicate GlyphSet \"%s\"" % setName) + else: + glyphSetSet.add(setName) + i += 1 + else: + raise FontInfoParseError( + "Unrecognized token after \"begin\" keyword: %s" % + token) + + elif token in kBaseStateTokens: + # Discard value for base token. + token = tokenList[i] + i += 1 + if (token[0] in ["[", "("]) and (not token[-1] in ["]", ")"]): + state = inValue + else: + raise FontInfoParseError( + "Unrecognized token in base state: %s" % token) + + elif state == inValue: + # We are processing a list value for a base state token. + if token[-1] in ["]", ")"]: + state = baseState # found the last token in the list value. + + elif state == inDictValue: + if token[-1] in ["]", ")"]: + dictValueList.append(token[:-1]) + fdDict.setInfo(dictKeyWord, dictValueList) + state = dictState # found the last token in the list value. + else: + dictValueList.append(token) + + elif state == glyphSetState: + # "end GlyphSet" marks end of set, + # else we are adding a new glyph name. + if (token == kEndToken) and tokenList[i] == kGlyphSetToken: + if tokenList[i + 1] != setName: + raise FontInfoParseError( + "End glyph set name \"%s\" does not match begin glyph " + "set name \"%s\"." % (tokenList[i + 1], setName)) + state = baseState + i += 2 + setName = None + else: + # Need to add matching glyphs. + gi = 0 + for gname in glyphList: + if re.search(token, gname): + # fdIndex value + fdSelectMap[gname] = fdIndexDict[setName] + gi += 1 + + elif state == dictState: + # "end FDDict" marks end of set, + # else we are adding a new glyph name. + if (token == kEndToken) and tokenList[i] == kFDDictToken: + if tokenList[i + 1] != dictName: + raise FontInfoParseError( + "End FDDict name \"%s\" does not match begin FDDict " + "name \"%s\"." % (tokenList[i + 1], dictName)) + state = baseState + i += 2 + dictName = None + fdDict = None + else: + if token in kFDDictKeys: + value = tokenList[i] + i += 1 + if value[0] in ["[", "("]: + if not value[-1] in ["]", ")"]: + state = inDictValue + dictValueList = [value[1:]] + dictKeyWord = token + else: + fdDict.setInfo(token, value[1:-1]) + else: + fdDict.setInfo(token, value) + else: + raise FontInfoParseError( + "FDDict key \"%s\" in fdDict named \"%s\" is not " + "recognized." % (token, dictName)) + + for dictName, fdIndex in fdIndexDict.items(): + fdDict = fdArrayMap[fdIndex] + if fdDict.DominantH is None: + log.warning("The FDDict '%s' in fontinfo has no " + "DominantH value", dictName) + if fdDict.DominantV is None: + log.warning("The FDDict '%s' in fontinfo has no " + "DominantV value", dictName) + if fdDict.BlueFuzz is None: + fdDict.BlueFuzz = blueFuzz + fdDict.buildBlueLists() + if fdDict.FontName is None: + fdDict.FontName = fontName + + if fdIndexDict: + # There are some FDDict definitions. This means that we need + # to fix the default fontDict, inherited from the source font, + # so that it has blues zones that will not affect hinting, + # e.g outside of the Font BBox. We do this becuase if there are + # glyphs which are not assigned toa user specified font dict, + # it is becuase it doesn't make sense to provide alignment zones + # for the glyph. Since otfautohint does require at least one bottom + # zone and one top zone, we add one bottom and one top zone that are + # outside the font BBox, so that hinting won't be affected by them. + for gname in glyphList: + if gname not in fdSelectMap: + fdSelectMap[gname] = 0 + defaultFDDict = fdArrayMap[0] + for key in kBlueValueKeys + kOtherBlueValueKeys: + defaultFDDict.setInfo(key, None) + defaultFDDict.BaselineYCoord = minY - 100 + defaultFDDict.BaselineOvershoot = 0 + defaultFDDict.CapHeight = maxY + 100 + defaultFDDict.CapOvershoot = 0 + defaultFDDict.BlueFuzz = 0 + defaultFDDict.DictName = kDefaultDictName # "No Alignment Zones" + defaultFDDict.FontName = fontName + defaultFDDict.buildBlueLists() + + return fdSelectMap, finalFDict + + +def mergeFDDicts(prevDictList): + # Extract the union of the stem widths and zones from the list + # of FDDicts, and replace the current values in the topDict. + blueZoneDict = {} + otherBlueZoneDict = {} + dominantHDict = {} + dominantVDict = {} + bluePairListNames = [kFontDictBluePairsName, kFontDictOtherBluePairsName] + zoneDictList = [blueZoneDict, otherBlueZoneDict] + for prefDDict in prevDictList: + if prefDDict is None: + continue + for ki in [0, 1]: + zoneDict = zoneDictList[ki] + bluePairName = bluePairListNames[ki] + bluePairList = getattr(prefDDict, bluePairName) + if not bluePairList: + continue + for topPos, bottomPos, zoneName, _, isBottomZone in bluePairList: + zoneDict[(topPos, bottomPos)] = (isBottomZone, zoneName, + prefDDict.DictName) + # Now for the stem widths. + stemNameList = ["DominantH", "DominantV"] + stemDictList = [dominantHDict, dominantVDict] + for wi in (0, 1): + stemFieldName = stemNameList[wi] + dList = getattr(prefDDict, stemFieldName) + stemDict = stemDictList[wi] + if dList is not None: + for width in dList: + stemDict[width] = prefDDict.DictName + + # Now we have collected all the stem widths and zones + # from all the dicts. See if we can merge them. + goodBlueZoneList = [] + goodOtherBlueZoneList = [] + goodHStemList = [] + goodVStemList = [] + + zoneDictList = [blueZoneDict, otherBlueZoneDict] + goodZoneLists = [goodBlueZoneList, goodOtherBlueZoneList] + stemDictList = [dominantHDict, dominantVDict] + goodStemLists = [goodHStemList, goodVStemList] + + for ki in [0, 1]: + zoneDict = zoneDictList[ki] + goodZoneList = goodZoneLists[ki] + stemDict = stemDictList[ki] + goodStemList = goodStemLists[ki] + + # Zones first. + zoneList = zoneDict.keys() + if not zoneList: + continue + zoneList = sorted(zoneList) + # Now check for conflicts. + prevZone = zoneList[0] + goodZoneList.append(prevZone[1]) + goodZoneList.append(prevZone[0]) + zoneBuffer = 2 * prefDDict.BlueFuzz + 1 + for zone in zoneList[1:]: + curEntry = zoneDict[zone] + prevEntry = zoneDict[prevZone] + zoneName = curEntry[1] + fdDictName = curEntry[2] + prevZoneName = prevEntry[1] + prevFDictName = prevEntry[2] + + if zone[1] < prevZone[0]: + log.warning("For final FontDict, skipping zone %s in FDDict %s" + " because it overlaps with zone %s in FDDict %s.", + zoneName, fdDictName, prevZoneName, prevFDictName) + elif abs(zone[1] - prevZone[0]) <= zoneBuffer: + log.warning("For final FontDict, skipping zone %s in FDDict %s" + " because it is within the minimum separation " + "allowed (%s units) of %s in FDDict %s.", + zoneName, fdDictName, zoneBuffer, prevZoneName, + prevFDictName) + else: + goodZoneList.append(zone[1]) + goodZoneList.append(zone[0]) + + prevZone = zone + + stemList = stemDict.keys() + if not stemList: + continue + stemList = sorted(stemList) + # Now check for conflicts. + prevStem = stemList[0] + goodStemList.append(prevStem) + for stem in stemList[1:]: + if abs(stem - prevStem) < 2: + log.warning("For final FontDict, skipping stem width %s in " + "FDDict %s because it overlaps in coverage with " + "stem width %s in FDDict %s.", + stem, stemDict[stem], prevStem, stemDict[prevStem]) + else: + goodStemList.append(stem) + prevStem = stem + privateMap = {} + if goodBlueZoneList: + privateMap['BlueValues'] = goodBlueZoneList + if goodOtherBlueZoneList: + privateMap['OtherBlues'] = goodOtherBlueZoneList + else: + privateMap['OtherBlues'] = None + if goodHStemList: + privateMap['StemSnapH'] = goodHStemList + else: + privateMap['StemSnapH'] = None + if goodVStemList: + privateMap['StemSnapV'] = goodVStemList + else: + privateMap['StemSnapV'] = None + return privateMap + + +def fontinfoIncludeData(fdir, idir, match): + incrpath = match.group(1) + incpath = os.path.join(fdir, incrpath) + if os.path.isfile(incpath): + with open(incpath, "r", encoding="utf-8") as ii: + return ii.read() + if idir is not None: + incpath = os.path.join(idir, incrpath) + if os.path.isfile(incpath): + with open(incpath, "r", encoding="utf-8") as ii: + return ii.read() + raise FontInfoParseError("fontinfo include file \"%s\" not found" % + incrpath) + + +def fontinfoFileData(options, font): + # Don't use fontinfo file for a variable font + if not font.isVF(): + fdir = os.path.dirname(font.getInputPath()) + if options.fontinfoPath is not None: + idir = os.path.dirname(options.fontinfoPath) + srcFontInfo = options.fontinfoPath + else: + idir = None + srcFontInfo = os.path.join(fdir, "fontinfo") + if os.path.isfile(srcFontInfo): + with open(srcFontInfo, "r", encoding="utf-8") as fi: + fontInfoData = fi.read() + # Process includes + subsMade = 1 + while subsMade > 0: + fontInfoData, subsMade = re.subn( + r"^include (.*)$", + lambda m: fontinfoIncludeData(fdir, idir, m), + fontInfoData, 0, re.M) + fontInfoData = re.sub(r"#[^\r\n]+", "", fontInfoData) + return fontInfoData, 'FDDict' in fontInfoData + return None, None + + +def getFDInfo(font, desc, options, glyphList, isVF): + privateMap = None + # Check the fontinfo file, and add any other font dicts + srcFontinfoData, hasDict = fontinfoFileData(options, font) + if hasDict and not options.ignoreFontinfo: + # Get the default fontinfo from the font's top dict. + fdDict = font.getPrivateFDDict(options.allow_no_blues, + options.noFlex, + options.vCounterGlyphs, + options.hCounterGlyphs, desc) + fdArrayMap = {0: fdDict} + minY, maxY = font.get_min_max(fdDict.OrigEmSqUnits) + fdSelectMap, finalFDict = parseFontInfoFile( + fdArrayMap, srcFontinfoData, glyphList, maxY, minY, desc) + if finalFDict is None: + # If a font dict was not explicitly specified for the + # output font, use the first user-specified font dict. + fontDictList = [v for k, v in sorted(fdArrayMap.items())] + privateMap = mergeFDDicts(fontDictList[1:]) + else: + privateMap = mergeFDDicts([finalFDict]) + elif isVF: + fdSelectMap = {} + dictRecord = {} + fdArraySet = set() + for name in glyphList: + fdIndex = font.getfdIndex(name) + if fdIndex is None: + continue + if fdIndex not in fdArraySet: + fddict, model = font.getPrivateFDDict(options.allow_no_blues, + options.noFlex, + options.vCounterGlyphs, + options.hCounterGlyphs, + desc, fdIndex) + fdArraySet.add(fdIndex) + if model not in dictRecord: + dictRecord[model] = {} + dictRecord[model][fdIndex] = fddict + fdSelectMap[name] = fdIndex + return fdSelectMap, dictRecord, None + else: + fdSelectMap = {} + fdArrayMap = {} + for name in glyphList: + fdIndex = font.getfdIndex(name) + if fdIndex is None: + continue + if fdIndex not in fdArrayMap: + fddict = font.getPrivateFDDict(options.allow_no_blues, + options.noFlex, + options.vCounterGlyphs, + options.hCounterGlyphs, + desc, fdIndex) + fdArrayMap[fdIndex] = fddict + fdSelectMap[name] = fdIndex + + return fdSelectMap, fdArrayMap, privateMap + + +class FDDictManager: + def __init__(self, options, fontInstances, glyphList, isVF=False): + self.options = options + self.fontInstances = fontInstances + self.glyphList = glyphList + self.isVF = isVF + self.fdSelectMap = None + self.auxRecord = {} + refI = fontInstances[0] + fdArrayCompat = True + fdArrays = [] + assert not isVF or len(fontInstances) == 1 + + for i in fontInstances: + (fdSelectMap, fdArrayMap, + privateMap) = getFDInfo(i.font, i.font.desc, options, + glyphList, isVF) + if isVF: + self.fdSelectMap = fdSelectMap + self.dictRecord = fdArrayMap + else: + fdArrays.append(fdArrayMap) + if self.fdSelectMap is None: + self.fdSelectMap = fdSelectMap + elif not self.addDict(self.fdSelectMap, fdSelectMap): + log.error("FDDict indexes for font %s " % i.font.desc + + ("different from those in font %s" % + refI.font.desc)) + fdArrayCompat = False + if privateMap is not None: + # XXX make this decision more selective + i.font.mergePrivateMap(privateMap) + + if not isVF: + if fdArrayCompat: + fdmap = {} + for fdIndex in fdArrays[0].keys(): + fdmap[fdIndex] = [x[fdIndex] if fdIndex in x else None + for x in fdArrays] + self.dictRecord = {0: fdmap} + else: + log.error("Cannot continue") + sys.exit() + + if options.printFDDictList or options.printAllFDDict: + # Print the user defined FontDicts, and exit. + print("Private Dictionaries:\n") + for model, fda in self.dictRecord.items(): + for fdIndex, fdl in fda.items(): + for fontDict in fdl: + if fontDict is None: + continue + print(fontDict.FontName) + print(fontDict.DictName) + print(str(fontDict)) + gnameList = [gn for gn, fi in self.fdSelectMap.items() + if fdIndex == fi] + print("%d glyphs:" % len(gnameList)) + if len(gnameList) > 0: + gTxt = " ".join(gnameList) + else: + gTxt = "None" + print(gTxt + "\n") + if not options.printAllFDDict: + break + elif len(set(self.fdSelectMap.keys())) > 1: + log.info("Using different FDDicts for some glyphs.") + + self.checkGlyphList() + + def getDictRecord(self): + return self.dictRecord + + def getRecKey(self, gname, vsindex): + fdIndex = self.fdSelectMap[gname] + if vsindex in self.dictRecord and fdIndex in self.dictRecord[vsindex]: + return vsindex, fdIndex + assert self.isVF + if vsindex not in self.auxRecord: + self.auxRecord[vsindex] = {} + elif fdIndex in self.auxRecord[vsindex]: + return self.auxRecord[vsindex][fdIndex] + f = self.fontInstances[0] + fddict, _ = f.font.getPrivateFDDict(self.options.allow_no_blues, + self.options.noFlex, + self.options.vCounterGlyphs, + self.options.hCounterGlyphs, + f.font.desc, fdIndex, vsindex) + self.auxRecord[vsindex][fdIndex] = fddict + return fddict + + def checkGlyphList(self): + options = self.options + glyphSet = set(self.glyphList) + # Check for missing glyphs explicitly added via fontinfo or cmd line + for label, charDict in [("hCounterGlyphs", options.hCounterGlyphs), + ("vCounterGlyphs", options.vCounterGlyphs), + ("upperSpecials", options.upperSpecials), + ("lowerSpecials", options.lowerSpecials), + ("noBlues", options.noBlues)]: + for name in (n for n, w in charDict.items() + if w and n not in glyphSet): + log.warning("%s glyph named in fontinfo is " % label + + "not in font: %s" % name) + + def addDict(self, dict1, dict2): + # This allows for sparse masters, just verifying that if a glyph name + # is in both dictionaries it maps to the same index. + good = True + for k, v in dict2.items(): + if k not in dict1: + dict1[k] = v + elif v != dict1[k]: + good = False + return good diff --git a/python/afdko/otfautohint/glyphData.py b/python/afdko/otfautohint/glyphData.py new file mode 100644 index 000000000..e6895d634 --- /dev/null +++ b/python/afdko/otfautohint/glyphData.py @@ -0,0 +1,1450 @@ +# Copyright 2021 Adobe. All rights reserved. + +""" +Internal representation of a T2 CharString glyph with hints +""" + +import numbers +import threading +import operator +from copy import deepcopy +from math import sqrt +from collections import defaultdict +from builtins import tuple as _tuple +from fontTools.misc.bezierTools import (solveQuadratic, solveCubic, + calcCubicParameters, + splitCubicAtT, segmentPointAtT, + approximateCubicArcLength) +from fontTools.pens.basePen import BasePen + +import logging +log = logging.getLogger(__name__) + + +def norm_float(value): + """Converts a float (whose decimal part is zero) to integer""" + if isinstance(value, float): + value = round(value, 4) + if value.is_integer(): + return int(value) + return value + return value + + +def feq(a, b, factor=1.52e-5): + """Returns True if a and b are close enough to be considered equal""" + return abs(a - b) < factor + + +def fne(a, b, factor=1.52e-5): + """Returns True if a and b are not close enough to be considered equal""" + return abs(a - b) >= factor + + +class pt(tuple): + """A 2-tuple representing a point in 2D space""" + __slots__ = () + tl = threading.local() + tl.align = None + + @classmethod + def setAlign(_cls, vertical=False): + """ + Class-level method to control the value of properties a and o + + When called with vertical==False (the default): + a will be equivalent to x + o will be equivalent to y + When called with vertical==True + a will be equivalent to y + o will be equivalent to x + + Note that the internal align variable is thread-specific + """ + if vertical: + _cls.tl.align = 2 + else: + _cls.tl.align = 1 + + @classmethod + def clearAlign(_cls): + """ + Class-level method to unset the internal align variable + so that accessing properties a or o will result in an error + """ + _cls.tl.align = None + + def __new__(_cls, x=0, y=0, roundCoords=False): + """ + Creates a new pt object initialied with x and y. + + If roundCoords is True the values are rounded before storing + """ + if isinstance(x, tuple): + y = x[1] + x = x[0] + if roundCoords: + x = round(x) + y = round(y) + return _tuple.__new__(_cls, (x, y)) + + @property + def x(self): + return self[0] + + @property + def y(self): + return self[1] + + @property + def a(self): + if self.tl.align == 1: + return self[0] + elif self.tl.align == 2: + return self[1] + else: + raise RuntimeError("glyphData.pt property a used without " + + "setting align") + + @property + def o(self): + if self.tl.align == 1: + return self[1] + elif self.tl.align == 2: + return self[0] + else: + raise RuntimeError("glyphData.pt property o used without " + + "setting align") + + def ao(self): + if self.tl.align == 1: + return (self.x, self.y) + elif self.tl.align == 2: + return (self.y, self.x) + else: + raise RuntimeError("glyphData.pt method ao used without " + + "setting align") + + def norm_float(self): + return pt(norm_float(self[0]), norm_float(self[1])) + + # for two pts + def __add__(self, other): + """ + Returns a new pt object representing the sum of respective + values of the two arguments + """ + if not isinstance(other, pt): + raise TypeError('Both arguments to pt.__add__ must be pts') + return pt(self[0] + other[0], self[1] + other[1]) + + def __sub__(self, other): + """ + Returns a new pt object representing the difference of respective + values of the two arguments + """ + if not isinstance(other, pt): + raise TypeError('Both arguments to pt.__sub__ must be pts') + return pt(self[0] - other[0], self[1] - other[1]) + + def avg(self, other): + """ + Returns a new pt object representing the average of this pt object + with the argument + """ + if not isinstance(other, pt): + raise TypeError('Both arguments to pt.avg must be pts') + return pt((self[0] + other[0]) * 0.5, (self[1] + other[1]) * 0.5) + + def dot(self, other): + """ + Returns a numeric value representing the dot product of this + pt object with the argument + """ + if not isinstance(other, pt): + raise TypeError('Both arguments to pt.dot must be pts') + return self[0] * other[0] + self[1] * other[1] + + def scross(self, other): + """ + Returns a numeric value representing the cross product of this + pt object with the argument + """ + if not isinstance(other, pt): + raise TypeError('Both arguments to pt.dot must be pts') + return other[1] * self[0] - other[0] * self[1] + + def distsq(self, other): + """ + Returns a numerical value representing the squared distance + between this pt object and the argument + """ + if not isinstance(other, pt): + raise TypeError('Both arguments to pt.distsq must be pts') + dx = self[0] - other[0] + dy = self[1] - other[1] + return dx * dx + dy * dy + + def a_dist(self, other): + """ + Returns a numerical value representing the distance between this + pt object and the argument in the "a" dimension + """ + return abs((self - other).a) + + def o_dist(self, other): + """ + Returns a numerical value representing the distance between this + pt object and the argument in the "o" dimension + """ + return abs((self - other).o) + + def normsq(self): + """Returns the squared magnitude of the pt (treated as a vector)""" + return self[0] * self[0] + self[1] * self[1] + + def abs(self): + """ + Returns a new pt object with the absolute values of the coordinates + """ + return pt(abs(self[0]), abs(self[1])) + + def round(self, dec=0): + """Returns a new pt object with rounded coordinate values""" + return pt(round(self[0], dec), round(self[1], dec)) + + # for pt and number + def __mul__(self, other): + """ + Returns a new pt object with this object's coordinates multiplied by + a scalar value + """ + if not isinstance(other, numbers.Number): + raise TypeError('One argument to pt.__mul__ must be a scalar ' + + 'number') + return pt(self[0] * other, self[1] * other) + + def __rmul__(self, other): + """Same as __mul__ for right-multiplication""" + if not isinstance(other, numbers.Number): + raise TypeError('One argument to pt.__rmul__ must be a scalar ' + + 'number') + return pt(self[0] * other, self[1] * other) + + def __eq__(self, other, factor=1.52e-5): + """Returns True if each coordinate is feq to that of the argument""" + return (feq(self[0], other[0], factor) and + feq(self[1], other[1], factor)) + + def eq_exact(self, other): + """Returns True if each coordinate is equal to that of the argument""" + return self[0] == other[0] and self[1] == other[1] + + +class stem(tuple): + """ + A 2-tuple representing a stem hint. + + self[0] is the bottom/left coordinate + self[1] is the top/right coordinate + + If self[1] is less than self[0] the stem represents a ghost hint + and the difference should be 20 or 21 points + """ + BandMargin = 30 + __slots__ = () + + def __new__(_cls, lb=0, rt=0): + if isinstance(lb, tuple): + return _tuple.__new__(_cls, lb) + return _tuple.__new__(_cls, (lb, rt)) + + @property + def lb(self): + return self[0] + + @property + def rt(self): + return self[1] + + def __str__(self): + """Returns a string representation of the stem""" + isgh = self.isGhost() + isbad = self.isBad() + if not isgh and not isbad: + return "({0} -> {1})".format(self.lb, self.rt) + elif isgh == "high": + return "({0} (high ghost))".format(self.rt) + elif isgh == "low": + return "({0} (low ghost))".format(self.rt) + else: + return "(bad stem values {0}, {1})".format(self.lb, self.rt) + + def isGhost(self, doBool=False): + """Returns True if the stem is a ghost hint""" + width = self.rt - self.lb + if width == -20: # from topGhst in ac.h + return "high" if not doBool else True + if width == -21: # from botGhst in ac.h + return "low" if not doBool else True + return False + + def ghostCompat(a, b): + if a.isGhost(True) == b.isGhost(True): + return False + if a.isGhost() == 'high' or b.isGhost() == 'high': + return a.lb == b.rt + else: + return a.lb == b.lb + + def isBad(self): + """Returns True if the stem is malformed""" + return not self.isGhost() and (self.rt - self.lb) < 0 + + def relVals(self, last=None): + """ + Returns a tuple of "relative" stem values (start relative to + the passed last stem, then width) appropriate for + vstem/hstem/vstemhm/hstemhm output + """ + if last: + l = last.rt + else: + l = 0 + return (norm_float(self.lb - l), norm_float(self.rt - self.lb)) + + def UFOVals(self): + """Returns a tuple of stem values appropriate for UFO output""" + return (self.lb, self.rt - self.lb) + + def overlaps(self, other): + """ + Returns True if this stem is within BandMargin of overlapping the + passed stem + """ + lloc, uloc = self.lb, self.rt + sig = self.isGhost() + # c.f. page 22 of Adobe TN #5177 "The Type 2 Charstring Format" + if sig == 'high': + uloc = lloc + elif sig == 'low': + lloc = uloc + olloc, ouloc = other.lb, other.rt + oig = other.isGhost() + if oig == 'high': + ouloc = olloc + elif oig == 'low': + olloc = ouloc + uloc += stem.BandMargin + lloc -= stem.BandMargin + return olloc <= uloc and ouloc >= lloc + + def distance(self, loc): + """ + Returns the distance between this stem and the passed location, + which is zero if the location falls within the stem + """ + lloc, uloc = self.lb, self.rt + sig = self.isGhost() + # c.f. page 22 of Adobe TN #5177 "The Type 2 Charstring Format" + if sig == 'high': + uloc = lloc + elif sig == 'low': + lloc = uloc + if loc >= lloc and loc <= uloc: + return 0 + return min(abs(lloc - loc), abs(uloc - loc)) + + +class boundsState: + """ + Calculates and stores the bounds of a pathElement (spline) and the point + locations that define the boundaries. + """ + def __init__(self, c): + """ + Initialize the object with the passed pathElement and calculate the + bounds + """ + # Start with the bounds of the line betwen the endpoints + self.lb = self.linearBounds(c) + if c.is_line: + self.b = self.lb + else: + # For curves, add the control points into the calcuation. + # If they exceed the linear bounds calculate the proper + # curve bounds + cpb = deepcopy(self.lb) + self.mergePt(cpb, c.cs, .25, doExt=False) # t value isn't used + self.mergePt(cpb, c.ce, .75, doExt=False) # t value isn't used + if self.lb != cpb: + self.calcCurveBounds(c) + else: + self.b = self.lb + + def mergePt(self, b, p, t, doExt=True): + """ + Add the passed point into the bounds as a potential extreme. + + If it is an extreme + store the point at the appropriate extpts subscripts + store the t value at the same tmap subscripts + """ + for i, cmp_o in enumerate([operator.lt, operator.gt]): + for j in range(2): + if cmp_o(p[j], b[i][j]): + b[i][j] = p[j] + if doExt: + self.extpts[i][j] = p + self.tmap[i][j] = t + + def linearBounds(self, c): + """ + Calculate the bounds of the line betwen the start and end points of + the passed pathElement. + """ + self.tmap = [[0, 0], [0, 0]] + self.extpts = [[c.s, c.s], [c.s, c.s]] + lb = [[*c.s], [*c.s]] + self.mergePt(lb, c.e, 1) + return lb + + def calcCurveBounds(self, pe): + """ + Calculate the bounds of the passed path element relative to the + already-calculated linear bounds + """ + curveb = deepcopy(self.lb) + a, b, c, d = pe.cubicParameters() + roots = [] + for dim in range(2): + roots += [t for t in solveQuadratic(a[dim] * 3, b[dim] * 2, c[dim]) + if 0 <= t < 1] + + for t in roots: + p = pt(a[0] * t * t * t + b[0] * t * t + c[0] * t + d[0], + a[1] * t * t * t + b[1] * t * t + c[1] * t + d[1]) + self.mergePt(curveb, p, t) + + self.b = curveb + + def farthestExtreme(self, doY=False): + """ + Returns the location, defining point, and t value for the + bound farthest from the linear bounds in the dimension selected + with doY. If the linear bounds are the curve bounds returns + 0, None, None + + The fourth return value is False if the defining point's location + is less than the linear bound and True if it is greater + """ + idx = 1 if doY else 0 + d = [abs(self.lb[i][idx] - self.b[i][idx]) for i in range(2)] + if d[0] > d[1]: + return d[0], self.extpts[0][idx], self.tmap[0][idx], False + elif fne(d[1], 0): + return d[1], self.extpts[1][idx], self.tmap[1][idx], True + else: + return 0, None, None, None + + def intersects(self, other, margin=0): + """ + Returns True if the bounds of this object are within those of + the argument + """ + return (self.b[0][0] <= other.b[1][0] + margin and + self.b[1][0] + margin >= other.b[0][0] and + self.b[0][1] <= other.b[1][1] + margin and + self.b[1][1] + margin >= other.b[0][1]) + + +class pathBoundsState: + """ + Calculates and stores the bounds of a glyphData object (path) and + the pathElements (splines) that define the boundaries. + """ + def __init__(self, pe): + """Initialize the bounds with those of a single pathElement""" + self.b = pe.getBounds().b + self.extpes = [[pe, pe], [pe, pe]] + + def merge(self, other): + """Merge this pathBoundsState object with the bounds of another""" + for i, cmp_o in enumerate([operator.lt, operator.gt]): + for j in range(2): + if cmp_o(other.b[i][j], self.b[i][j]): + self.b[i][j] = other.b[i][j] + self.extpes[i][j] = other.extpes[i][j] + + def within(self, other): + """ + Returns True if the bounds of this object are within those of + the argument + """ + return (self.b[0][0] >= other.b[0][0] and + self.b[0][1] >= other.b[0][1] and + self.b[1][0] <= other.b[1][0] and + self.b[1][1] <= other.b[1][1]) + + +class pathElement: + """ + Stores the coordinates of a spline (line or curve) and + hintmask values to add directly before the spline + Whether the spline is the first or second part of a flex hint + a boundsState object for the spline + The position (subpath, offset) of the spline in the glyphData path + + self.s is the first point, self.e is the last. + If the spline is a curve self.cs is the first control point and + self.ce is the second. + + When segment_sub is not None it must either be a list or an + integer. If it is a list then that list must contain pathElements, + representing the same path (in order). These will be used in place + of the pathElement during segment generation. Each of these + substitution pathElements must have segment_sub equal to the + offset in the parent's segment_sub list. + """ + assocMatchFactor = 93 + tSlop = .005 + + def __init__(self, *args, is_close=False, masks=None, flex=False, + position=None): + self.is_line = False + self.is_close = is_close + for p in args: + if not isinstance(p, pt): + raise TypeError('Positional arguments to ' + + 'pathElement.__init__ must be pt objects') + if len(args) == 2: + self.is_line = True + self.s = args[0] + self.e = args[1] + elif len(args) == 4: + if is_close: + raise TypeError('is_close must be False for path curves') + self.s = args[0] + self.cs = args[1] + self.ce = args[2] + self.e = args[3] + else: + raise TypeError('Wrong number of positional arguments to ' + + 'pathElement.__init__') + self.masks = masks + self.flex = flex + self.bounds = None + self.position = position + self.segment_sub = None + + def getBounds(self): + """Returns the bounds object for the object, generating it if needed""" + if self.bounds: + return self.bounds + self.bounds = boundsState(self) + return self.bounds + + def clearTempState(self): + self.bounds = None + self.segment_sub = None + + def isLine(self): + """Returns True if the spline is a line""" + return self.is_line + + def isClose(self): + """Returns True if this pathElement implicitly closes a subpath""" + return self.is_close + + def isStart(self): + """Returns True if this pathElement starts a subpath""" + return self.position[1] == 0 + + def isTiny(self): + """ + Returns True if the start and end points of the spline are within + two em-units in both dimensions + """ + d = (self.e - self.s).abs() + return d.x < 2 and d.y < 2 + + def isShort(self): + """ + Returns True if the start and end points of the spline are within + about six em-units + """ + d = (self.e - self.s).abs() + mx, mn = sorted(tuple(d)) + return mx + mn * .336 < 6 # head.c IsShort + + def convertToLine(self): + """ + If the pathElement is not already a line, make it one with the same + start and end points + """ + if self.is_line: + return + if self.flex is not None: + log.error("Cannot convert flex-hinted curve to line: skipping.") + return + self.is_line = True + del self.cs + del self.ce + self.bounds = None + + def convertToCurve(self, sRatio=.333333, eRatio=None, roundCoords=False): + """ + If the pathElement is not already a curve, make it one. The control + points are made colinear to preseve the shape. self.cs will be + positioned at ratio sRatio from self.s and self.ce will be positioned + at eRatio away from self.e + """ + if not self.is_line: + return + if eRatio is None: + eRatio = sRatio + self.is_line = False + self.cs = self.s * (1 - sRatio) + self.e * sRatio + self.ce = self.s * eRatio + self.e * (1 - eRatio) + + def clearHints(self, doVert=False): + """Clear the vertical or horizontal masks, if any""" + if doVert and self.masks is not None: + self.masks = [self.masks[0], None] if self.masks[0] else None + elif not doVert and self.masks is not None: + self.masks = [None, self.masks[1]] if self.masks[1] else None + + def cubicParameters(self): + """Returns the fontTools cubic parameters for this pathElement""" + return calcCubicParameters(self.s, self.cs, self.ce, self.e) + + def getAssocFactor(self): + if self.is_line: + l = sqrt(self.s.distsq(self.e)) + else: + l = approximateCubicArcLength(self.s, self.cs, self.ce, self.e) + return l / self.assocMatchFactor + + def containsPoint(s, p, factor, returnT=False): + if s.is_line: + # We sometimes want t anyway, so why not? + ds = sqrt(s.s.distsq(s.e)) + d1 = sqrt(s.s.distsq(p)) + d2 = sqrt(s.e.distsq(p)) + iseq = feq(ds, d1 + d2, factor) + if not returnT: + return iseq + else: + return iseq, d1 / ds + a, b, c, d = s.cubicParameters() + if abs(s.s.x - s.e.x) > abs(s.s.y - s.e.y): + i, j = 0, 1 + else: + i, j = 1, 0 + tl = solveCubic(a[i], b[i], c[i], d[i] - p[i]) + sols = [(a[j] * t * t * t + b[j] * t * t + c[j] * t + d[j], t) + for t in tl if -.1 <= t <= 1.1] + tsols = [t for v, t in sols if feq(v, p[j], factor)] + if not returnT: + return len(tsols) > 0 + if len(tsols) > 0: + return True, tsols[0] + else: + return False, 0 + + def slopePoint(self, t): + """ + Returns the point definiing the slope of the pathElement + (relative to the on-curve point) at t==0 or t==1 + """ + if t == 1: + if self.is_line: + return self.s + if self.e == self.ce: + return self.cs + return self.ce + else: + if self.is_line: + return self.e + if self.s == self.cs: + return self.ce + return self.cs + + def __deepcopy__(self, memo): + """Don't deepcopy pathElement objects""" + return self + + @staticmethod + def stemBytes(masks): + """Calculate bytes corresponding to a (boolean array) hintmask""" + t = masks[0] + masks[1] + lenb = len(t) + lenB = (lenb + 7) // 8 + t += [False for i in range(lenB * 8 - lenb)] + return int(''.join(('1' if i else '0' for i in t)), + 2).to_bytes(lenB, byteorder='big') + + def relVals(self): + """ + Return relative coordinates appropriate for an rLineTo or + rCurveTo T2 operator + """ + if self.is_line: + r = self.e - self.s + return [*r] + else: + r1 = self.cs - self.s + r2 = self.ce - self.cs + r3 = self.e - self.ce + return [*r1, *r2, *r3] + + def T2(self, is_start=None): + """Returns an array of T2 operators corresponding to the pathElement""" + prog = [] + + if is_start: + if is_start[1].masks: + prog.extend(['hintmask', + pathElement.stemBytes(is_start[1].masks)]) + rmt = self.s - is_start[0] + prog.extend([*rmt, 'rmoveto']) + + if self.masks and self.flex == 2: + log.warning("Hintmask added in middle of flex hint: ignoring") + elif self.masks and not self.is_close: + prog.extend(['hintmask', pathElement.stemBytes(self.masks)]) + + rv = self.relVals() + + after = self.e + + if self.is_close: + after = self.s + elif self.flex == 1: + prog.extend(rv) + elif self.flex == 2: + prog.extend(rv) + prog.extend([50, 'flex']) # 50 from gDMin in C implementation + elif not self.is_line: + prog.extend(rv) + prog.append('rrcurveto') + else: + prog.extend(rv) + prog.append('rlineto') + + return prog, after + + def splitAtInflectionsForSegs(self): + a, b, c, d, = self.cubicParameters() + t2c = 3 * (b[0] * a[1] - a[0] * b[1]) + t1c = 3 * (c[0] * a[1] - a[0] * c[1]) + t0c = (c[0] * b[1] - b[0] * c[1]) + sols = [t for t in solveQuadratic(t2c, t1c, t0c) if 0 < t < 1] + if len(sols) > 0: + self.segment_sub = [] + for s in splitCubicAtT(self.s, self.cs, self.ce, self.e, *sols): + pts = [pt(tup) for tup in s] + spe = pathElement(*pts) + spe.position = self.position + spe.segment_sub = len(self.segment_sub) + self.segment_sub.append(spe) + return True + return False + + def splitAt(self, t): + if self.is_line: + pb = self.s + (self.e - self.s) * t + ret = pathElement(pb, self.e, position=self.position, + is_close=self.is_close) + self.e = pb + self.is_close = False + self.bounds = None + return ret + else: + s, n = splitCubicAtT(self.s, self.cs, self.ce, self.e, t) + ptsn = [pt(p) for p in n] + ret = pathElement(*ptsn, position=self.position, + is_close=self.is_close) + assert s[0] == self.s and n[3] == ret.e + self.cs = pt(s[1]) + self.ce = pt(s[2]) + self.e = pt(s[3]) + self.is_close = False + self.bounds = None + return ret + + def atT(self, t): + return pt(segmentPointAtT(self.fonttoolsSegment(), t)) + + def fonttoolsSegment(self): + if self.is_line: + return [tuple(self.s), tuple(self.e)] + else: + return [tuple(self.s), tuple(self.cs), tuple(self.ce), + tuple(self.e)] + + +class glyphData(BasePen): + """Stores state corresponding to a T2 CharString""" + def __init__(self, roundCoords, name=''): + super().__init__() + self.roundCoords = roundCoords + + self.subpaths = [] + self.hstems = [] + self.vstems = [] + self.startmasks = None + self.cntr = [] + self.name = name + self.wdth = None + + self.is_hm = None + self.flex_count = 0 + self.lastcp = None + + self.nextmasks = None + self.nextflex = None + self.changed = False + self.pathEdited = False + self.boundsMap = {} + + self.hhs = self.vhs = None + + # pen methods: + + def _moveTo(self, ptup): + """moveTo pen method""" + self.lastcp = None + self.subpaths.append([]) + + def _lineTo(self, ptup): + """lineTo pen method""" + self.lastcp = None + curpt = pt(self._getCurrentPoint(), roundCoords=self.roundCoords) + newpt = pt(ptup, roundCoords=self.roundCoords) + self.subpaths[-1].append(pathElement(curpt, newpt, + masks=self.getStemMasks(), + flex=self.checkFlex(False), + position=self.getPosition())) + + def _curveToOne(self, ptup1, ptup2, ptup3): + """lineTo pen method""" + self.lastcp = None + curpt = pt(self._getCurrentPoint(), roundCoords=self.roundCoords) + newpt1 = pt(ptup1, roundCoords=self.roundCoords) + newpt2 = pt(ptup2, roundCoords=self.roundCoords) + newpt3 = pt(ptup3, roundCoords=self.roundCoords) + self.subpaths[-1].append(pathElement(curpt, newpt1, newpt2, newpt3, + masks=self.getStemMasks(), + flex=self.checkFlex(True), + position=self.getPosition())) + + # closePath is a courtesy of the caller, not an instruction, so + # we rely on its semantics here + def _closePath(self): + """closePath (courtesy) pen method""" + curpt = pt(self._getCurrentPoint(), roundCoords=self.roundCoords) + if len(self.subpaths[-1]) == 0: # No content after moveTo + self.subpaths.pop() + return + t = self.subpaths[-1][0].s + if curpt.eq_exact(t): + return + self.subpaths[-1].append(pathElement(curpt, t, + masks=self.getStemMasks(), + flex=self.checkFlex(False), + is_close=True, + position=self.getPosition())) + self.lastcp = self.subpaths[-1][-1] + + def getPosition(self): + """Returns position (subpath idx, offset) of next spline to be drawn""" + return (len(self.subpaths) - 1, len(self.subpaths[-1])) + + # "hintpen" methods: + def nextIsFlex(self): + """quasi-pen method noting that next spline starts a flex hint""" + self.flex_count += 1 + self.nextflex = 1 + + def hStem(self, data, is_hm): + """ + quasi-pen method to pass horizontal stem data (in relative format) + """ + if self.is_hm is not None and self.is_hm != is_hm: + # XXX Should refactor so this prints as warning when + # using existing hint data + log.info("Horizontal stem hints mask setting does not match" + + " previous setting") + self.is_hm = is_hm + self.hstems.extend(self.toStems(data)) + + def vStem(self, data, is_hm): + """quasi-pen method passing vertical stem data (in relative format)""" + if is_hm is not None: + if self.is_hm is not None and self.is_hm != is_hm: + # XXX Should refactor so this prints as warning when + # using existing hint data + log.info("Vertical stem hints mask setting does not match" + + " previous setting") + self.is_hm = is_hm + self.vstems.extend(self.toStems(data)) + + def hintmask(self, hhints, vhints): + """quasi-pen method passing hintmask data""" + if not self.is_hm: + # XXX Should refactor so this prints as warning when + # using existing hint data + log.info("Hintmask found when stems weren't marked as having" + + " hintmasks") + self.is_hm = True + if len(self.subpaths) == 0: + self.startmasks = [hhints, vhints] + else: + if not self.startmasks and not self.cntr: + # XXX Should refactor so this prints as warning when + # using existing hint data + log.info("Initial hintmask missing in current glyph %s" % + self.name) + # In the glyphdata format the end of a path is implicit in the + # charstring but explicit in the subpath, while a moveto is + # explicit in the charstring and implicit in the subpath. So + # we record mid-stream hintmasks prior to movetos in the + # prior "is_close" line. When writing out these will wind up + # in the same place in the stream. + if self.lastcp: + self.lastcp.masks = [hhints, vhints] + else: + self.nextmasks = [hhints, vhints] + + def cntrmask(self, hhints, vhints): + """quasi-pen method passing cntrmask data""" + self.cntr.append([hhints, vhints]) + + # width + def setWidth(self, width): + self.wdth = width + + def getWidth(self): + return self.wdth + + # status + def isEmpty(self): + """Returns true if there are no subpaths""" + return not len(self.subpaths) > 0 + + def hasFlex(self): + """Returns True if at least one curve pair is flex-hinted""" + return self.flex_count > 0 + + def hasHints(self, doVert=False, both=False, either=False): + """ + Returns True if there are hints of the parameter-specified type(s) + """ + if both: + return len(self.vstems) > 0 and len(self.hstems) > 0 + elif either: + return len(self.vstems) > 0 or len(self.hstems) > 0 + elif doVert: + return len(self.vstems) > 0 + else: + return len(self.hstems) > 0 + + def syncPositions(self): + """ + Reset the pathElement.position tuples if the path has been edited + """ + if self.pathEdited: + for sp in range(len(self.subpaths)): + for ofst in range(len(self.subpaths[sp])): + pe = self.subpaths[sp][ofst] + pe.position = (sp, ofst) + if isinstance(pe.segment_sub, list): + for i, spe in enumerate(pe.segment_sub): + spe.position = (sp, ofst) + spe.segment_sub = i + + def setPathEdited(self): + self.pathEdited = True + self.boundsMap = {} + + def getBounds(self, subpath=None): + """ + Returns the bounds of the specified subpath, or of the whole + path if subpath is None + """ + b = self.boundsMap.get(subpath, None) + if b is not None: + return b + if len(self.subpaths) == 0: + return None + if subpath is None: + b = deepcopy(self.getBounds(0)) + for i in range(1, len(self.subpaths)): + b.merge(self.getBounds(i)) + self.boundsMap[subpath] = b + return b + else: + b = pathBoundsState(self.subpaths[subpath][0]) + for c in self.subpaths[subpath][1:]: + b.merge(pathBoundsState(c)) + self.boundsMap[subpath] = b + return b + + def T2(self, version=1): + """Returns an array of T2 operators corresponding to the object""" + prog = [] + + if self.hstems: + prog.extend(self.fromStems(self.hstems)) + prog.append('hstemhm' if self.is_hm else 'hstem') + if self.vstems: + prog.extend(self.fromStems(self.vstems)) + if not self.is_hm: + prog.append('vstem') + elif len(self.cntr) == 0 and self.startmasks is None: + prog.append('vstemhm') + + for c in self.cntr: + prog.extend(['cntrmask', pathElement.stemBytes(c)]) + if self.startmasks: + prog.extend(['hintmask', pathElement.stemBytes(self.startmasks)]) + + curpt = pt(0, 0) + + for c in self: + is_start = None + if c.isStart(): + is_start = (curpt, self.subpaths[c.position[0]][-1]) + c_t2, curpt = c.T2(is_start=is_start) + prog.extend(c_t2) + + if version == 1: + prog.append('endchar') + return prog + + def drawPoints(self, pen, ufoH=None): + """ + Calls pointPen commands on pen to draw the glyph, optionally naming + some points and building a library of hint annotations + """ + doHints = ufoH is not None and (self.hasFlex() or + self.hasHints(either=True)) + pln, pn = 0, None + for s in self.subpaths: + wrapi = len(s) - 1 + if wrapi < 0: + continue + w = s[wrapi] + assert w.e == s[0].s + if w.e == w.s: + wrapi -= 1 + w = s[wrapi] + pen.beginPath() + wt = 'line' if w.isLine() else "curve" + if doHints: + pln, pn = ufoH(w, pln, True) + pen.addPoint((w.e.x, w.e.y), segmentType=wt, name=pn) + for i in range(0, wrapi): + c = s[i] + if doHints: + pln, pn = ufoH(c, pln) + if c.isLine(): + pen.addPoint((c.e.x, c.e.y), segmentType="line", name=pn) + else: + pen.addPoint((c.cs.x, c.cs.y), name=pn) + pen.addPoint((c.ce.x, c.ce.y)) + pen.addPoint((c.e.x, c.e.y), segmentType="curve") + if not w.isLine(): + if doHints: + pln, pn = ufoH(w, pln) + pen.addPoint((w.cs.x, w.cs.y), name=pn) + pen.addPoint((w.ce.x, w.ce.y)) + pen.endPath() + + # XXX deal with or avoid reordering when preserving any hints + def reorder(self, neworder): + """Change the order of subpaths according to neworder""" + log.debug("Reordering subpaths: %r" % neworder) + spl = self.subpaths + assert len(neworder) == len(spl) + self.subpaths = [spl[i] for i in neworder] + self.setPathEdited() + + def first(self): + """Returns the first pathElement of the path""" + if self.subpaths and self.subpaths[0]: + return self.subpaths[0][0] + return None + + def last(self): + """Returns the last (implicit close) pathElement of the path""" + if self.subpaths and self.subpaths[-1]: + return self.subpaths[-1][-1] + return None + + def next(self, c, segSub=False): + """ + If c == self, returns the first elemeht of the path + + If c is a pathElement, returns the following element of the path + or None if there is no such element + """ + if c is None: + return None + if c is self: + if self.subpaths and self.subpaths[0]: + t = self.subpaths[0][0] + if not segSub or not isinstance(t.segment_sub, list): + return t + else: + return t.segment_sub[0] + return None + assert ((segSub or not isinstance(c.segment_sub, int)) and + (not segSub or not isinstance(c.segment_sub, list))) + self.syncPositions() + subpath, offset = c.position + if isinstance(c.segment_sub, int): + suboff = c.segment_sub + 1 + t = self.subpaths[subpath][offset] + if len(t.segment_sub) > suboff: + return t.segment_sub[suboff] + offset += 1 + if offset < len(self.subpaths[subpath]): + t = self.subpaths[subpath][offset] + if not segSub or not isinstance(t.segment_sub, list): + return t + else: + return t.segment_sub[0] + subpath += 1 + offset = 0 + if subpath < len(self.subpaths): + t = self.subpaths[subpath][offset] + if not segSub or not isinstance(t.segment_sub, list): + return t + else: + return t.segment_sub[0] + return None + + # Iterate through path elements but start each subpath + # with implicit closing line (if any). Skip pro forma + # (zero-length) close elements + def nextForHints(self, c): + """ + Like next() but returns the next element in "hint order", with + implicit close elements coming first in the subpath instead of + last + """ + if c is None: + return None + if c is self: + if not self.subpaths or not self.subpaths[0]: + return None + c = self.subpaths[0][-1] + if not c.isClose(): + c = self.subpaths[0][0] + return c + self.syncPositions() + subpath, offset = c.position + if c.isClose(): + n = self.subpaths[subpath][0] + if n == c: + return None + return n + offset += 1 + if offset < len(self.subpaths[subpath]) - 1: + c = self.subpaths[subpath][offset] + if not c.isClose(): + return c + subpath += 1 + if subpath < len(self.subpaths): + c = self.subpaths[subpath][-1] + if not c.isClose(): + c = self.subpaths[subpath][0] + return c + return None + + def inSubpath(self, c, i, skipTiny, closeWrapOK, segSub): + """Utility function for nextInSubpath and prevInSubpath""" + if c is None or (c is self and i == -1): + return None + if c is self: + return self.next(c, segSub) + assert ((segSub or not isinstance(c.segment_sub, int)) and + (not segSub or not isinstance(c.segment_sub, list))) + self.syncPositions() + subpath, offset = c.position + sp = self.subpaths[subpath] + l = len(sp) + o = offset + while True: + done = False + if isinstance(c.segment_sub, int): + suboff = c.segment_sub + i + t = self.subpaths[subpath][o] + if 0 <= suboff < len(t.segment_sub): + c = t.segment_sub[suboff] + done = True + if not done: + o = (o + i) % l + if o == offset: + return None + if segSub and isinstance(sp[o].segment_sub, list): + if i < 0: + suboff = len(sp[o].segment_sub) + i + else: + suboff = 0 + c = sp[o].segment_sub[suboff] + else: + c = sp[o] + if not skipTiny or not c.isTiny(): + break + if (not closeWrapOK and + ((i > 0 and o < offset) or (i < 0 and o > offset))): + return None + return c + + def nextInSubpath(self, c, skipTiny=False, closeWrapOK=True, segSub=False): + """ + Returns the next element in the subpath after c. + + If c is the last element and closeWrapOK is True returns the + first element of the subpath. + + If c is the last element and closeWrapOK is False returns None + """ + return self.inSubpath(c, 1, skipTiny, closeWrapOK, segSub) + + def prevInSubpath(self, c, skipTiny=False, closeWrapOK=True, segSub=False): + """ + Returns the previous element in the subpath before c. + + If c is the first element and closeWrapOK is True returns the + last element of the subpath. + + If c is the first element and closeWrapOK is False returns None + """ + return self.inSubpath(c, -1, skipTiny, closeWrapOK, segSub) + + def nextSlopePoint(self, c): + """Returns the slope point of the element of the subpath after c""" + n = self.nextInSubpath(c, skipTiny=True, segSub=True) + return None if n is None else n.slopePoint(0) + + def prevSlopePoint(self, c): + """Returns the slope point of the element of the subpath before c""" + p = self.prevInSubpath(c, skipTiny=True, segSub=True) + return None if p is None else p.slopePoint(1) + + class glyphiter: + """An iterator for a glyphData path""" + __slots__ = ('gd', 'pos') + + def __init__(self, gd): + self.gd = self.pos = gd + + def __next__(self): + self.pos = self.gd.next(self.pos) + if self.pos is None: + raise StopIteration + return self.pos + + def __iter__(self): + return self + + def __iter__(self): + return self.glyphiter(self) + + # utility + + def checkAssocPoint(self, segs, spe, ope, sp, op, mapEnd, factor=None): + if factor is None: + factor = ope.getAssocFactor() + if sp == op or ope.containsPoint(sp, factor): + if not ope.containsPoint(spe.atT(.5), factor): + return False + spe.association = ope + return True + else: + does, t = spe.containsPoint(op, factor, True) + if does and spe.tSlop < t < 1 - spe.tSlop: + midMapped = (1 - (1 - t) / 2) if mapEnd else t / 2 + if not ope.containsPoint(spe.atT(midMapped), factor): + return False + following = spe.splitAt(t) + if mapEnd: + following.association = ope + sl = self.subpaths[spe.position[0]] + sl.insert(sl.index(spe) + 1, following) + segs.add(spe) + else: + spe.association = ope + sl = self.subpaths[spe.position[0]] + sl.insert(sl.index(spe), following) + segs.add(following) + self.setPathEdited() + return True + return False + + def associatePath(self, orig): + peMap = defaultdict(list) + for oc in orig: + peMap[tuple(oc.e.round(1))].append(oc) + segs = set() + for s in self.subpaths: + segs.update(s) + # The position[0] subpath pointers for self pathElements should stay + # accurate during the loop but the position[1] indexes won't. + while segs: + # Check a segment with the same start point + c = segs.pop() + done = False + oepel = peMap.get(tuple(c.e.round(1)), []) + if oepel: + for oepe in oepel: + if self.checkAssocPoint(segs, c, oepe, c.s, oepe.s, True): + done = True + break + else: + oepen = orig.nextInSubpath(oepe) + if self.checkAssocPoint(segs, c, oepen, c.s, oepen.e, + True): + done = True + break + if done: + continue + ospel = peMap.get(tuple(c.s.round(1)), []) + if ospel: + for ospe in ospel: + ospen = orig.nextInSubpath(ospe) + if self.checkAssocPoint(segs, c, ospen, c.e, ospen.e, + False): + done = True + break + elif self.checkAssocPoint(segs, c, ospe, c.e, ospe.s, + False): + done = True + break + if done: + continue + cBounds = c.getBounds() + for oc in orig: + factor = oc.getAssocFactor() + if cBounds.intersects(oc.getBounds(), factor): + if (oc.containsPoint(c.s, factor) and + (self.checkAssocPoint(segs, c, oc, c.e, oc.e, + False, factor) or + self.checkAssocPoint(segs, c, oc, c.e, oc.s, + False, factor))): + done = True + break + if done: + continue + # Didn't find the start point anywhere, probably because it + # was very close to but not quite identical to another start point. + # Try again from the other end. + for oc in orig: + factor = oc.getAssocFactor() + if cBounds.intersects(oc.getBounds(), factor): + if (oc.containsPoint(c.e, factor) and + (self.checkAssocPoint(segs, c, oc, c.s, oc.s, + True, factor) or + self.checkAssocPoint(segs, c, oc, c.s, oc.e, + True, factor))): + done = True + break + if done: + continue + assert not hasattr(c, 'association') + log.warning("Unable to map derived path element from " + + "%s to %s" % (c.s, c.e)) + c.association = None + self.syncPositions() + + def addNullClose(self, si): + sp = self.subpaths[si] + assert not sp[-1].isClose() + pe = pathElement(sp[0].s, sp[0].s, is_close=True, + position=(si, len(sp))) + sp.append(pe) + + def getStemMasks(self): + """Utility function for pen methods""" + s = self.nextmasks + self.nextmasks = None + return s + + def checkFlex(self, is_curve): + """Utility function for pen methods""" + if self.nextflex is None: + return None + elif not is_curve: + log.warning("Line marked with flex hint: ignoring") + self.nextflex = None + return None + elif self.nextflex == 1: + self.nextflex = 2 + return 1 + elif self.nextflex == 2: + self.nextflex = None + return 2 + else: + log.error("Internal error: Bad flex value") + self.nextflex = None + return None + + def toStems(self, data): + """Converts relative T2 charstring stem data to stem object array""" + high = 0 + sl = [] + for i in range(len(data) // 2): + low = high + data[i * 2] + high = low + data[i * 2 + 1] + sl.append(stem(low, high)) + return sl + + def fromStems(self, stems): + """Converts stem array to relative T2 charstring stem data""" + l = None + data = [] + for s in stems: + data.extend(s.relVals(last=l)) + l = s + return data + + def clearFlex(self): + """Clears any flex hints""" + if self.flex_count == 0: + return + for c in self: + c.flex = None + self.flex_count = 0 + + def clearHints(self, doVert=False): + """Clears stem hints in specified dimension""" + if doVert: + self.vstems = [] + if self.startmasks and self.startmasks[0]: + self.startmasks = [self.startmasks[0], None] + else: + self.startmasks = None + else: + self.hstems = [] + if self.startmasks and self.startmasks[1]: + self.startmasks = [None, self.startmasks[1]] + else: + self.startmasks = None + cntr = [] + for cn in self.cntr: + if doVert and cn[0]: + cntr.append((cn[0], None)) + elif not doVert and cn[1]: + cntr.append((None, cn[1])) + self.cntr = cntr + for c in self: + c.clearHints(doVert=doVert) + + def clearTempState(self): + self.hhs = self.vhs = None + for c in self: + c.clearTempState() diff --git a/python/afdko/otfautohint/hinter.py b/python/afdko/otfautohint/hinter.py new file mode 100644 index 000000000..6e71399c6 --- /dev/null +++ b/python/afdko/otfautohint/hinter.py @@ -0,0 +1,2816 @@ +# Copyright 2021 Adobe. All rights reserved. + +""" +Associates segments with points on a pathElement, then builds +these into candidate stem pairs that are evaluated and pruned +to an optimal set. +""" + +import logging +import bisect +import math +from copy import copy, deepcopy +from abc import abstractmethod +from collections import namedtuple + +from fontTools.misc.bezierTools import solveCubic + +from .glyphData import pt, feq, fne, stem +from .hintstate import (hintSegment, stemValue, glyphHintState, links, + instanceStemState) +from .overlap import removeOverlap +from .report import GlyphReport +from .logging import logging_reconfig, set_log_parameters + +log = logging.getLogger(__name__) + +GlyphPE = namedtuple("GlyphPE", "glyph pe") +LocDict = namedtuple("LocDict", "l u used") + + +class dimensionHinter: + """ + Common hinting implementation inherited by vertical and horizontal + variants + """ + @staticmethod + def diffSign(a, b): + return fne(a, 0) and fne(b, 0) and ((a > 0) != (b > 0)) + + @staticmethod + def sameSign(a, b): + return fne(a, 0) and fne(b, 0) and ((a > 0) == (b > 0)) + + def __init__(self, options): + self.StemLimit = 22 # ((kStackLimit) - 2) / 2), kStackLimit == 46 + """Initialize constant values and miscelaneous state""" + self.MaxStemDist = 150 # initial maximum stem width allowed for hints + self.InitBigDist = self.MaxStemDist + self.BigDistFactor = 23.0 / 20.0 + # MinDist must be <= 168 for ITC Garamond Book It p, q, thorn + self.MinDist = 7 + self.GhostWidth = 20 + self.GhostLength = 4 + self.GhostVal = 20 + self.GhostSpecial = 2 + self.BendLength = 2 + self.BendTangent = 0.55735 # 30 sin 30 cos div abs == .57735 + self.Theta = 0.38 # Must be <= .38 for Ryumin-Light 32 + self.MinValue = 0.0039 + self.MaxValue = 8000000.0 + self.PruneA = 50 + # PruneB and PruneValue must be <= 0.01 for Yakout/Light/heM + self.PruneB = 0.0117187 + self.PruneC = 100 + self.PruneD = 1 + self.PruneValue = 0.0117187 + self.PruneFactor = 3.0 + self.PruneFactorLt = 10.0 / 3.0 + self.PruneDistance = 10 + self.MuchPF = 50 + self.VeryMuchPF = 100 + self.CPfrac = 0.4 + self.ConflictValMin = 50.0 + self.ConflictValMult = 20.0 + # BandMargin must be < 46 for Americana-Bold d bowl vs stem hinting + self.BandMargin = 30 + self.MaxFlare = 10 + self.MaxBendMerge = 6 + self.MinHintElementLength = 12 + self.AutoLinearCurveFix = True + self.MaxFlex = 20 + self.FlexLengthRatioCutoff = 0.11 # .33^2 (ratio of 1:3 or better) + self.FlexCand = 4 + self.SCurveTangent = 0.025 + self.CPfrac = 0.4 + self.OppoFlatMax = 4 + self.FlatMin = 50 + self.ExtremaDist = 20 + self.NearFuzz = 6 + self.NoOverlapPenalty = 7.0 / 5.0 + # XXX GapDistDenom might have been miscorrected from 40 in ebb49206 + self.GapDistDenom = 40 + self.CloseMerge = 20 + # MaxMerge must be < 3 for Cushing-BookItalic z + self.MaxMerge = 2 + self.MinHighSegVal = 1.0 / 16.0 + self.SFactor = 20 + self.SpcBonus = 1000 + self.SpecialCharBonus = 200 + self.GhostFactor = 1.0 / 8.0 + self.DeltaDiffMin = .05 + self.DeltaDiffReport = 3 + self.NoSegScore = 0.1 + + self.FlexStrict = True + + self.HasFlex = False + self.options = options + + self.fddicts = None + self.gllist = None + self.glyph = None + self.report = None + self.name = None + self.isMulti = False + + def setGlyph(self, fddicts, report, gllist, name, clearPrev=True): + """Initialize the state for processing a specific glyph""" + self.fddicts = fddicts + self.report = report + self.glyph = gllist[0] + self.fddict = fddicts[0] + self.gllist = gllist + self.isMulti = (len(gllist) > 1) + self.name = name + self.HasFlex = False + self.Bonus = None + self.Pruning = True + if self.isV(): + self.hs = self.glyph.vhs = glyphHintState() + else: + self.hs = self.glyph.hhs = glyphHintState() + + def resetForHinting(self): + """Reset state for rehinting same glyph""" + self.Bonus = None + self.Pruning = True + if self.isV(): + self.hs = self.glyph.vhs = glyphHintState() + else: + self.hs = self.glyph.hhs = glyphHintState() + + class gliter: + """A pathElement set iterator for the glyphData object list""" + __slots__ = ('gll', 'il') + + def __init__(self, gllist, glidx=None): + if glidx is not None: + assert isinstance(glidx, int) and glidx > 0 + self.gll = [gllist[0], gllist[glidx]] + else: + self.gll = gllist + self.il = [gl.__iter__() for gl in self.gll] + + def __next__(self): + return [GlyphPE(self.gll[i], ii.__next__()) + for i, ii in enumerate(self.il)] + + def __iter__(self): + return self + + def __iter__(self, glidx=None): + return self.gliter(self.gllist, glidx) + + # Methods implemented by subclasses + @abstractmethod + def startFlex(self): + pass + + @abstractmethod + def stopFlex(self): + pass + + @abstractmethod + def startHint(self): + pass + + @abstractmethod + def stopHint(self): + pass + + @abstractmethod + def startStemConvert(self): + pass + + @abstractmethod + def stopStemConvert(self): + pass + + @abstractmethod + def startMaskConvert(self): + pass + + @abstractmethod + def stopMaskConvert(self): + pass + + @abstractmethod + def isV(self): + pass + + @abstractmethod + def segmentLists(self): + pass + + @abstractmethod + def dominantStems(self): + pass + + @abstractmethod + def isCounterGlyph(self): + pass + + @abstractmethod + def inBand(self, loc, isBottom=False): + pass + + @abstractmethod + def hasBands(self): + pass + + @abstractmethod + def aDesc(self): + pass + + @abstractmethod + def isSpecial(self, lower=False): + pass + + @abstractmethod + def checkTfm(self): + pass + + # Flex + def linearFlexOK(self): + return False + + def addFlex(self, force=True, inited=False): + """Path-level interface to add flex hints to current glyph""" + self.startFlex() + hasflex = (gl.flex_count != 0 for gl in self.gllist) + if not inited and any(hasflex): + if force or not all(hasflex): + log.info("Clearing existing flex hints") + for gl in self.gllist: + gl.clearFlex() + else: + log.info("Already has flex hints, skipping addFlex") + return + for c in self: + if all((self.tryFlex(x.glyph, x.pe) for x in c)): + self.markFlex(c) + self.stopFlex() + + def tryFlex(self, gl, c): + """pathElement-level interface to add flex hints to current glyph""" + # Not a curve, already flexed, or flex depth would be too large + if not c or c.isLine() or c.flex or c.s.a_dist(c.e) > self.MaxFlex: + return False + n = gl.nextInSubpath(c, skipTiny=True) + if not n or n.isLine() or n.flex: + return False + + da, do = (c.s - n.e).abs().ao() + # Difference in "bases" too high to report a near miss or length + # too short (Reuse of MaxFlex in other dimension is coincidental) + if da > self.FlexCand or do < self.MaxFlex: + return False + + # The end-to-end distance should be at least 3 times the flex depth + if do < 3 * c.s.avg(n.e).a_dist(c.e): + return False + + # Start and end points should be on the same side of mid-point + if self.diffSign(c.e.a - c.s.a, c.e.a - n.e.a): + return False + + d1sq = c.s.distsq(c.e) + d2sq = c.e.distsq(n.e) + quot = d2sq / d1sq if d1sq > d2sq else d1sq / d2sq + if quot < self.FlexLengthRatioCutoff: + return False + + if self.FlexStrict: + nn = gl.nextInSubpath(n, skipTiny=True) + # Endpoint of spline after n bends back towards flex midpoint + if not nn or self.diffSign(nn.e.a - n.e.a, c.e.a - n.e.a): + return False + p = gl.prevInSubpath(c, skipTiny=True) + # Endpoint of spline before e bends back towards flex midpoint + if not p or self.diffSign(p.s.a - c.s.a, c.e.a - c.s.a): + return False + + # flex is not convex + if self.isV() and (c.s.x > c.e.x) != (c.e.y < c.s.y): + return False + elif not self.isV() and (c.s.y > n.e.y) != (c.s.x < c.e.x): + return False + + real_n = gl.nextInSubpath(c, skipTiny=False) + if real_n is not n: + log.info("Remove short spline at %g %g to add flex." % c.e) + return False + elif real_n.isClose() or real_n.isStart(): + log.info("Move closepath from %g %.gto add flex." % c.e) + return False + + if fne(c.s.a, n.e.a): + log.info("Curves from %g %g to %g %g " % (*c.s, *n.e) + + "near miss for adding flex") + return False + + if (feq(n.s.a, n.cs.a) and feq(n.cs.a, n.ce.a) and + feq(n.ce.a, n.e.a) and not self.linearFlexOK()): + log.info("Make curves from %g %g to %g %g" % (*c.s, *n.e) + + "non-linear to add flex") # XXX what if only one line? + return False + + return True + + def markFlex(self, cl): + for gl, c in cl: + n = gl.nextInSubpath(c, skipTiny=False) + c.flex = 1 + n.flex = 2 + gl.flex_count += 1 + gl.changed = True + if not self.HasFlex: + log.info("Added flex operators to this glyph.") + self.HasFlex = True + + def calcHintValues(self, lnks, force=True, tryCounter=True): + """ + Top-level method for calculating stem hints for a glyph in one + dimension + """ + self.startHint() + if self.glyph.hasHints(doVert=self.isV()): + if force: + log.info("Clearing existing %s hints" % self.aDesc()) + self.glyph.clearHints(self.isV()) + self.glyph.changed = True + else: + self.keepHints = True + log.info("Already has %s hints" % self.aDesc()) + self.stopHint() + return + self.keepHints = False + self.BigDist = max(self.dominantStems() + [self.InitBigDist]) + self.BigDist *= self.BigDistFactor + log.debug("generate %s segments" % self.aDesc()) + self.genSegs() + self.limitSegs() + log.debug("generate %s stem values" % self.aDesc()) + self.Pruning = not (tryCounter and self.isCounterGlyph()) + self.genStemVals() + self.pruneStemVals() + self.highestStemVals() + self.mergeVals() + self.limitVals() + for sv in self.hs.stemValues: + sv.show(self.isV(), "postmerge") + log.debug("pick main %s" % self.aDesc()) + self.glyph.syncPositions() + lnks.mark(self.hs.stemValues, self.isV()) + self.checkVals() + self.reportStems() + self.mainVals() + if tryCounter and self.isCounterGlyph(): + self.Pruning = True + self.hs.counterHinted = self.tryCounterHinting() + if not self.hs.counterHinted: + self.addBBox(True) + self.hs.counterHinted = self.tryCounterHinting() + if not self.hs.counterHinted: + log.info(("Glyph is in list for using %s counter hints " + + "but didn't find any candidates.") % + self.aDesc()) + self.resetForHinting() + self.calcHintValues(lnks, force=True, tryCounter=False) + self.stopHint() + return + else: + self.highestStemVals() # for bbox segments + if len(self.hs.mainValues) == 0: + self.addBBox(False) + log.debug("%s results" % self.aDesc()) + if self.hs.counterHinted: + log.debug("Using %s counter hints." % self.aDesc()) + for hv in self.hs.mainValues: + hv.show(self.isV(), "result") + self.markStraySegs() + self.hs.pruneHintSegs() + self.stopHint() + + # Segments + def handleOverlap(self): + if self.options.overlapForcing is True: + return True + elif self.options.overlapForcing is False: + return False + elif self.name in self.options.overlapList: + return True + else: + return self.isMulti + + def addSegment(self, fr, to, loc, pe1, pe2, typ, desc, mid=False): + if pe1 is not None and isinstance(pe1.segment_sub, int): + subpath, offset = pe1.position + t = self.glyph.subpaths[subpath][offset] + if pe1 != t.segment_sub[-1]: + mid = True + pe1 = t + if pe2 is not None and isinstance(pe2.segment_sub, int): + subpath, offset = pe2.position + t = self.glyph.subpaths[subpath][offset] + if pe2 != t.segment_sub[0]: + mid = True + pe2 = t + if pe1 == pe2: + pe2 = None + mid1 = mid2 = mid + if pe1 is not None and hasattr(pe1, 'association'): + ope1 = pe1.association + if (not mid1 and ope1 is not None and + not pe1.e.__eq__(ope1.e, ope1.getAssocFactor())): + mid1 = True + pe1 = ope1 + if pe2 is not None and hasattr(pe2, 'association'): + ope2 = pe2.association + if (not mid2 and ope2 is not None and + not pe2.e.__eq__(ope2.e, ope2.getAssocFactor())): + mid2 = True + pe2 = ope2 + + if not pe1 and not pe2: + return + self.hs.addSegment(fr, to, loc, pe1, pe2, typ, self.Bonus, + self.isV(), mid1, mid2, desc) + + def CPFrom(self, cp2, cp3): + """Return point cp3 adjusted relative to cp2 by CPFrac""" + return (cp3 - cp2) * (1.0 - self.CPfrac) + cp2 + + def CPTo(self, cp0, cp1): + """Return point cp1 adjusted relative to cp0 by CPFrac""" + return (cp1 - cp0) * self.CPfrac + cp0 + + def adjustDist(self, v, q): + return v * q + + def testTan(self, p): + """Test angle of p (treated as vector) relative to BendTangent""" + return abs(p.a) > (abs(p.o) * self.BendTangent) + + @staticmethod + def interpolate(q, v0, q0, v1, q1): + return v0 + (q - q0) * (v1 - v0) / (q1 - q0) + + def flatQuo(self, p1, p2, doOppo=False): + """ + Returns a measure of the flatness of the line between p1 and p2 + + 1 means exactly flat wrt dimension a (or o if doOppo) + 0 means not interestingly flat in dimension a. (or o if doOppo) + Intermediate values represent degrees of interesting flatness + """ + d = (p1 - p2).abs() + if doOppo: + d = pt(d.y, d.x) + if feq(d.o, 0): + return 1 + if feq(d.a, 0): + return 0 + q = (d.o * d.o) / (self.Theta * d.a) + if q < 0.25: + result = self.interpolate(q, 1, 0, 0.841, 0.25) + elif q < .5: + result = self.interpolate(q, 0.841, 0.25, 0.707, 0.5) + elif q < 1: + result = self.interpolate(q, 0.707, 0.5, 0.5, 1) + elif q < 2: + result = self.interpolate(q, .5, 1, 0.25, 2) + elif q < 4: + result = self.interpolate(q, 0.25, 2, 0, 4) + else: + result = 0 + return result + + def testBend(self, p0, p1, p2): + """Test of the angle between p0-p1 and p1-p2""" + d1 = p1 - p0 + d2 = p2 - p1 + dp = d1.dot(d2) + q = d1.normsq() * d2.normsq() + # Shouldn't hit this in practice + if feq(q, 0): + return False + return dp * dp / q <= 0.5 + + def isCCW(self, p0, p1, p2): + d0 = p1 - p0 + d1 = p2 - p1 + return d0.x * d1.y >= d1.x * d0.y + + # Generate segments + + def relPosition(self, c, lower=False): + """ + Return value indicates whether c is in the upper (or lower) + subpath of the glyph (assuming a strict ordering of subpaths + in this dimension) + """ + for subp in self.glyph.subpaths: + if ((lower and subp[0].s.a < c.s.a) or + (not lower and subp[0].s.a > c.s.a)): + return True + return False + + # I initially combined the two doBends but the result was more confusing + # and difficult to debug than having them separate + def doBendsNext(self, c): + """ + Adds a BEND segment (short segments marking somewhat flat + areas) at the end of a spline. In some cases the segment is + added in both "directions" + """ + p0, p1, p2 = c.slopePoint(1), c.e, self.glyph.nextSlopePoint(c) + if feq(p0.o, p1.o) or p2 is None: + return + osame = self.diffSign(p2.o - p1.o, p1.o - p0.o) + if osame or (self.testTan(p1 - p2) and + (self.diffSign(p2.a - p1.a, p1.a - p0.a) or + (self.flatQuo(p0, p1, doOppo=True) > 0 and + self.testBend(p0, p1, p2)))): + delta = self.BendLength / 2 + doboth = False + if p0.a <= p1.a < p2.a or p0.a < p1.a <= p2.a: + pass + elif p2.a < p1.a <= p0.a or p2.a <= p1.a < p0.a: + delta = -delta + elif osame: + tst = p0.o > p1.o + if self.isV(): + delta = -delta + if tst == self.isCCW(p0, p1, p2): + delta = -delta + else: + if self.isV(): + delta = -delta + doboth = True + strt = p1.a - delta + end = p1.a + delta + self.addSegment(strt, end, p1.o, c, None, + hintSegment.sType.BEND, 'next bend forward') + if doboth: + self.addSegment(end, strt, p1.o, c, None, + hintSegment.sType.BEND, 'next bend reverse') + + def doBendsPrev(self, c): + """ + Adds a BEND segment (short segments marking somewhat flat + areas) at the start of a spline. In some cases the segment is + added in both "directions" + """ + p0, p1, p2 = c.s, c.slopePoint(0), self.glyph.prevSlopePoint(c) + if feq(p0.o, p1.o) or p2 is None: + return + cs = self.glyph.prevInSubpath(c, segSub=True) + osame = self.diffSign(p2.o - p0.o, p0.o - p1.o) + if osame or (self.testTan(p0 - p2) and + (self.diffSign(p2.a - p0.a, p0.a - p1.a) or + (self.flatQuo(p1, p0, doOppo=True) > 0 and + self.testBend(p2, p0, p1)))): + delta = self.BendLength / 2 + if p2.a <= p0.a < p1.a or p2.a < p0.a <= p1.a: + pass + elif p1.a < p0.a <= p2.a or p1.a <= p0.a < p2.a: + delta = -delta + elif osame: + tst = p2.o < p0.o + if self.isV(): + delta = -delta + if tst == self.isCCW(p2, p0, p1): + delta = -delta + else: + if self.isV(): + delta = -delta + strt = p0.a - delta + end = p0.a + delta + self.addSegment(strt, end, p0.o, cs, None, hintSegment.sType.BEND, + 'prev bend forward') + + def nodeIsFlat(self, c, doPrev=False): + """ + Returns true if the junction of this spline and the next + (or previous) is sufficiently flat, measured by OppoFlatMax + and FlatMin + """ + if not c: + return + if doPrev: + sp = self.glyph.prevSlopePoint(c) + if sp is None: + return False + d = (sp - c.cs).abs() + else: + sp = self.glyph.nextSlopePoint(c) + if sp is None: + return False + d = (sp - c.ce).abs() + return d.o <= self.OppoFlatMax and d.a >= self.FlatMin + + def sameDir(self, c, doPrev=False): + """ + Returns True if the next (or previous) spline continues in roughly + the same direction as c + """ + if not c: + return False + if doPrev: + p = self.glyph.prevInSubpath(c, skipTiny=True, segSub=True) + if p is None: + return + p0, p1, p2 = c.e, c.s, p.s + else: + n = self.glyph.nextInSubpath(c, skipTiny=True, segSub=True) + if n is None: + return + p0, p1, p2 = c.s, c.e, n.e + if (self.diffSign(p0.y - p1.y, p1.y - p2.y) or + self.diffSign(p0.x - p1.x, p1.x - p2.x)): + return False + return not self.testBend(p0, p1, p2) + + def extremaSegment(self, pe, extp, extt, isMn): + """ + Given a curved pathElement pe and a point on that spline extp at + t == extt, calculates a segment intersecting extp where all portions + of the segment are within ExtremaDist of pe + """ + a, b, c, d = pe.cubicParameters() + loc = round(extp.o) + (-self.ExtremaDist + if isMn else self.ExtremaDist) + + horiz = not self.isV() # When finding vertical stems solve for x + sl = solveCubic(a[horiz], b[horiz], c[horiz], d[horiz] - loc) + pl = [(pt(a[0] * t * t * t + b[0] * t * t + c[0] * t + d[0], + a[1] * t * t * t + b[1] * t * t + c[1] * t + d[1]), t) + for t in sl if 0 <= t <= 1] + + # Find closest solution on each side of extp + mn_p = mx_p = None + mn_td = mx_td = 2 + for p, t in pl: + td = abs(t - extt) + if t < extt and td < mn_td: + mn_p, mn_td = p, td + elif t > extt and td < mx_td: + mx_p, mx_td = p, td + + # If a side isn't found the spline end on that side should be + # within the ExtremaDist of extp.o + if not mn_p: + mn_p = pe.s + assert abs(mn_p.o - extp.o) < self.ExtremaDist + 0.01 + if not mx_p: + mx_p = pe.e + assert abs(mx_p.o - extp.o) < self.ExtremaDist + 0.01 + + return mn_p.a, mx_p.a + + def pickSpot(self, p0, p1, dist, pp0, pp1, prv, nxt): + """ + Picks a segment location based on candidates p0 and p1 and + other locations and metrics picked from the spline and + the adjacent splines. Locations within BlueValue bands are + priviledged. + """ + inBand0 = self.inBand(p0.o, dist >= 0) + inBand1 = self.inBand(p1.o, dist >= 0) + if inBand0 and not inBand1: + return p0.o + if inBand1 and not inBand0: + return p1.o + if feq(p0.o, pp0.o) and fne(p1.o, pp1.o): + return p0.o + if fne(p0.o, pp0.o) and feq(p1.o, pp1.o): + return p1.o + if (prv and feq(p0.o, prv.o)) and (not nxt or fne(p1.o, nxt.o)): + return p0.o + if (not prv or fne(p0.o, prv.o)) and (prv and feq(p1.o, nxt.o)): + return p1.o + if inBand0 and inBand1: + upper, lower = (p1.o, p0.o) if p0.o < p1.o else (p0.o, p1.o) + return upper if dist < 0 else lower + if abs(pp0.a - p0.a) > abs(pp1.a - p1.a): + return p0.o + if abs(pp1.a - p1.a) > abs(pp0.a - p0.a): + return p1.o + if prv and feq(p0.o, prv.o) and nxt and feq(p1.o, nxt.o): + if abs(p0.a - prv.a) > abs(p1.a - nxt.a): + return p0.o + return p1.o + return (p0.o + p1.o) / 2 + + def cpDirection(self, p0, p1, p2): + """ + Utility function for detecting singly-inflected curves. + See original C code or "Fast Detection o the Geometric Form of + Two-Dimensional Cubic Bezier Curves" by Stephen Vincent + """ + det = (p0.x * (p1.y - p2.y) + + p1.x * (p2.y - p0.y) + + p2.x * (p0.y - p1.y)) + if det > 0: + return 1 + elif det < 0: + return -1 + return 0 + + def prepForSegs(self): + for c in self.glyph: + if (not c.isLine() and + (self.cpDirection(c.s, c.cs, c.ce) != + self.cpDirection(c.cs, c.ce, c.e))): + if c.splitAtInflectionsForSegs(): + log.debug("splitting at inflection point in %d %d" % + (c.position[0], c.position[1] + 1)) + + def genSegs(self): + """ + Calls genSegsForPathElement for each pe and cleans up the + generated segment lists + """ + origGlyph = None + if self.handleOverlap(): + # To handle overlap, make a copy of the glyph without + # overlap and associate its pathElements with those of + # the unmodified glyph. Then set self.glyph to the modified + # version. The segment generation code only looks at + # self.hs in addSegment(), which has the appropriate code + # to follow the associations and add the segments to the + # unmodified glyph + origGlyph = self.glyph + self.glyph = removeOverlap(origGlyph) + if self.glyph is None: + self.glyph = origGlyph + origGlyph = None + self.hs.overlapRemoved = False + else: + self.glyph.associatePath(origGlyph) + + self.prepForSegs() + self.Bonus = 0 + c = self.glyph.next(self.glyph, segSub=True) + while c: + self.genSegsForPathElement(c) + c = self.glyph.next(c, segSub=True) + + if origGlyph is not None: + self.glyph = origGlyph + + self.hs.compactLists() + self.hs.remExtraBends() + self.hs.cleanup() + self.checkTfm() + + def genSegsForPathElement(self, c): + """ + Calculates and adds segments for pathElement c. These segments + indicate "flat" areas of the glyph in the relevant dimension + weighted by segment length. + """ + prv = self.glyph.prevInSubpath(c, segSub=True) + log.debug("Element %d %d" % (c.position[0], c.position[1] + 1)) + if c.isStart(): + # Certain glyphs with one contour above (or below) all others + # are marked as "Special", so that segments on that contour + # are given a bonus weight increasing the likelihood of their + # segment locations ending up in the final set of stem hints. + self.Bonus = 0 + if (self.isSpecial(lower=False) and + self.relPosition(c, lower=False)): + self.Bonus = self.SpecialCharBonus + elif (self.isSpecial(lower=True) and + self.relPosition(c, lower=True)): + self.Bonus = self.SpecialCharBonus + if c.isLine() and not c.isTiny(): + # If the line is completely flat, add the line itself as a + # segment. Otherwise if it is somewhat flat add a segment + # reduced in length by adjustDist between the start and end + # points at the location picked by pickSpot. Warn if the + # line is close to but not quite horizontal. + q = self.flatQuo(c.s, c.e) + if q > 0: + if feq(c.s.o, c.e.o): + self.addSegment(c.s.a, c.e.a, c.s.o, prv, c, + hintSegment.sType.LINE, "flat line") + else: + if q < .25: + q = .25 + adist = self.adjustDist(c.e.a - c.s.a, q) / 2 + aavg = (c.s.a + c.e.a) / 2 + sp = self.pickSpot(c.s, c.e, adist, c.s, c.e, + self.glyph.prevSlopePoint(c), + self.glyph.nextSlopePoint(c)) + self.addSegment(aavg - adist, aavg + adist, sp, prv, c, + hintSegment.sType.LINE, "line") + d = (c.s - c.e).abs() + if d.o <= 2 and (d.a > 10 or d.normsq() > 100): + log.info("The line from %g %g to %g %g" % + (*c.s, *c.e) + + " is not exactly " + self.aDesc()) + else: + # If the line is not somewhat flat just add BEND segments + self.doBendsNext(c) + self.doBendsPrev(c) + elif not c.isLine(): + if c.flex == 2: + # Flex-hinted curves have a segment corresponding to the + # line between the curve-pair endpoints. For a pair flat + # in the relevant dimension this is the line used for the + # pair at lower resolutions. + fl1prv = self.glyph.prevInSubpath(prv, segSub=True) + if self.flatQuo(prv.s, c.e) > 0: + self.addSegment(prv.s.a, c.e.a, c.e.o, fl1prv, c, + hintSegment.sType.LINE, "flex") + if c.flex != 2: + # flex != 2 => the start point is not in the middle of a + # flex hint, so this code is for hinting the start points + # of curves. + # + # If the start of the segment is not interestingly flat + # just add BEND segments. Otherwise add a CURVE segment + # for the start of the curve if the start slope is flat + # or the node is (relative to the previous spline) either + # flat or it bends away sharply. + # + # q2 measures the slope of the start point to the second + # control point and just functions to modify the + # segment length calculation. + q = self.flatQuo(c.cs, c.s) + if q == 0: + self.doBendsPrev(c) + else: + if (feq(c.cs.o, c.s.o) or + (fne(c.ce.o, c.e.o) and + (self.nodeIsFlat(c, doPrev=True) or + not self.sameDir(c, doPrev=True)))): + q2 = self.flatQuo(c.ce, c.s) + if (q2 > 0 and self.sameSign(c.cs.a - c.s.a, + c.ce.a - c.s.a) and + abs(c.ce.a - c.s.a) > abs(c.cs.a - c.s.a)): + adist = self.adjustDist(self.CPTo(c.cs.a, + c.ce.a) - + c.s.a, q2) + end = self.adjustDist(self.CPTo(c.s.a, + c.cs.a) - + c.s.a, q) + if abs(end) > abs(adist): + adist = end + self.addSegment(c.s.a, c.s.a + adist, c.s.o, + prv, c, + hintSegment.sType.CURVE, + "curve start 1") + else: + adist = self.adjustDist(self.CPTo(c.s.a, + c.cs.a) - + c.s.a, q) + self.addSegment(c.s.a, c.s.a + adist, c.s.o, + prv, c, + hintSegment.sType.CURVE, + "curve start 2") + if c.flex != 1: + # flex != 1 => the end point is not in the middle of a + # flex hint, so this code is for hinting the end points + # of curves. + # + # If the end of the segment is not interestingly flat + # just add BEND segments. Otherwise add a CURVE segment + # for the start of the curve if the end slope is flat + # or the node is (relative to the next spline) either + # flat or it bends away sharply. + # + # The second and third segment types correspond to the + # first and second start point types. The first handles + # the special case of a close-to-flat curve, treating + # it somewhat like a close-to-flat line. + q = self.flatQuo(c.ce, c.e) + if q == 0: + self.doBendsNext(c) + elif (feq(c.ce.o, c.e.o) or + (fne(c.cs.o, c.s.o) and + (self.nodeIsFlat(c, doPrev=False) or + not self.sameDir(c, doPrev=False)))): + adist = self.adjustDist(c.e.a - + self.CPFrom(c.ce.a, c.e.a), q) + q2 = self.flatQuo(c.s, c.e) + if q2 > 0: + ad2 = self.adjustDist(c.e.a - c.s.a, q2) + else: + ad2 = 0 + if q2 > 0 and abs(ad2) > abs(adist): + ccs, cce = c.cs, c.ce + if (feq(c.s.o, c.cs.o) and feq(c.cs.o, c.ce.o) and + feq(c.ce.o, c.e.o)): + if (self.options.allowChanges and + self.AutoLinearCurveFix and + not self.isMulti): + c.convertToLine() + ccs, cce = c.s, c.e + log.info("Curve from %s to %s " % (c.s, + c.e) + + "changed to a line.") + elif not self.isMulti: + log.info("Curve from %s to %s " % (c.s, + c.e) + + "can be changed to a line.") + adist = ad2 / 2 + aavg = (c.s.a + c.e.a) / 2 + sp = self.pickSpot(c.s, c.e, adist, ccs, cce, + self.glyph.prevSlopePoint(c), + self.glyph.nextSlopePoint(c)) + self.addSegment(aavg - adist, aavg + adist, sp, c, + None, hintSegment.sType.CURVE, + "curve end 1") + else: + q2 = self.flatQuo(c.cs, c.e) + if (q2 > 0 and self.sameSign(c.cs.a - c.e.a, + c.ce.a - c.e.a) and + abs(c.ce.a - c.e.a) < abs(c.cs.a - c.e.a)): + aend = self.adjustDist(c.e.a - + self.CPFrom(c.cs.a, + c.ce.a), + q2) + if abs(aend) > abs(adist): + adist = aend + self.addSegment(c.e.a - adist, c.e.a, c.e.o, c, + None, hintSegment.sType.CURVE, + "curve end 2") + else: + self.addSegment(c.e.a - adist, c.e.a, c.e.o, c, + None, hintSegment.sType.CURVE, + "curve end 3") + if c.flex is None: + # Curves that are not part of a flex hint can have an + # extrema that is flat in the relative dimension. This + # calls farthestExtreme() and if there is such an extrema + # more than 2 points away from the start and end points + # it calls extremaSegment() and adds the segment. + tmp = c.getBounds().farthestExtreme(not self.isV()) + d, extp, extt, isMin = tmp + if d > 2: + frst, lst = self.extremaSegment(c, extp, extt, isMin) + aavg = (frst + lst) / 2 + if feq(frst, lst): + adist = (c.e.a - c.s.a) / 10 + else: + adist = (lst - frst) / 2 + if abs(adist) < self.BendLength: + adist = math.copysign(adist, self.BendLength) + self.addSegment(aavg - adist, aavg + adist, + round(extp.o + 0.5), c, None, + hintSegment.sType.CURVE, + "curve extrema", True) + + def limitSegs(self): + maxsegs = max(len(self.hs.increasingSegs), len(self.hs.decreasingSegs)) + if (not self.options.explicitGlyphs and + maxsegs > self.options.maxSegments): + log.warning("Calculated %d segments, skipping %s stem testing" % + (maxsegs, self.aDesc())) + self.hs.deleteSegments() + + def showSegs(self): + """ + Adds a debug log message for each generated segment. + This information is redundant with the genSegs info except that + it shows the result of processing with compactLists(), + remExtraBends(), etc. + """ + log.debug("Generated segments") + for pe in self.glyph: + log.debug("for path element x %g y %g" % (pe.e.x, pe.e.y)) + pestate = self.hs.getPEState(pe) + seglist = pestate.segments() if pestate else [] + if seglist: + for seg in seglist: + seg.show("generated") + else: + log.debug("None") + + # Generate candidate stems with values + + def genStemVals(self): + """ + Pairs segments of opposite direction and adds them as potential + stems weighted by evalPair(). Also adds ghost stems for segments + within BlueValue bands + """ + ll, ul = self.segmentLists() + + for ls in ll: + for us in ul: + if ls.loc > us.loc: + continue + val, spc = self.evalPair(ls, us) + self.stemMiss(ls, us) + self.addStemValue(ls.loc, us.loc, val, spc, ls, us) + + if self.hasBands(): + ghostSeg = hintSegment(0, 0, 0, None, hintSegment.sType.GHOST, + 0, self.isV(), False, "ghost") + for s in ll: + if self.inBand(s.loc, isBottom=True): + ghostSeg.loc = s.loc + self.GhostWidth + cntr = (s.max + s.min) / 2 + ghostSeg.max = round(cntr + self.GhostLength / 2) + ghostSeg.min = round(cntr - self.GhostLength / 2) + ghostSeg.isInc = not s.isInc + self.addStemValue(s.loc, ghostSeg.loc, self.GhostVal, + self.GhostSpecial, s, ghostSeg) + for s in ul: + if self.inBand(s.loc, isBottom=False): + ghostSeg.loc = s.loc - self.GhostWidth + cntr = (s.max + s.min) / 2 + ghostSeg.max = round(cntr + self.GhostLength / 2) + ghostSeg.min = round(cntr - self.GhostLength / 2) + ghostSeg.isInc = not s.isInc + self.addStemValue(ghostSeg.loc, s.loc, self.GhostVal, + self.GhostSpecial, ghostSeg, s) + self.combineStemValues() + + def evalPair(self, ls, us): + """ + Calculates the initial "value" and "special" weights of a potential + stem. + + Stems in one BlueValue band are given a spc boost but stems in + both are ignored (presuambly because the Blues and OtherBlues are + sufficient for hinting). + + Otherwise the value is based on: + o The distance between the segment locations + o The segment lengths + o the extent of segment overlap (in the opposite direction) + o Segment "bonus" values + """ + spc = 0 + loc_d = abs(us.loc - ls.loc) + if loc_d < self.MinDist: + return 0, spc + inBBand = self.inBand(ls.loc, isBottom=True) + inTBand = self.inBand(us.loc, isBottom=False) + if inBBand and inTBand: + return 0, spc + if inBBand or inTBand: + spc += 2 + if us.min <= ls.max and us.max >= ls.min: # overlap + overlen = min(us.max, ls.max) - max(us.min, ls.min) + minlen = min(us.max - us.min, ls.max - ls.min) + if feq(overlen, minlen): + dist = loc_d + else: + dist = loc_d * (1 + .4 * (1 - overlen / minlen)) + else: + o_d = min(abs(us.min - ls.max), abs(us.max - ls.min)) + dist = round(loc_d * self.NoOverlapPenalty + + o_d * o_d / self.GapDistDenom) + if o_d > loc_d: # XXX this didn't work before + dist *= o_d / loc_d + dist = max(dist, 2 * self.MinDist) + if min(ls.bonus, us.bonus) > 0: + spc += 2 + for dsw in self.dominantStems(): + if dsw == abs(loc_d): + spc += 1 + break + dist = max(dist, 2) + bl = max(ls.max - ls.min, 2) + ul = max(us.max - us.min, 2) + rl = bl * bl + ru = ul * ul + q = dist * dist + v = 1000 * rl * ru / (q * q) + if loc_d > self.BigDist: + fac = self.BigDist / loc_d + if fac > .5: + v *= fac**8 + else: + return 0, spc + v = max(v, self.MinValue) + v = min(v, self.MaxValue) + return v, spc + + def stemMiss(self, ls, us): + """ + Adds an info message for each stem within two em-units of a dominant + stem width + """ + loc_d = abs(us.loc - ls.loc) + + if loc_d < self.MinDist: + return 0 + + if us.min > ls.max or us.max < ls.min: # no overlap + return + + overlen = min(us.max, ls.max) - max(us.min, ls.min) + minlen = min(us.max - us.min, ls.max - ls.min) + if feq(overlen, minlen): + dist = loc_d + else: + dist = loc_d * (1 + .4 * (1 - overlen / minlen)) + if dist < self.MinDist / 2: + return + + d, nearStem = min(((abs(s - loc_d), s) for s in self.dominantStems())) + if d == 0 or d > 2: + return + log.info("%s %s stem near miss: %g instead of %g at %g to %g." % + (self.aDesc(), + "curve" if (ls.isCurve() or us.isCurve()) else "linear", + loc_d, nearStem, ls.loc, us.loc)) + + def addStemValue(self, lloc, uloc, val, spc, lseg, useg): + """Adapts the stem parameters into a stemValue object and adds it""" + if val == 0: + return + if (self.Pruning and val < self.PruneValue) and spc <= 0: + return + if lseg.isBend() and useg.isBend(): + return + ghst = (lseg.isGhost() or useg.isGhost()) + if not ghst and (self.Pruning and val <= self.PruneD) and spc <= 0: + if lseg.isBend() or useg.isBend(): + return + lpesub = lseg.pe().position[0] + upesub = useg.pe().position[0] + if lpesub != upesub: + lsb = self.glyph.getBounds(lpesub) + usb = self.glyph.getBounds(upesub) + if not lsb.within(usb) and not usb.within(lsb): + return + if not useg: + return + + sv = stemValue(lloc, uloc, val, spc, lseg, useg, ghst) + self.insertStemValue(sv) + + def insertStemValue(self, sv, note="add"): + """ + Adds a stemValue object into the stemValues list in sort order, + skipping redundant GHOST stems + """ + svl = self.hs.stemValues + i = bisect.bisect_left(svl, sv) + if sv.isGhost: + j = i + while j < len(svl) and svl[j] == sv: + if (not svl[j].isGhost and + (svl[j].lseg == sv.lseg or svl[j].useg == sv.useg) and + svl[j].val > sv.val): + # Don't add + return + j += 1 + svl.insert(i, sv) + sv.show(self.isV(), note) + + def combineStemValues(self): + """ + Adjusts the values of stems with the same locations to give them + each the same combined value. + """ + svl = self.hs.stemValues + l = len(svl) + i = 0 + while i < l: + val = svl[i].val + j = i + 1 + while j < l and svl[i] == svl[j]: + if svl[j].isGhost: + val = svl[j].val + else: + val += svl[j].val + 2 * math.sqrt(val * svl[j].val) + j += 1 + for k in range(i, j): + svl[k].val = val + i = j + + # Prune unneeded candidate stems + + def pruneStemVals(self): + """ + Prune (remove) candidate stems based on comparisons to other stems. + """ + ignorePruned = not self.isV() and (self.options.report_zones or + not self.options.report_stems) + svl = self.hs.stemValues + for c in svl: + otherLow = otherHigh = False + uInBand = self.inBand(c.uloc, isBottom=False) + lInBand = self.inBand(c.lloc, isBottom=True) + for d in svl: + if d.pruned and not ignorePruned: + continue + if (not c.isGhost and d.isGhost and + not d.val > c.val * self.VeryMuchPF): + continue + if feq(c.lloc, d.lloc) and feq(c.uloc, d.uloc): + continue + if self.isV() and d.val <= c.val * self.PruneFactor: + continue + csl = self.closeSegs(c.lseg, d.lseg) + csu = self.closeSegs(c.useg, d.useg) + if c.val < 100 and d.val > c.val * self.MuchPF: + cs_tst = csl or csu + else: + cs_tst = csl and csu + if (d.val > c.val * self.PruneFactor and + c.lloc - self.PruneDistance <= d.lloc and + c.uloc + self.PruneDistance >= d.uloc and cs_tst and + (self.isV() or c.val < 16 or + ((not uInBand or feq(c.uloc, d.uloc)) and + (not lInBand or feq(c.lloc, d.lloc))))): + self.prune(c, d, "close and higher value") + break + if c.lseg is not None and c.useg is not None: + if abs(c.lloc - d.lloc) < 1: + if (not otherLow and + c.val < d.val * self.PruneFactorLt and + abs(d.uloc - d.lloc) < abs(c.uloc - c.lloc) and + csl): + otherLow = True + if ((self.isV() or + (d.val > c.val * self.PruneFactor and + not uInBand)) and c.useg.isBend() and csl): + self.prune(c, d, "lower bend") + break + if abs(c.uloc - d.uloc) < 1: + if (not otherHigh and + c.val < d.val * self.PruneFactorLt and + abs(d.uloc - d.lloc) < abs(c.uloc - c.lloc) and + csu): + otherHigh = True + if ((self.isV() or + (d.val > c.val * self.PruneFactor and + not lInBand)) and c.lseg.isBend() and csu): + self.prune(c, d, "upper bend") + break + if otherLow and otherHigh: + self.prune(c, d, "low and high") + break + self.hs.stemValues = [sv for sv in self.hs.stemValues if not sv.pruned] + + def closeSegs(self, s1, s2): + """ + Returns true if the segments (and the path between them) + are within CloseMerge of one another + """ + if not s1 or not s2: + return False + if s1 is s2 or not s1.pe or not s2.pe or s1.pe is s2.pe: + return True + if s1.loc < s2.loc: + loca, locb = s1.loc, s2.loc + else: + locb, loca = s1.loc, s2.loc + if (locb - loca) > 5 * self.CloseMerge: + return False + loca -= self.CloseMerge + locb += self.CloseMerge + n = s1.pe() + p = self.glyph.prevInSubpath(n) + pe2 = s2.pe() + ngood = pgood = True + # To be close in this sense the segments should be in the same + # subpath and are connected by a route that stays within CloseMerge + # So we trace around the s1.pe's subpath looking for pe2 in each + # direction and give up once we've iterated the length of the subpath. + for cnt in range(len(self.glyph.subpaths[n.position[0]])): + if not ngood and not pgood: + return False + assert n and p + if (ngood and n is pe2) or (pgood and p is pe2): + return True + if n.e.o > locb or n.e.o < loca: + ngood = False + if p.e.o > locb or p.e.o < loca: + pgood = False + n = self.glyph.nextInSubpath(n) + p = self.glyph.prevInSubpath(p) + return False + + def prune(self, sv, other_sv, desc): + """ + Sets the pruned property on sv and logs it and the "better" stemValue + """ + log.debug("Prune %s val: %s" % (self.aDesc(), desc)) + sv.show(self.isV(), "pruned") + other_sv.show(self.isV(), "pruner") + sv.pruned = True + + # Associate segments with the highest valued close stem + + def highestStemVals(self): + """ + Associates each segment in both lists with the highest related stemVal, + pruning stemValues with no association + """ + for sv in self.hs.stemValues: + sv.pruned = True + ll, ul = self.segmentLists() + self.findHighestValForSegs(ul, True) + self.findHighestValForSegs(ll, False) + self.hs.stemValues = [sv for sv in self.hs.stemValues + if not sv.pruned] + + def findHighestValForSegs(self, segl, isU): + """Associates each segment in segl with the highest related stemVal""" + for seg in segl: + ghst = None + highest = self.findHighestVal(seg, isU, False) + if highest is not None and highest.isGhost: + nonGhst = self.findHighestVal(seg, isU, True) + if nonGhst is not None and nonGhst.val >= 2: + ghst = highest + highest = nonGhst + if highest is not None: + if not (highest.val < self.MinHighSegVal and + (ghst is None or ghst.val < self.MinHighSegVal)): + highest.pruned = False + seg.hintval = highest + + def findHighestVal(self, seg, isU, locFlag): + """Finds the highest stemVal related to seg""" + highest = None + svl = self.hs.stemValues + + def OKcond(sv): + vs, vl = (sv.useg, sv.uloc) if isU else (sv.lseg, sv.lloc) + if locFlag: + loctest = not sv.isGhost + else: + loctest = vs is seg or self.closeSegs(vs, seg) + return (abs(vl - seg.loc) <= self.MaxMerge and loctest and + self.considerValForSeg(sv, seg, isU)) + + try: + _, highest = max(((sv.compVal(self.SpcBonus, self.GhostFactor), sv) + for sv in svl if OKcond(sv))) + except ValueError: + pass + log.debug("findHighestVal: loc %g min %g max %g" % + (seg.loc, seg.min, seg.max)) + if highest: + highest.show(self.isV(), "highest") + else: + log.debug("NULL") + return highest + + def considerValForSeg(self, sv, seg, isU): + """Utility test for findHighestVal""" + if sv.spc > 0 or self.inBand(seg.loc, not isU): + return True + return not (self.Pruning and sv.val < self.PruneB) + + # Merge related candidate stems + + def findBestValues(self): + """ + Looks among stemValues with the same locations and finds the one + with the highest spc/val. Assigns that stemValue to the .best + property of that set + """ + svl = self.hs.stemValues + svll = len(svl) + for i in range(svll): + if svl[i].best is not None: + continue + blst = [svl[i]] + b = i + for j in range(i + 1, svll): + if (svl[j].best is not None or fne(svl[j].lloc, svl[b].lloc) or + fne(svl[j].uloc, svl[b].lloc)): + continue + blst.append(svl[j]) + if ((svl[j].spc == svl[b].spc and svl[j].val > svl[b].val) or + svl[j].spc > svl[b].spc): + b = j + for sv in blst: + sv.best = svl[b] + + def replaceVals(self, oldl, oldu, newl, newu, newbest): + """ + Finds each stemValue at oldl, oldu and gives it a new "best" + stemValue reference and its val and spc. + """ + for sv in self.hs.stemValues: + if fne(sv.lloc, oldl) or fne(sv.uloc, oldu) or sv.merge: + continue + log.debug("Replace %s hints pair at %g %g by %g %g" % + (self.aDesc(), oldl, oldu, newl, newu)) + log.debug("\told value %g %g new value %g %g" % + (sv.val, sv.spc, newbest.val, newbest.spc)) + sv.lloc = newl + sv.uloc = newu + sv.val = newbest.val + sv.spc = newbest.spc + sv.best = newbest + sv.merge = True + + def mergeVals(self): + """ + Finds stem pairs with sides close to one another (in different + senses) and uses replaceVals() to substitute one for another + """ + self.findBestValues() + + if not self.options.report_zones: + return + svl = self.hs.stemValues + for sv in svl: + sv.merge = False + while True: + try: + _, bst = max(((sv.best.compVal(self.SFactor), sv) for sv in svl + if not sv.merge)) + except ValueError: + break + bst.merge = True + for sv in svl: + replace = False + if sv.merge or bst.isGhost != sv.isGhost: + continue + if feq(bst.lloc, sv.lloc) and feq(bst.uloc, sv.uloc): + continue + svuIB = self.inBand(sv.uloc, isBottom=False) + svlIB = self.inBand(sv.lloc, isBottom=True) + btuIB = self.inBand(bst.uloc, isBottom=False) + btlIB = self.inBand(bst.lloc, isBottom=True) + if ((feq(bst.lloc, sv.lloc) and + self.closeSegs(bst.lseg, sv.lseg) and + not btlIB and not svuIB and not btuIB) or + (feq(bst.uloc, sv.uloc) and + self.closeSegs(bst.useg, sv.useg) and + not btuIB and not svlIB and not btlIB) or + (abs(bst.lloc - sv.lloc) <= self.MaxMerge and + abs(bst.uloc - sv.uloc) <= self.MaxMerge and + (self.isV() or feq(bst.lloc, sv.lloc) or not svlIB) and + (self.isV() or feq(bst.uloc, sv.uloc) or not svuIB))): + if (feq(bst.best.spc, sv.spc) and + feq(bst.best.val, sv.val) and + not self.isV()): + if svlIB: + if bst.lloc > sv.lloc: + replace = True + elif svuIB: + if bst.uloc < sv.uloc: + replace = True + else: + replace = True + elif (feq(bst.best.spc, sv.spc) and bst.lseg is not None and + bst.useg is not None): + if sv.lseg is not None and sv.useg is not None: + if (abs(bst.lloc - sv.lloc) <= 1 and + abs(bst.uloc - sv.uloc) <= self.MaxBendMerge): + if sv.useg.isBend() and not svuIB: + replace = True + elif (abs(bst.uloc - sv.uloc) <= 1 and + abs(bst.lloc - sv.lloc) <= self.MaxBendMerge): + if sv.lseg.isBend() and not svlIB: + replace = True + if replace: + self.replaceVals(sv.lloc, sv.uloc, bst.lloc, bst.uloc, + bst.best) + + # Limit number of stems + + def limitVals(self): + """ + Limit the number of stem values in a dimension + """ + svl = self.hs.stemValues + if len(svl) <= self.StemLimit: + return + + log.info("Trimming stem list to %g from %g" % + (self.StemLimit, len(svl))) + # This will leave some segments with .highest entries that aren't + # part of the stemValues list, but those won't get .idx values so + # things will mostly work out. We could do better trying to find + # alternative hints for segments. (Thee previous code just chopped + # the list at one end.) + ol = [(sv.compVal(self.SpcBonus), sv) for sv in svl] + ol.sort(reverse=True) + + svl[:] = sorted((sv for weight, sv in ol[:self.StemLimit])) + + # Reporting + + def checkVals(self): + """Reports stems with widths close to a dominant stem width""" + lPrev = uPrev = -1e20 + for sv in self.hs.stemValues: + l, u = sv.lloc, sv.uloc + w = abs(u - l) + minDiff = 0 + try: + minDiff, mdw = min(((abs(w - dw), dw) + for dw in self.dominantStems())) + except ValueError: + pass + if feq(minDiff, 0) or minDiff > 2: + continue + if fne(l, lPrev) or fne(u, uPrev): + line = self.findLineSeg(l, True) and self.findLineSeg(u, False) + if not sv.isGhost: + log.info("%s %s stem near miss: " % + (self.aDesc(), "linear" if line else "curve") + + "%g instead of %g at %g to %g" % (w, mdw, l, u)) + lPrev, uPrev = l, u + + def findLineSeg(self, loc, isBottom=False): + """Returns LINE segments with the passed location""" + for s in self.segmentLists()[0 if isBottom else 1]: + if feq(s.loc, loc) and s.isLine(): + return True + return False + + def reportStems(self): + """Reports stem zones and char ("alignment") zones""" + glyphTop = -1e40 + glyphBot = 1e40 + isV = self.isV() + for sv in self.hs.stemValues: + l, u = sv.lloc, sv.uloc + glyphBot = min(l, glyphBot) + glyphTop = max(u, glyphTop) + if not sv.isGhost: + line = self.findLineSeg(l, True) and self.findLineSeg(u, False) + self.report.stem(l, u, line, isV) + if not isV: + self.report.stemZone(l, u) # XXX ? + + if not isV and glyphTop > glyphBot: + self.report.charZone(glyphBot, glyphTop) + + # "Main" stems + + def mainVals(self): + """Picks set of highest-valued non-overlapping stems""" + mainValues = [] + rejectValues = [] + svl = copy(self.hs.stemValues) + prevBV = 0 + while True: + try: + _, best = max(((sv.compVal(self.SpcBonus), sv) for sv in svl + if self.mainOK(sv.spc, sv.val, mainValues, + prevBV))) + except ValueError: + break + lseg, useg = best.lseg, best.useg + if best.isGhost: + for sv in svl: + if (feq(best.lloc, sv.lloc) and feq(best.uloc, sv.uloc) and + not sv.isGhost): + lseg, useg = sv.lseg, sv.useg + break + if lseg.isGhost(): + newbest = useg.hintval + if (newbest is not None and newbest is not best and + newbest in svl): + best = newbest + elif useg.isGhost(): + newbest = lseg.hintval + if (newbest is not None and newbest is not best and + newbest in svl): + best = newbest + svl.remove(best) + prevBV = best.val + mainValues.append(best) + llocb, ulocb = best.lloc, best.uloc + if best.isGhost: + if best.lseg.isGhost(): + llocb = ulocb + else: + ulocb = llocb + llocb -= self.BandMargin + ulocb += self.BandMargin + i = 0 + while i < len(svl): + llocsv, ulocsv = svl[i].lloc, svl[i].uloc + if svl[i].isGhost: + if svl[i].lseg.isGhost(): + llocsv = ulocsv + else: + ulocsv = llocsv + if llocsv <= ulocb and ulocsv >= llocb: + rejectValues.append(svl[i]) + del svl[i] + else: + i += 1 + rejectValues.extend(svl) + self.hs.mainValues = mainValues + self.hs.rejectValues = rejectValues + + def mainOK(self, spc, val, hasHints, prevBV): + """Utility test for mainVals""" + if spc > 0: + return True + if not hasHints: + return not self.Pruning or val >= self.PruneD + if not self.Pruning or val > self.PruneA: + return True + if self.Pruning and val < self.PruneB: + return False + return not self.Pruning or prevBV <= val * self.PruneC + + def tryCounterHinting(self): + """ + Attempts to counter-hint the dimension with the first three + (e.g. highest value) mainValue stems + """ + minloc = midloc = maxloc = 1e40 + mindelta = middelta = maxdelta = 0 + hvl = self.hs.mainValues + hvll = len(hvl) + if hvll < 3: + return False + bestv = hvl[0].val + pbestv = hvl[3].val if hvll > 3 else 0 + if pbestv > 1000 or bestv < pbestv * 10: + return False + for hv in hvl[0:3]: + loc = hv.lloc + delta = hv.uloc - loc + loc += delta / 2 + if loc < minloc: + maxloc, midloc, minloc = midloc, minloc, loc + maxdelta, middelta, mindelta = middelta, mindelta, delta + elif loc < midloc: + maxloc, midloc = midloc, loc + maxdelta, middelta = middelta, delta + else: + maxloc = loc + maxdelta = delta + if (abs(mindelta - maxdelta) < self.DeltaDiffMin and + abs((maxloc - midloc) - (midloc - minloc)) < + self.DeltaDiffMin): + self.hs.rejectValues.extend(hvl[3:]) + self.hs.mainValues = hvl[0:3] + return True + if (abs(mindelta - maxdelta) < self.DeltaDiffReport and + abs((maxloc - midloc) - (midloc - minloc)) < + self.DeltaDiffReport): + log.info("Near miss for %s counter hints." % self.aDesc()) + return False + + def addBBox(self, doSubpaths=False): + """ + Adds the top and bottom (or left and right) sides of the glyph + as a stemValue -- serves as a backup hint stem when few are found + + When called with doSubpaths == True adds stem hints for the + top/bottom or right/left of each subpath + """ + gl = self.glyph + if doSubpaths: + paraml = range(len(gl.subpaths)) + ltype = hintSegment.sType.LPBBOX + utype = hintSegment.sType.UPBBOX + else: + paraml = [None] + ltype = hintSegment.sType.LGBBOX + utype = hintSegment.sType.UGBBOX + for param in paraml: + pbs = gl.getBounds(param) + if pbs is None: + continue + mn_pt, mx_pt = pt(tuple(pbs.b[0])), pt(tuple(pbs.b[1])) + peidx = 0 if self.isV() else 1 + if any((hv.lloc <= mx_pt.o and mn_pt.o <= hv.uloc + for hv in self.hs.mainValues)): + continue + lseg = hintSegment(mn_pt.o, mn_pt.a, mx_pt.a, pbs.extpes[0][peidx], + ltype, 0, self.isV(), not self.isV(), "l bbox") + self.hs.getPEState(pbs.extpes[0][peidx], + True).m_segs.append(lseg) + useg = hintSegment(mx_pt.o, mn_pt.a, mx_pt.a, pbs.extpes[1][peidx], + utype, 0, self.isV(), self.isV(), "u bbox") + self.hs.getPEState(pbs.extpes[1][peidx], + True).m_segs.append(useg) + hv = stemValue(mn_pt.o, mx_pt.o, 100, 0, lseg, useg, False) + self.insertStemValue(hv, "bboxadd") + self.hs.mainValues.append(hv) + self.hs.mainValues.sort(key=lambda sv: sv.compVal(self.SpcBonus), + reverse=True) + + def markStraySegs(self): + """ + highestStemVals() may not assign a hintval to a given segment. + Once the list of stems has been arrived at we go through each + looking for stems where the segment on one side is unassigned + and assign it to that stem. + """ + for sv in self.hs.stemValues: + for seg in (sv.lseg, sv.useg): + assert seg is not None + if not seg.isGhost() and seg.hintval is None: + seg.hintval = sv + # assert False + + # masks + + def convertToStemLists(self): + """ + This method builds up the information needed to mostly get away from + looking at stem values when distributing hintmasks. + + hs.stems: Tuple of arrays of the eventual hstems or vstems objects + that will be copied into the glyphData object, one array + per gllist. + """ + self.startStemConvert() + if self.keepHints: + if self.isV(): + self.hs.stems = tuple((g.vstems if g.vstems else [] + for g in self.gllist)) + else: + self.hs.stems = tuple((g.hstems if g.hstems else [] + for g in self.gllist)) + l = self.hs.stems[0] + self.stopStemConvert() + return all((len(sl) == l for sl in self.hs.stems)) + + # Build up the default stem list + valuepairmap = {} + self.hs.stems = tuple(([] for g in self.gllist)) + if self.options.removeConflicts: + wl = self.hs.weights = [] + dsl = self.hs.stems[0] + if self.hs.counterHinted: + self.hs.stemValues = sorted(self.hs.mainValues) + for sv in self.hs.stemValues: + p = sv.ghosted() + sidx = valuepairmap.get(p, None) + if sidx is not None: + sv.idx = sidx + if self.options.removeConflicts: + wl[sidx] += sv.compVal(self.SpcBonus)[0]**.25 + else: + valuepairmap[p] = sv.idx = len(dsl) + dsl.append(stem(*p)) + if self.options.removeConflicts: + # The stem value is proportional to length(lseg)**2 * + # length(useg)**2. We want a "weight" that is vaguely + # additive with respect to segment length while still + # giving a healthy boost to stems with "special" + # segments. This isn't great but may be good enough. + wl.append(sv.compVal(self.SpcBonus)[0]**.25) + + # Determine the stem locations for other regions + + for glidx in range(1, len(self.gllist)): + self.calcInstanceStems(glidx) + + log.debug("Initial %s stem list (including regions, if any):" % + self.aDesc()) + for sidx in range(len(self.hs.stems[0])): + log.debug("Stem %d: %s" % (sidx, [sl[sidx] + for sl in self.hs.stems])) + self.stopStemConvert() + return True + + def calcInstanceStems(self, glidx): + self.glyph = self.gllist[glidx] + self.fddict = self.fddicts[glidx] + hs0 = self.hs + numStems = len(hs0.stems[0]) + if numStems == 0: + return + set_log_parameters(instance=self.fddict.FontName) + if self.isV(): + self.hs = self.glyph.vhs = glyphHintState() + else: + self.hs = self.glyph.hhs = glyphHintState() + + if self.glyph.hasHints(doVert=self.isV()): + pass # XXX to figure out + + self.keepHints = False + self.startHint() + self.BigDist = max(self.dominantStems() + [self.InitBigDist]) + self.BigDist *= self.BigDistFactor + self.genSegs() + + iSSl = [(instanceStemState(s.lb, self), instanceStemState(s.rt, self)) + for s in hs0.stems[0]] + + for c in self.__iter__(glidx): + c0 = c[0] + ci = c[1] + peS0 = hs0.getPEState(c0.pe) + if peS0 is None: + continue + peSi = self.hs.getPEState(ci.pe) + done = [[False, False] for x in range(numStems)] + for pos0, seg0l in peS0.segLists(): + for seg0 in seg0l: + assert seg0.hintval is not None + sidx = seg0.hintval.idx + # assert sidx is not None + if sidx is None: + continue + ul = 1 if (seg0.isInc == self.isV()) else 0 + if done[sidx][ul]: + continue + + iSS = iSSl[sidx][ul] + found = False + if seg0.isBBox(): + if seg0.isGBBox(): + pbs = self.glyph.getBounds(None) + else: + pbs = self.glyph.getBounds(peSi.position[0]) + if pbs is not None: + mn_pt = pt(tuple(pbs.b[0])) + mx_pt = pt(tuple(pbs.b[1])) + score = mx_pt.a - mn_pt.a + loc = mx_pt.o if seg0.isUBBox() else mn_pt.o + iSS.addToLoc(loc, score, strong=True, bb=True) + found = True + elif peSi is not None: + for posi, segil in peSi.segLists(pos0): + for segi in segil: + if segi.isInc != seg0.isInc: + continue + score = segi.max - segi.min + iSS.addToLoc(segi.loc, score, + strong=(posi == pos0), + seg=segi) + found = True + if found and posi == pos0: + break + # Fall back to point location + if not found: + if pos0 == 's': + loc = ci.pe.s.o + elif pos0 == 'e': + loc = ci.pe.e.o + else: + loc = (ci.pe.s.o + ci.pe.e.o) / 2 + log.info("Falling back to point location for " + "segment %s" % (ci.pe.position,)) + iSS.addToLoc(loc, self.NoSegScore) + done[sidx][ul] = True + + sl = hs0.stems[glidx] + for sidx, s0 in enumerate(hs0.stems[0]): + isG = s0.isGhost() + if isG != 'high': + lo = self.bestLocation(sidx, 0, iSSl, hs0) + if isG != 'low': + hi = self.bestLocation(sidx, 1, iSSl, hs0) + if isG == 'low': + lo = lo + 21 + hi = lo - 21 + elif isG == 'high': + lo = hi + hi = lo - 20 + else: + if hi < lo: + # Differentiate bad stem from ghost stem + lo = hi + 50 + log.warning("Stem end is less than start for non-" + "ghost stem, will be removed from set") + sl.append(stem((lo, hi))) + + self.fddict = self.fddicts[0] + self.glyph = self.gllist[0] + set_log_parameters(instance=self.fddict.FontName) + self.hs = hs0 + + def bestLocation(self, sidx, ul, iSSl, hs0): + loc = iSSl[sidx][ul].bestLocation(ul == 0) + if loc is not None: + return loc + for sv in hs0.stemValues: + if sv.idx != sidx: + continue + seg = sv.useg if ul == 1 else sv.lseg + if seg.hintval.idx != sidx: + loc = iSSl[seg.hintval.idx][ul].bestLocation(ul == 0) + if loc is not None: + return loc + assert False + log.warning("No data for %s location of stem %d" % + ('lower' if ul == 0 else 'upper', sidx)) + return hs0.stems[0][sidx][ul] + + def unconflict(self, sc, curSet=None, pinSet=None): + l = len(sc) + + if curSet is None: + curSet = [True] * l + else: + curSet = curSet.copy() + if pinSet is None: + pinSet = [False] * l + else: + pinSet = pinSet.copy() + + doIdx = None + doConflictSet = None + for sidx in range(l): + if pinSet[sidx] or not curSet[sidx]: + continue + conflictSet = [] + for sjdx in range(sidx, l): + if pinSet[sjdx] or not curSet[sidx]: + continue + if sc[sidx][sjdx]: + conflictSet.append(sjdx) + if conflictSet: + if doIdx is None: + doIdx = sidx + doConflictSet = conflictSet + else: + pinSet[sidx] = True + + if doIdx is None: + return (sum((self.hs.weights[x] + for x in range(l) if curSet[sidx])), curSet) + else: + pinSet[doIdx] = True + for sidx in doConflictSet: + curSet[sidx] = False + r1 = self.unconflict(sc, curSet, pinSet) + pinSet[doIdx] = curSet[doIdx] = False + for sidx in doConflictSet: + curSet[sidx] = True + r2 = self.unconflict(sc, curSet, pinSet) + return r1 if r1[0] > r2[0] else r2 + + def convertToMasks(self): + """ + This method builds up the information needed to mostly get away from + looking at stem values when distributing hintmasks. + + hs.stemOverlaps: A map of which stems overlap with which other stems. + hs.ghostCompat: [i][j] is true if stem i is a ghost and stem j can + substitute for it. + """ + self.startMaskConvert() + if self.keepHints: + # XXX to figure out + self.stopMaskConvert() + return + + dsl = self.hs.stems[0] + l = len(dsl) + hasConflicts = False + self.hs.goodMask = [True] * l + if self.options.removeConflicts: + sc = [[False] * l for _ in range(l)] + for sl in self.hs.stems: + for sidx in range(l): + if sl[sidx].isBad(): + self.hs.goodMask[sidx] = False + continue + for sjdx in range(sidx + 1, l): + if sl[sidx] > sl[sjdx]: + hasConflicts = True + sc[sidx][sjdx] = sc[sjdx][sidx] = True + if hasConflicts: + _, self.hs.goodMask = self.unconflict(sc, self.hs.goodMask, + [not a + for a in self.hs.goodMask]) + log.info("Removed %s stems %s to resolve conflicts" % + (self.aDesc(), [i for i, g in enumerate(self.hs.goodMask) + if not g])) + + self.hs.hasOverlaps = False + self.hs.stemOverlaps = so = [[False] * l for _ in range(l)] + for sidx in range(l): + if not self.hs.goodMask[sidx]: + continue + for sjdx in range(sidx + 1, l): + if not self.hs.goodMask[sjdx]: + continue + for sl in self.hs.stems: + if sl[sidx].overlaps(sl[sjdx]) or sl[sidx] > sl[sjdx]: + self.hs.hasOverlaps = True + so[sidx][sjdx] = so[sjdx][sidx] = True + + if self.hs.counterHinted and self.hs.hasOverlaps and not self.isMulti: + log.warning("XXX TEMPORARY WARNING: overlapping counter hints") + + self.hs.ghostCompat = gc = [None] * l + + # A ghost stem in the default should be a ghost everywhere + for sidx, s in enumerate(dsl): + if not self.hs.goodMask[sidx] or not s.isGhost(True): + continue + gc[sidx] = [False] * l + for sjdx in range(l): + if sidx == sjdx or not self.hs.goodMask[sjdx]: + continue + if all(sl[sidx].ghostCompat(sl[sjdx]) for sl in self.hs.stems): + assert so[sidx][sjdx] + gc[sidx][sjdx] = True + + # The stems corresponding to mainValues may conflict now. This isn't + # a fatal problem because mainMask stems are only added if they don't + # conflict with those already in the current mask. However, since + # they're not checked in the optimal order it's better to go through + # them again to remove conflicts + self.hs.mainMask = mm = [False] * l + okl = [] + mv = self.hs.mainValues.copy() + while mv: + ok = True + c = mv.pop(0) + for s in okl: + if so[c.idx][s.idx]: + ok = False + break + if ok and self.hs.goodMask[c.idx]: + mm[c.idx] = True + okl.append(c) + + for pe in self.glyph: + pestate = self.hs.getPEState(pe) + if not pestate: + continue + self.makePEMask(pestate, pe) + self.stopMaskConvert() + + def makePEMask(self, pestate, c): + """Convert the hints desired by pathElement to a conflict-free mask""" + l = len(self.hs.stems[0]) + mask = [False] * l + segments = pestate.segments() + for seg in segments: + if (not seg.hintval or seg.hintval.idx is None or + not self.hs.goodMask[seg.hintval.idx] or + seg.suppressed): + continue + mask[seg.hintval.idx] = True + p0, p1 = (c.s, c.e) if c.isLine() else (c.cs, c.e) + if self.hs.hasOverlaps and True in mask: + for sidx in range(l): + for sjdx in range(sidx + 1, l): + if not (mask[sidx] and mask[sjdx] and + self.hs.stemOverlaps[sidx][sjdx]): + continue + remidx = None + _, segi = max(((sg.hintval.compVal(self.SpcBonus), sg) + for sg in segments + if (not sg.suppressed and + sg.hintval.idx == sidx))) + _, segj = max(((sg.hintval.compVal(self.SpcBonus), sg) + for sg in segments + if (not sg.suppressed and + sg.hintval.idx == sjdx))) + vali, valj = segi.hintval, segj.hintval + assert vali.lloc <= valj.lloc or valj.isGhost + n = self.glyph.nextInSubpath(c) + p = self.glyph.prevInSubpath(c) + if (vali.val < self.ConflictValMin and + self.OKToRem(segi.loc, vali.spc)): + remidx = sidx + elif (valj.val < self.ConflictValMin and + vali.val > valj.val * self.ConflictValMult and + self.OKToRem(segj.loc, valj.spc)): + remidx = sjdx + elif (c.isLine() or self.flatQuo(p0, p1) > 0 and + self.OKToRem(segi.loc, vali.spc)): + remidx = sidx + elif self.diffSign(p1.o - p0.o, p.s.o - p0.o): + remidx = sidx + elif self.diffSign(n.e.o - p1.o, p0.o - p1.o): + remidx = sjdx + elif ((feq(p1.o, valj.lloc) or + feq(p1.o, valj.uloc)) and + fne(p0.o, vali.lloc) and fne(p0.o, vali.uloc)): + remidx = sidx + elif ((feq(p0.o, vali.lloc) or + feq(p0.o, vali.uloc)) and + fne(p1.o, valj.lloc) and fne(p1.o, valj.uloc)): + remidx = sjdx + # XXX ResolveConflictBySplit was called here. + if remidx is not None: + mask[remidx] = False + log.debug("Resolved conflicting hints at %g %g" % + (c.e.x, c.e.y)) + else: + # Removing the hints from the spline doesn't mean + # neither will be hinted, it means that whatever + # winds up getting hinted will depend on the + # previous spline hint states. That could be + # neither but it is likely one will be in the set + mask[sidx] = mask[sjdx] = False + log.debug("Could not resolve conflicting hints" + + " at %g %g" % (c.e.x, c.e.y) + + ", removing both") + if True in mask: + maskstr = ''.join(('1' if i else '0' for i in mask)) + log.debug("%s mask %s at %g %g" % + (self.aDesc(), maskstr, c.e.x, c.e.y)) + pestate.mask = mask + else: + pestate.mask = None + + def OKToRem(self, loc, spc): + return (spc == 0 or + (not self.inBand(loc, False) and not self.inBand(loc, True))) + + +class hhinter(dimensionHinter): + def startFlex(self): + """Make pt.a map to x and pt.b map to y""" + set_log_parameters(dimension='-') + pt.setAlign(False) + + def stopFlex(self): + set_log_parameters(dimension='') + pt.clearAlign() + + def startHint(self): + """ + Make pt.a map to x and pt.b map to y and store BlueValue bands + for easier processing + """ + self.startFlex() + blues = self.fddict.BlueValuesPairs + self.fddict.OtherBlueValuesPairs + self.topPairs = [pair for pair in blues if not pair[4]] + self.bottomPairs = [pair for pair in blues if pair[4]] + + startStemConvert = startMaskConvert = startFlex + + stopHint = stopStemConvert = stopMaskConvert = stopFlex + + def dominantStems(self): + return self.fddict.DominantH + + def isV(self): + """Mark the hinter as horizontal rather than vertical""" + return False + + def inBand(self, loc, isBottom=False): + """Return true if loc is within the selected set of bands""" + if self.name in self.options.noBlues: + return False + if isBottom: + pl = self.bottomPairs + else: + pl = self.topPairs + for p in pl: + if (p[0] + self.fddict.BlueFuzz >= loc and + p[1] - self.fddict.BlueFuzz <= loc): + return True + return False + + def hasBands(self): + return len(self.topPairs) + len(self.bottomPairs) > 0 + + def isSpecial(self, lower=False): + return False + + def aDesc(self): + return 'horizontal' + + def checkTfm(self): + self.checkTfmVal(self.hs.decreasingSegs, self.topPairs) + self.checkTfmVal(self.hs.increasingSegs, self.bottomPairs) + + def checkTfmVal(self, sl, pl): + for s in sl: + if not self.checkInsideBands(s.loc, pl): + self.checkNearBands(s.loc, pl) + + def checkInsideBands(self, loc, pl): + for p in pl: + if loc <= p[0] and loc >= p[1]: + return True + return False + + def checkNearBands(self, loc, pl): + for p in pl: + if loc >= p[1] - self.NearFuzz and loc < p[1]: + log.info("Near miss above horizontal zone at " + + "%f instead of %f." % (loc, p[1])) + if loc <= p[0] + self.NearFuzz and loc > p[0]: + log.info("Near miss below horizontal zone at " + + "%f instead of %f." % (loc, p[0])) + + def segmentLists(self): + return self.hs.increasingSegs, self.hs.decreasingSegs + + def isCounterGlyph(self): + return self.name in self.options.hCounterGlyphs + + +class vhinter(dimensionHinter): + def startFlex(self): + set_log_parameters(dimension='|') + pt.setAlign(True) + + def stopFlex(self): + set_log_parameters(dimension='') + pt.clearAlign() + + startHint = startStemConvert = startMaskConvert = startFlex + stopHint = stopStemConvert = stopMaskConvert = stopFlex + + def isV(self): + return True + + def dominantStems(self): + return self.fddict.DominantV + + def inBand(self, loc, isBottom=False): + return False + + def hasBands(self): + return False + + def isSpecial(self, lower=False): + """Check the Specials list for the current glyph""" + if lower: + return self.name in self.options.lowerSpecials + else: + return self.name in self.options.upperSpecials + + def aDesc(self): + return 'vertical' + + def checkTfm(self): + pass + + def segmentLists(self): + return self.hs.decreasingSegs, self.hs.increasingSegs + + def isCounterGlyph(self): + return self.name in self.options.vCounterGlyphs + + +class glyphHinter: + """ + Adapter between high-level autohint.py code and the 1D hinter. + Also contains code that uses hints from both dimensions, primarily + for hintmask distribution + """ + impl = None + + @classmethod + def initialize(_cls, options, dictRecord, logQueue=None): + _cls.impl = _cls(options, dictRecord) + if logQueue is not None: + logging_reconfig(logQueue, options.verbose) + + @classmethod + def hint(_cls, name, glyphTuple=None, fdKey=None): + if _cls.impl is None: + raise RuntimeError("glyphHinter implementation not initialized") + if isinstance(name, tuple): + return _cls.impl._hint(*name) + else: + return _cls.impl._hint(name, glyphTuple, fdKey) + + def __init__(self, options, dictRecord): + self.options = options + self.dictRecord = dictRecord + self.hHinter = hhinter(options) + self.vHinter = vhinter(options) + self.cnt = 0 + if options.justReporting(): + self.taskDesc = 'analysis' + else: + self.taskDesc = 'hinting' + + self.FlareValueLimit = 1000 + self.MaxHalfMargin = 20 # XXX 10 might better match original C code + self.PromotionDistance = 50 + + def getSegments(self, glyph, pe, oppo=False): + """Returns the list of segments for pe in the requested dimension""" + gstate = glyph.vhs if (self.doV == (not oppo)) else glyph.hhs + pestate = gstate.getPEState(pe) + return pestate.segments() if pestate else [] + + def getMasks(self, glyph, pe): + """ + Returns the masks of hints needed by/desired for pe in each dimension + """ + masks = [] + for i, hs in enumerate((glyph.hhs, glyph.vhs)): + mask = None + if hs.keepHints: + if pe.mask: + mask = copy(pe.mask[i]) + elif hs.counterHinted: + mask = copy(hs.mainMask) + else: + pes = hs.getPEState(pe) + if pes and pes.mask: + mask = copy(pes.mask) + if mask is None: + mask = [False] * len(hs.stems[0]) + masks.append(mask) + return masks + + def _hint(self, name, glyphTuple, fdKey): + """Top-level flex and stem hinting method for a glyph""" + if isinstance(fdKey, tuple): + assert len(fdKey) == 2 + fdDictList = self.dictRecord[fdKey[0]][fdKey[1]] + else: + fdDictList = fdKey + gllist = [g for g in glyphTuple if g is not None] + fddicts = [d for g, d in zip(glyphTuple, fdDictList) if g is not None] + + defglyph = gllist[0] + fddict = fddicts[0] + + an = self.options.nameAliases.get(name, name) + if an != name: + log_name = '%s (%s)' % (name, an) + else: + log_name = name + + if len(glyphTuple) > 1: + set_log_parameters(glyph=log_name, instance=fddict.FontName) + else: + set_log_parameters(glyph=log_name, instance='') + + log.info("Begin %s (using fdDict '%s').", self.taskDesc, + fddict.DictName) + + gr = GlyphReport(name, self.options.report_all_stems) + self.hHinter.setGlyph(fddicts, gr, gllist, name) + self.vHinter.setGlyph(fddicts, gr, gllist, name) + + if not self.compatiblePaths(gllist, fddicts): + set_log_parameters(glyph='', instance='') + return name, None + + defglyph.changed = False + + if not self.options.noFlex: + self.hHinter.addFlex() + self.vHinter.addFlex(inited=True) + + lnks = links(defglyph) + + self.hHinter.calcHintValues(lnks) + self.vHinter.calcHintValues(lnks) + + if self.options.justReporting(): + set_log_parameters(glyph='', instance='') + return name, gr + + if self.hHinter.keepHints and self.vHinter.keepHints: + set_log_parameters(glyph='', instance='') + return name, None + + if self.options.allowChanges: + neworder = lnks.shuffle() + if neworder: + for g in gllist: + g.reorder(neworder) + + self.doV = False + self.listHintInfo(defglyph) + + if not self.hHinter.keepHints: + self.remFlares(defglyph) + + self.doV = True + if not self.vHinter.keepHints: + self.remFlares(defglyph) + + self.hHinter.convertToStemLists() + self.vHinter.convertToStemLists() + + self.otherInstanceStems(gllist) + + self.hHinter.convertToMasks() + self.vHinter.convertToMasks() + + usedmasks = self.distributeMasks(defglyph) + self.cleanupUnused(gllist, usedmasks) + + self.otherInstanceMasks(gllist) + + for g in gllist: + g.clearTempState() + + set_log_parameters(glyph='', instance='') + return name, glyphTuple + + def compatiblePaths(self, gllist, fddicts): + if len(gllist) < 2: + return True + + glyph = gllist[0] + fddict = fddicts[0] + + for i, (g, fd) in enumerate(zip(gllist[1:], fddicts[1:])): + set_log_parameters(instance=fd.FontName) + if len(glyph.subpaths) != len(g.subpaths): + log.warning("Path has a different number of subpaths compared " + "with '%s': Cannot hint." % fd.FontName) + return False + for si, dp in enumerate(glyph.subpaths): + gp = g.subpaths[si] + dpl, gpl = len(dp), len(gp) + if gpl != dpl: + # XXX decide on warning message for these + if (gpl == dpl + 1 and gp[-1].isClose() and + not dp[-1].isClose()): + for gi in range(i + 1): + gllist[i].addNullClose(si) + continue + if (dpl == gpl + 1 and dp[-1].isClose() and + not gp[-1].isClose()): + g.addNullClose(si) + continue + log.warning("subpath %d has %d elements " % (si, len(gp)) + + "while '%s' had %d elements: Cannot hint" % + (fd.FontName, len(dp))) + return False + + set_log_parameters(instance=fddict.FontName) + # Use hHinter for path element list iterator + for c in self.hHinter: + isline = [x.pe.isLine() for x in c] + if any(isline) and not all(isline): + if self.options.allowChanges: + for p in c: + if p.pe.isLine(): + p.pe.convertToCurve() + else: + log.warning("Mixed lines and curves without " + + "allow-changes: Cannot hint") + return False + return True + + def distributeMasks(self, glyph): + """ + When necessary, chose the locations and contents of hintmasks for + the glyph + """ + stems = [None, None] + masks = [None, None] + lnstm = [0, 0] + # Initial horizontal data + # If keepHints was true hhs.stems was already set to glyph.hstems in + # converttoMasks() + stems[0] = glyph.hstems = glyph.hhs.stems[0] + lnstm[0] = len(stems[0]) + if self.hHinter.keepHints: + if glyph.startmasks and glyph.startmasks[0]: + masks[0] = glyph.startmasks[0] + elif not glyph.hhs.hasOverlaps: + masks[0] = [True] * lnstm[0] + else: + pass # XXX existing hints have conflicts but no start mask + else: + masks[0] = [False] * lnstm[0] + + # Initial vertical data + stems[1] = glyph.vstems = glyph.vhs.stems[0] + lnstm[1] = len(stems[1]) + if self.vHinter.keepHints: + if glyph.startmasks and glyph.startmasks[1]: + masks[1] = glyph.startmasks[1] + elif not glyph.hhs.hasOverlaps: + masks[1] = [True] * lnstm[1] + else: + pass # XXX existing hints have conflicts but no start mask + else: + masks[1] = [False] * lnstm[1] + + self.buildCounterMasks(glyph) + + if not glyph.hhs.hasOverlaps and not glyph.vhs.hasOverlaps: + if False in glyph.hhs.goodMask or False in glyph.vhs.goodMask: + return [glyph.hhs.goodMask, glyph.vhs.goodMask] + else: + glyph.startmasks = None + glyph.is_hm = False + return None + + usedmasks = deepcopy(masks) + if glyph.hhs.counterHinted: + usedmasks[0] = [mv or uv for mv, uv in + zip(glyph.hhs.mainMask, usedmasks[0])] + if glyph.vhs.counterHinted: + usedmasks[1] = [mv or uv for mv, uv in + zip(glyph.vhs.mainMask, usedmasks[1])] + + glyph.is_hm = True + glyph.startmasks = masks + NOTSHORT, SHORT, CONFLICT = 0, 1, 2 + mode = NOTSHORT + ns = None + c = glyph.nextForHints(glyph) + while c: + if c.isShort() or c.flex == 2: + if mode == NOTSHORT: + if ns: + mode = SHORT + oldmasks = masks + masks = deepcopy(masks) + incompatmasks = self.getMasks(glyph, ns) + else: + mode = CONFLICT + else: + ns = c + if mode == SHORT: + oldmasks[:] = masks + masks = oldmasks + incompatmasks = None + mode = NOTSHORT + cmasks = self.getMasks(glyph, c) + candmasks, conflict = self.joinMasks(masks, cmasks, + mode == CONFLICT) + maskstr = ''.join(('1' if i else '0' + for i in (candmasks[0] + candmasks[1]))) + log.debug("mask %s at %g %g, mode %d, conflict: %r" % + (maskstr, c.e.x, c.e.y, mode, conflict)) + if conflict: + if mode == NOTSHORT: + self.bridgeMasks(glyph, masks, cmasks, usedmasks, c) + masks = c.masks = cmasks + elif mode == SHORT: + assert ns + newinc, _ = self.joinMasks(incompatmasks, cmasks, True) + self.bridgeMasks(glyph, oldmasks, newinc, usedmasks, ns) + masks = ns.masks = newinc + mode = CONFLICT + else: + assert mode == CONFLICT + masks[:] = candmasks + else: + masks[:] = candmasks + if mode == SHORT: + incompatmasks, _ = self.joinMasks(incompatmasks, cmasks, + False) + c = glyph.nextForHints(c) + if mode == SHORT: + oldmasks[:] = masks + masks = oldmasks + self.bridgeMasks(glyph, masks, None, usedmasks, glyph.last()) + + return usedmasks + + def buildCounterMasks(self, glyph): + """ + For glyph dimensions that are counter-hinted, make a cntrmask + with all Trues in that dimension (because only h/vstem3 style counter + hints are supported) + """ + assert not glyph.hhs.keepHints or not glyph.vhs.keepHints + if not glyph.hhs.keepHints: + hcmsk = [glyph.hhs.counterHinted] * len(glyph.hhs.stems[0]) + if not glyph.vhs.keepHints: + vcmsk = [glyph.vhs.counterHinted] * len(glyph.vhs.stems[0]) + if (glyph.hhs.keepHints or glyph.vhs.keepHints) and glyph.cntr: + cntr = [] + for cm in glyph.cntr: + hm = cm[0] if glyph.hhs.keepHints else hcmsk + vm = cm[1] if glyph.vhs.keepHints else vcmsk + cntr.append([hm, vm]) + elif glyph.hhs.counterHinted or glyph.vhs.counterHinted: + cntr = [[hcmsk, vcmsk]] + else: + cntr = [] + glyph.cntr = cntr + + def joinMasks(self, m, cm, log): + """ + Try to add the stems in cm to m, or start a new mask if there are + conflicts. + """ + conflict = False + nm = [None, None] + for hv in range(2): + hs = self.vHinter.hs if hv == 1 else self.hHinter.hs + l = len(m[hv]) +# if hs.counterHinted: +# nm[hv] = [True] * l +# continue + c = cm[hv] + n = nm[hv] = copy(m[hv]) + if hs.keepHints: + conflict = True in c + continue + assert len(c) == l + for i in range(l): + iconflict = ireplaced = False + if not c[i] or n[i]: + continue + # look for conflicts + for j in range(l): + if not hs.hasOverlaps: + break + if j == i: + continue + if n[j] and hs.stemOverlaps[i][j]: + # See if we can do a ghost stem swap + if hs.ghostCompat[i]: + for k in range(l): + if not n[k] or not hs.ghostCompat[i][k]: + continue + else: + ireplaced = True + break + if not ireplaced: + iconflict = True + if ireplaced: + break + if not iconflict and not ireplaced: + n[i] = True + elif iconflict: + conflict = True + # XXX log conflict here if log is true + return nm, conflict + + def bridgeMasks(self, glyph, o, n, used, pe): + """ + For switching hintmasks: Clean up o by adding compatible stems from + mainMask and add stems from o to n when they are close to pe + + used contains a running map of which stems have ever been included + in a hintmask + """ + stems = [glyph.hstems, glyph.vstems] + po = pe.e if pe.isLine() else pe.cs + carryMask = [[False] * len(o[0]), [False] * len(o[1])] + goodmask = [glyph.hhs.goodMask, glyph.vhs.goodMask] + for hv in range(2): + # Carry a previous hint forward if it is compatible and close + # to the current pathElement + nloc = pe.e.x if hv == 1 else pe.e.y + for i in range(len(o[hv])): + if not o[hv][i]: + continue + dlimit = max(self.hHinter.BandMargin / 2, self.MaxHalfMargin) + if stems[hv][i].distance(nloc) < dlimit: + carryMask[hv][i] = True + # If there are no hints in o in this dimension add the closest to + # the current path element + if True not in o[hv]: + oloc = po.x if hv == 1 else po.y + try: + _, ms = min(((stems[hv][i].distance(oloc), i) + for i in range(len(o[hv])) + if goodmask[hv][i])) + o[hv][ms] = True + except ValueError: + pass + if self.mergeMain(glyph): + no, _ = self.joinMasks(o, [glyph.hhs.mainMask, glyph.vhs.mainMask], + False) + o[:] = no + for hv in range(2): + used[hv] = [ov or uv for ov, uv in zip(o[hv], used[hv])] + if n is not None: + nm, _ = self.joinMasks(n, carryMask, False) + n[:] = nm + + def mergeMain(self, glyph): + return len(glyph.subpaths) <= 5 + + def cleanupUnused(self, gllist, usedmasks): + if (usedmasks is None or + (False not in usedmasks[0] and False not in usedmasks[1])): + return + + for g in gllist: + self.delUnused([g.hstems, g.vstems], usedmasks) + # The rest of the state at this point is in masks in gllist[0] + glyph = gllist[0] + if glyph.startmasks is not None: + self.delUnused(glyph.startmasks, usedmasks) + for c in glyph.cntr: + self.delUnused(c, usedmasks) + foundPEMask = False + for c in glyph: + if c.masks: + foundPEMask = True + self.delUnused(c.masks, usedmasks) + if not foundPEMask: + glyph.startmasks = None + glyph.is_hm = False + + def delUnused(self, l, ml): + """If ml[d][i] is False delete that entry from ml[d]""" + for hv in range(2): + l[hv][:] = [l[hv][i] for i in range(len(l[hv])) if ml[hv][i]] + + def listHintInfo(self, glyph): + """ + Output debug messages about which stems are associated with which + segments + """ + for pe in glyph: + hList = self.getSegments(glyph, pe, False) + vList = self.getSegments(glyph, pe, True) + if hList or vList: + log.debug("hintlist x %g y %g" % (pe.e.x, pe.e.y)) + for seg in hList: + seg.hintval.show(False, "listhint") + for seg in vList: + seg.hintval.show(True, "listhint") + + def remFlares(self, glyph): + """ + When two paths are witin MaxFlare and connected by a path that + also stays within MaxFlare, and both desire different stems, + (sometimes) remove the lower-valued stem of the pair + """ + for c in glyph: + csl = self.getSegments(glyph, c) + if not csl: + continue + n = glyph.nextInSubpath(c) + cDone = False + while c != n and not cDone: + nsl = self.getSegments(glyph, n) + if not nsl: + if not self.getSegments(glyph, n, True): + break + else: + n = glyph.nextInSubpath(n) + continue + for cseg in csl: + if cseg.deleted: + continue + for nseg in nsl: + if nseg.deleted: + continue + diff = abs(cseg.loc - nseg.loc) + if diff > self.hHinter.MaxFlare: + cDone = True + continue + if not self.isFlare(cseg.loc, glyph, c, n): + cDone = True + continue + chv, nhv = cseg.hintval, nseg.hintval + if (diff != 0 and + self.isUSeg(cseg.loc, chv.uloc, chv.lloc) == + self.isUSeg(nseg.loc, nhv.uloc, nhv.lloc)): + if (chv.compVal(self.hHinter.SpcBonus) > + nhv.compVal(self.hHinter.SpcBonus)): + if (nhv.spc == 0 and + nhv.val < self.FlareValueLimit): + self.reportRemFlare(n, c, "n") + nseg.suppressed = True + else: + if (chv.spc == 0 and + chv.val < self.FlareValueLimit): + self.reportRemFlare(c, n, "c") + cseg.suppressed = True + break + n = glyph.nextInSubpath(n) + + def isFlare(self, loc, glyph, c, n): + """Utility function for remFlares""" + while c is not n: + v = c.e.x if self.doV else c.e.y + if abs(v - loc) > self.hHinter.MaxFlare: + return False + c = glyph.nextInSubpath(c) + return True + + def isUSeg(self, loc, uloc, lloc): + return abs(uloc - loc) <= abs(lloc - loc) + + def reportRemFlare(self, pe, pe2, desc): + log.debug("Removed %s flare at %g %g by %g %g : %s" % + ("vertical" if self.doV else "horizontal", + pe.e.x, pe.e.y, pe2.e.x, pe2.e.y, desc)) + + def otherInstanceStems(self, gllist): + if len(gllist) < 2: + return True + + glyph = gllist[0] + + # We stored the other instance stems in the default glyph's + # hintState object, so copy them into the glyphs here. + for i, g in enumerate(gllist[1:], 1): + g.hstems = glyph.hhs.stems[i] + g.vstems = glyph.vhs.stems[i] + + def otherInstanceMasks(self, gllist): + if len(gllist) < 2: + return True + + glyph = gllist[0] + + for g in gllist[1:]: + g.cntr = glyph.cntr + g.startmasks = glyph.startmasks + g.is_hm = glyph.is_hm + + for c in self.hHinter: + for gpe in c[1:]: + gpe.pe.masks = c[0].pe.masks diff --git a/python/afdko/otfautohint/hintstate.py b/python/afdko/otfautohint/hintstate.py new file mode 100644 index 000000000..1caf8a9df --- /dev/null +++ b/python/afdko/otfautohint/hintstate.py @@ -0,0 +1,585 @@ +# Copyright 2021 Adobe. All rights reserved. + +""" +Storage for intermediate state built by the hinter object +""" + +import weakref +import logging +import bisect +from enum import Enum + +from .glyphData import feq + +log = logging.getLogger(__name__) + + +class hintSegment: + """Represents a hint "segment" (one side of a potential stem)""" + class sType(Enum): + LINE = 1 + BEND = 2 + CURVE = 3 + LGBBOX = 4 + UGBBOX = 5 + LPBBOX = 6 + UPBBOX = 7 + GHOST = 8 + + def __init__(self, aloc, oMin, oMax, pe, typ, bonus, isV, isInc, desc): + """ + Initializes the object + + self.loc is the segment location in the aligned dimension + (x for horizontal, y for vertical) + + self.min and self.max are the extent of the segment in the + opposite dimension + + self.bonus is 0 for normal segments and more for "special" + segments (e.g. those within a BlueValue) + + self.type indicates the source of the segment (with GHOST + being specially important) + + self.isV records the dimension (False for horizontal, etc.) + + self.desc is a string with a more detailed indication of + how the segment was derived) + + self.pe is a weak reference to the pathElement (spline) from + which the segment was derived + + self.hintval, self.replacedBy, and self.deleted are state used + by the hinter + """ + self.loc = aloc + self.min = oMin + self.max = oMax + self.bonus = bonus + self.type = typ + self.isV = isV + self.isInc = isInc + self.desc = desc + if pe: + self.pe = weakref.ref(pe) + else: + self.pe = None + self.hintval = None + self.replacedBy = None + self.deleted = False + self.suppressed = False + + def __eq__(self, other): + return feq(self.loc, other.loc) + + def __lt__(self, other): + return self.loc < other.loc + + def isBend(self): + return self.type == self.sType.BEND + + def isCurve(self): + return self.type == self.sType.CURVE + + def isLine(self): + return self.type == self.sType.LINE or self.isBBox() + + def isBBox(self): + return self.type in (self.sType.LGBBOX, self.sType.UGBBOX, + self.sType.LPBBOX, self.sType.UPBBOX) + + def isGBBox(self): + return self.type in (self.sType.LGBBOX, self.sType.UGBBOX) + + def isUBBox(self): + return self.type in (self.sType.UPBBOX, self.sType.UGBBOX) + + def isGhost(self): + return self.type == self.sType.GHOST + + def current(self, orig=None): + """ + Returns the object corresponding to this object relative to + self.replacedBy + """ + if self.replacedBy is None: + return self + if self is orig: + self.error("Cycle in hint segment replacement") + return self + if orig is None: + orig = self + return self.replacedBy.current(orig=self) + + def show(self, label): + """Logs a debug message about the segment""" + if self.isV: + pp = (label, 'v', self.loc, self.min, self.loc, self.max, + self.desc) + else: + pp = (label, 'h', self.min, self.loc, self.max, self.loc, + self.desc) + log.debug("%s %sseg %g %g to %g %g %s" % pp) + + +class stemValue: + """Represents a potential hint stem""" + def __init__(self, lloc, uloc, val, spc, lseg, useg, isGhost=False): + assert lloc <= uloc + self.val = val + self.spc = spc + self.lloc = lloc + self.uloc = uloc + self.isGhost = isGhost + self.pruned = False + self.merge = False + self.lseg = lseg + self.useg = useg + self.best = None + self.initialVal = val + self.idx = None + + def __eq__(self, other): + slloc, suloc = self.ghosted() + olloc, ouloc = other.ghosted() + return slloc == olloc and suloc == ouloc + + def __lt__(self, other): + """Orders values by lower and then upper location""" + slloc, suloc = self.ghosted() + olloc, ouloc = other.ghosted() + return (slloc < olloc or (slloc == olloc and suloc < ouloc)) + + # c.f. page 22 of Adobe TN #5177 "The Type 2 Charstring Format" + def ghosted(self): + """Return the stem range but with ghost stems normalized""" + lloc, uloc = self.lloc, self.uloc + if self.isGhost: + if self.lseg.type == hintSegment.sType.GHOST: + lloc = uloc + uloc = lloc - 20 + else: + uloc = lloc + lloc = uloc + 21 + return (lloc, uloc) + + def compVal(self, spcFactor=1, ghostFactor=1): + """Represent self.val and self.spc as a comparable 2-tuple""" + v = self.val + if self.isGhost: + v *= ghostFactor + if self.spc > 0: + v *= spcFactor + return (v, self.initialVal) + + def show(self, isV, typ): + """Add a log message with the content of the object""" + tags = ('v', 'l', 'r', 'b', 't') if isV else ('h', 'b', 't', 'l', 'r') + start = "%s %sval %s %g %s %g v %g s %g %s" % (typ, tags[0], tags[1], + self.lloc, tags[2], + self.uloc, self.val, + self.spc, + 'G' if self.isGhost + else '') + if self.lseg is None: + log.debug(start) + return + log.debug("%s %s1 %g %s1 %g %s2 %g %s2 %g" % + (start, tags[3], self.lseg.min, tags[4], self.lseg.max, + tags[3], self.useg.min, tags[4], self.useg.max)) + + +class pathElementHintState: + """Stores the intermediate hint state of a pathElement""" + def __init__(self): + self.s_segs = [] + self.m_segs = [] + self.e_segs = [] + self.mask = [] + + def cleanup(self): + """Updates and deletes segments according to deleted and replacedBy""" + for l in (self.s_segs, self.m_segs, self.e_segs): + l[:] = [x for x in (s.current() for s in l) if not x.deleted] + + def pruneHintSegs(self): + """Deletes segments with no assigned hintval""" + for l in (self.s_segs, self.m_segs, self.e_segs): + l[:] = [s for s in l if s.hintval is not None] + + def segments(self): + return [s for s in self.s_segs + self.m_segs + self.e_segs] + + def segLists(self, first=None): + if first is None or first == 's': + return (('s', self.s_segs), ('m', self.m_segs), ('e', self.e_segs)) + elif first == 'm': + return (('m', self.m_segs), ('s', self.s_segs), ('e', self.e_segs)) + elif first == 'e': + return (('e', self.e_segs), ('m', self.m_segs), ('s', self.s_segs)) + + +class glyphHintState: + """ + Stores the intermediate hint state (for one dimension) of a glyphData + object + + peStates: A hash of pathElementHintState objects with the pathElement as + key + increasingSegs: Segments with endpoints (in the opposite dimension) greater + than their start points + decreasingSegs: Segments with endpoints (in the opposite dimension) less + than their start points + stemValues: List of stemValue objects in increasing order of position + mainValues: List of non-overlapping "main" stemValues in decreasing order + of value + rejectValues: The set of stemValues - mainValues + counterHinted: True if the glyph is counter hinted in this dimension + stems: stemValue stems represented in glyphData 'stem' object format + weights: weights corresponding to 'stems', for resolving conflicts + keepHints: If true, keep already defined hints and masks in this dimension + (XXX only partially implemented) + hasOverlaps: True when some stemValues overlap + stemOverlaps: 2d boolean array. Stem n "overlaps" with stem m <=> + stemOverlaps[n][m] == True + ghostCompat: if stem m is a ghost stem, ghostCompat[m] is a boolean + array where ghostCompat[m][n] is True <=> n can substitute + for m (n has the same location on the relevant side) + mainMask: glyphData hintmask-like representation of mainValues + """ + def __init__(self): + self.peStates = {} + self.overlapRemoved = None + self.increasingSegs = [] + self.decreasingSegs = [] + self.stemValues = [] + self.mainValues = None + self.rejectValues = None + self.counterHinted = False + self.stems = None # in sorted glyphData format + self.weights = None + self.keepHints = None + self.hasOverlaps = None + self.stemOverlaps = None + self.ghostCompat = None + self.goodMask = None + self.mainMask = None + + def getPEState(self, pe, make=False): + """ + Returns the pathElementHintState object for pe, allocating the object + if necessary + """ + s = self.peStates.get(pe, None) + if s: + return s + if make: + s = self.peStates[pe] = pathElementHintState() + return s + else: + return None + + def addSegment(self, fr, to, loc, pe1, pe2, typ, bonus, isV, mid1, mid2, + desc): + """Adds a new segment associated with pathElements pe1 and pe2""" + if isV: + pp = ('v', loc, fr, loc, to, desc) + else: + pp = ('h', fr, loc, to, loc, desc) + log.debug("add %sseg %g %g to %g %g %s" % pp) + if fr > to: + mn, mx = to, fr + isInc = False + lst = self.decreasingSegs + else: + mn, mx = fr, to + isInc = True + lst = self.increasingSegs + + assert pe1 or pe2 + s = hintSegment(loc, mn, mx, pe2 if pe2 else pe1, typ, bonus, isV, + isInc, desc) + # Segments derived from the first point in a path c are typically + # also added to the previous spline p, with p passed as pe1 and c + # passed as pe2. Segments derived from the last point in a path + # are only added to that path, passed as pe1. pe1 is therefore the + # "end point position" and pe2 the "start point position" except in + # the special case of MCURVE, which indicates the point was derived + # from the middle of the spline. + if pe1: + if mid1: + self.getPEState(pe1, True).m_segs.append(s) + else: + self.getPEState(pe1, True).e_segs.append(s) + if pe2: + if mid2: + self.getPEState(pe2, True).m_segs.append(s) + else: + self.getPEState(pe2, True).s_segs.append(s) + + bisect.insort(lst, s) + + def compactList(self, l): + """ + Compacts overlapping segments with the same location by picking + one segment to represent the pair, adjusting its values, and + removing the other segment + """ + i = 0 + while i < len(l): + j = i + 1 + while j < len(l) and feq(l[j].loc, l[i].loc): + if l[i].max >= l[j].min and l[i].min <= l[j].max: + if abs(l[i].max - l[i].min) > abs(l[j].max - l[j].min): + l[i].min = min(l[i].min, l[j].min) + l[i].max = max(l[i].max, l[j].max) + l[i].bonus = max(l[i].bonus, l[j].bonus) + l[j].replacedBy = l[i] + del l[j] + continue + else: + l[j].min = min(l[i].min, l[j].min) + l[j].max = max(l[i].max, l[j].max) + l[j].bonus = max(l[i].bonus, l[j].bonus) + l[i].replacedBy = l[j] + del l[i] + i -= 1 + break + j += 1 + i += 1 + + def compactLists(self): + """Compacts both segment lists""" + self.compactList(self.decreasingSegs) + self.compactList(self.increasingSegs) + + def remExtraBends(self): + """ + Delete BEND segment x when there is another segment y: + 1. At the same location + 2. but in the other direction + 2. that is not of type BEND or GHOST and + 3. that overlaps with x and + 4. is at least three times longer + """ + for hsi in self.increasingSegs: + lo = bisect.bisect_left(self.decreasingSegs, hsi) + hi = bisect.bisect_right(self.decreasingSegs, hsi, lo=lo) + for hsd in self.decreasingSegs[lo:hi]: + assert hsd.loc == hsi.loc + if hsd.min < hsi.max and hsd.max > hsi.min: + if (hsi.type == hintSegment.sType.BEND and + hsd.type != hintSegment.sType.BEND and + hsd.type != hintSegment.sType.GHOST and + (hsd.max - hsd.min) > (hsi.max - hsi.min) * 3): + hsi.deleted = True + log.debug("rem seg loc %g from %g to %g" % + (hsi.loc, hsi.min, hsi.max)) + break + elif (hsd.type == hintSegment.sType.BEND and + hsi.type != hintSegment.sType.BEND and + hsi.type != hintSegment.sType.GHOST and + (hsi.max - hsi.min) > (hsd.max - hsd.min) * 3): + hsd.deleted = True + log.debug("rem seg loc %g from %g to %g" % + (hsd.loc, hsd.min, hsd.max)) + + def deleteSegments(self): + for s in self.increasingSegs: + s.deleted = True + for s in self.decreasingSegs: + s.deleted = True + self.increasingSegs = [] + self.decreasingSegs = [] + self.cleanup() + + def cleanup(self): + """Runs cleanup on all pathElementHintState objects""" + self.increasingSegs = [s for s in self.increasingSegs if not s.deleted] + self.decreasingSegs = [s for s in self.decreasingSegs if not s.deleted] + for pes in self.peStates.values(): + pes.cleanup() + + def pruneHintSegs(self): + """Runs pruneHintSegs on all pathElementHintState objects""" + for pes in self.peStates.values(): + pes.pruneHintSegs() + + +class stemLocCandidate: + strongMultiplier = 1.2 + bandMultiplier = 2.0 + """ + Information about a candidate location for a stem in a region + glyph, derived from segments generated for the glyph or, + occasionally, directly from point locations. + """ + def __init__(self, loc): + self.loc = loc + self.strong = 0 + self.weak = 0 + + def addScore(self, score, strong): + if strong: + self.strong += score + else: + self.weak += score + + def weight(self, inBand): + return ((self.strong * self.strongMultiplier + self.weak) * + (self.bandMultiplier if inBand else 1)) + + def isStrong(self): + return self.strong > 0 + + def isMixed(self): + return self.strong > 0 and self.weak > 0 + + def __eq__(self, other): + return feq(self.strong, other.strong) and feq(self.weak, other.weak) + + def __lt__(self, other): + return (self.strong < other.strong or + (feq(self.strong, other.strong) and self.weak < other.weak)) + + +class instanceStemState: + """ + State for the process of deciding on the lower and upper locations + for a particular region stem. + """ + def __init__(self, loc, dhinter): + self.defaultLoc = loc + self.dhinter = dhinter + self.candDict = {} + self.usedSegs = set() + self.bb = None + + def addToLoc(self, loc, score, strong=False, bb=False, seg=None): + if self.bb is not None: + if self.bb != bb: + log.info("Mixed bounding-box and " + "non-bounding box location data") + else: + self.bb = bb + if seg is not None: + sid = id(seg) + if sid in self.usedSegs: + return + self.usedSegs.add(sid) + if loc in self.candDict: + sLC = self.candDict[loc] + else: + sLC = self.candDict[loc] = stemLocCandidate(loc) + sLC.addScore(score, strong) + + def bestLocation(self, isBottom): + weights = [(x.weight(self.dhinter.inBand(x.loc, isBottom)), x.loc) + for x in self.candDict.values()] + try: + m = max(weights) +# try: +# next_m = m +# while abs(next_m[1] - m[1]) < 3.01: +# weights.remove(next_m) +# next_m = max(weights) +# if m[0] < next_m[0] * 2: +# log.warning("Stem location competition: " +# "weight %s vs %s" % (m, next_m)) +# except: +# pass + return m[1] + except ValueError: + return None + + +class links: + """ + Tracks which subpaths need which stem hints and calculates a subpath + to reduce hint substitution + + cnt: The number of subpaths + links: A cnt x cnt array of integers modified by mark + (Values only 0 or 1 but kept as ints for later arithmetic) + """ + def __init__(self, glyph): + l = len(glyph.subpaths) + if l < 4 or l > 100: + self.cnt = 0 + return + self.cnt = l + self.links = [[0] * l for i in range(l)] + + def logLinks(self): + """Prints a log message representing links""" + if self.cnt == 0: + return + log.debug("Links") + log.debug(' '.join((str(i).rjust(2) for i in range(self.cnt)))) + for j in range(self.cnt): + log.debug(' '.join((('Y' if self.links[j][i] else ' ').rjust(2) + for i in range(self.cnt)))) + + def logShort(self, shrt, lab): + """Prints a log message representing (1-d) shrt""" + log.debug(lab) + log.debug(' '.join((str(i).rjust(2) for i in range(self.cnt)))) + log.debug(' '.join(((str(shrt[i]) if shrt[i] else ' ').rjust(2) + for i in range(self.cnt)))) + + def mark(self, stemValues, isV): + """ + For each stemValue in hntr, set links[m][n] and links[n][m] to 1 + if one side of a stem is in m and the other is in n + """ + if self.cnt == 0: + return + for sv in stemValues: + if not sv.lseg or not sv.useg or not sv.lseg.pe or not sv.useg.pe: + continue + lsubp, usubp = sv.lseg.pe().position[0], sv.useg.pe().position[0] + if lsubp == usubp: + continue + sv.show(isV, "mark") + log.debug(" : %d <=> %d" % (lsubp, usubp)) + self.links[lsubp][usubp] = 1 + self.links[usubp][lsubp] = 1 + + def moveIdx(self, suborder, subidxs, outlinks, idx): + """ + Move value idx from subidxs to the end of suborder and update + outlinks to record all links shared with idx + """ + subidxs.remove(idx) + suborder.append(idx) + for i in range(len(outlinks)): + outlinks[i] += self.links[idx][i] + self.logShort(outlinks, "Outlinks") + + def shuffle(self): + """ + Returns suborder list with all subpath indexes in decreasing + order of links shared with previous subpath. (The first subpath + being the one with most links overall.) + """ + if self.cnt == 0: + return None + sumlinks = [sum(l) for l in zip(*self.links)] + outlinks = [0] * self.cnt + self.logLinks() + self.logShort(sumlinks, "Sumlinks") + subidxs = list(range(self.cnt)) + suborder = [] + while subidxs: + # negate s to preserve all-links-equal subpath ordering + _, bst = max(((sumlinks[s], -s) for s in subidxs)) + self.moveIdx(suborder, subidxs, outlinks, -bst) + while True: + try: + _, _, bst = max(((outlinks[s], sumlinks[s], -s) + for s in subidxs if outlinks[s] > 0)) + except ValueError: + break + self.moveIdx(suborder, subidxs, outlinks, -bst) + return suborder diff --git a/python/afdko/otfautohint/logging.py b/python/afdko/otfautohint/logging.py new file mode 100644 index 000000000..e9c6aa230 --- /dev/null +++ b/python/afdko/otfautohint/logging.py @@ -0,0 +1,121 @@ +# Copyright 2014,2021 Adobe. All rights reserved. + +""" +Auto-hinting program for PostScript, OpenType/CFF and UFO fonts. +""" + +import logging +import logging.handlers + +log_glyph = '' +log_instance = '' +log_dimension = '' + + +class DuplicateMessageFilter(logging.Filter): + """ + Suppresses any log message that was reported before in the same module and + for the same logging level. We check for module and level number in + addition to the message just in case, though checking the message only is + probably enough. + """ + + def __init__(self): + super(DuplicateMessageFilter, self).__init__() + self.logs = set() + + def filter(self, record): + current = (record.module, record.levelno, record.getMessage()) + if current in self.logs: + return False + self.logs.add(current) + return True + + +class otfautoLogFormatter(logging.Formatter): + def __init__(self, fmt, datefmt=None, verbose=False): + super().__init__(fmt, datefmt) + self.verbose = verbose + + def format(self, record): + if self.verbose: + verbose_field = "[%s:%d] " % (record.filename, record.lineno) + else: + verbose_field = '' + if record.dimension != '': + dim_field = record.dimension + ' ' + else: + dim_field = '' + if record.instance != '' and record.glyph != '': + glyph_field = '(%s, "%s") ' % (record.glyph, record.instance) + elif record.glyph != '': + glyph_field = '(%s) ' % (record.glyph) + else: + glyph_field = '' + return (verbose_field + glyph_field + dim_field + + super().format(record)) + + +def set_log_parameters(dimension=None, glyph=None, instance=None): + global log_glyph, log_dimension, log_instance + if glyph is not None: + log_glyph = glyph + if dimension is not None: + log_dimension = dimension + if instance is not None: + log_instance = instance + + +def logging_conf(verbose, logfile=None, handlers=None): + if verbose == 0: + log_level = logging.WARNING + else: + if verbose == 1: + log_level = logging.INFO + else: + log_level = logging.DEBUG + + if handlers is not None: + logging.basicConfig(level=log_level, handlers=handlers) + else: + logging.basicConfig(level=log_level, filename=logfile) + + old_factory = logging.getLogRecordFactory() + + def otfautohint_record_factory(*args, **kwargs): + record = old_factory(*args, **kwargs) + record.glyph = log_glyph + record.instance = log_instance + record.dimension = log_dimension + return record + + logging.setLogRecordFactory(otfautohint_record_factory) + + fmt = otfautoLogFormatter("%(levelname)s: %(message)s", + verbose=verbose > 1) + + for handler in logging.root.handlers: + handler.setFormatter(fmt) + if log_level == logging.WARNING: + handler.addFilter(DuplicateMessageFilter()) + + +def log_receiver(logQueue): + while True: + record = logQueue.get() + if record is None: + break + logger = logging.getLogger(record.name) + logger.handle(record) + + +def logging_reconfig(logQueue, verbose=0): + qh = logging.handlers.QueueHandler(logQueue) + root = logging.getLogger() + if root.handlers: + # Already configured logging to just swap out handlers + for h in root.handlers: + root.removeHandler(h) + root.addHandler(qh) + else: + logging_conf(verbose, None, [qh]) diff --git a/python/afdko/otfautohint/otfFont.py b/python/afdko/otfautohint/otfFont.py new file mode 100644 index 000000000..d4b0f276f --- /dev/null +++ b/python/afdko/otfautohint/otfFont.py @@ -0,0 +1,731 @@ +# Copyright 2014 Adobe. All rights reserved. + +""" +Utilities for converting between T2 charstrings and glyphData objects. +""" + +import copy +import logging +import os +import subprocess +import tempfile +from fontTools.misc.psCharStrings import T2OutlineExtractor +from fontTools.ttLib import TTFont, newTable +from fontTools.misc.roundTools import noRound, otRound +from fontTools.varLib.varStore import VarStoreInstancer +from fontTools.varLib.cff import CFF2CharStringMergePen, MergeOutlineExtractor +# import subset.cff is needed to load the implementation for +# CFF.desubroutinize: the module adds this class method to the CFF and CFF2 +# classes. +import fontTools.subset.cff + +from . import fdTools, FontParseError +from .glyphData import glyphData + +# keep linting tools quiet about unused import +assert fontTools.subset.cff is not None + +log = logging.getLogger(__name__) + +kStackLimit = 46 +kStemLimit = 96 + + +class SEACError(Exception): + pass + + +def _add_method(*clazzes): + """Returns a decorator function that adds a new method to one or + more classes.""" + def wrapper(method): + done = [] + for clazz in clazzes: + if clazz in done: + continue # Support multiple names of a clazz + done.append(clazz) + assert clazz.__name__ != 'DefaultTable', \ + 'Oops, table class not found.' + assert not hasattr(clazz, method.__name__), \ + "Oops, class '%s' has method '%s'." % (clazz.__name__, + method.__name__) + setattr(clazz, method.__name__, method) + return None + return wrapper + + +def hintOn(i, hintMaskBytes): + """Used to help convert T2 hintmask bytes to a boolean array""" + byteIndex = int(i / 8) + byteValue = hintMaskBytes[byteIndex] + offset = 7 - (i % 8) + return ((2**offset) & byteValue) > 0 + + +def denormalizeValue(nv, a): + l, d, u = a.minValue, a.defaultValue, a.maxValue + assert l <= d <= u + if nv == 0: + v = d + elif nv < 0: + v = l + (d - l) * (1 + nv) + else: + v = d + (u - d) * nv + return v + + +def denormalizeLocation(loc, axes): + return {a.axisTag: denormalizeValue(loc.get(a.axisTag, a.defaultValue), a) + for a in axes} + + +class T2ToGlyphDataExtractor(T2OutlineExtractor): + """ + Inherits from the fontTools Outline Extractor and adapts some of the + operator methods to match the "hint pen" interface of the glyphData class + """ + def __init__(self, gd, localSubrs, globalSubrs, nominalWidthX, + defaultWidthX, readStems=True, readFlex=True): + T2OutlineExtractor.__init__(self, gd, localSubrs, globalSubrs, + nominalWidthX, defaultWidthX) + self.glyph = gd + self.readStems = readStems + self.readFlex = readFlex + self.hintMaskBytes = None + self.vhintCount = 0 + self.hhintCount = 0 + + def op_endchar(self, index): + self.endPath() + args = self.popallWidth() + if args: # It is a 'seac' composite character. Don't process + raise SEACError + + def op_hflex(self, index): + if self.readFlex: + self.glyph.nextIsFlex() + super().op_hflex(index) + + def op_flex(self, index): + if self.readFlex: + self.glyph.nextIsFlex() + super().op_flex(index) + + def op_hflex1(self, index): + if self.readFlex: + self.glyph.nextIsFlex() + super().op_hflex1(index) + + def op_flex1(self, index): + if self.readFlex: + self.glyph.nextIsFlex() + super().op_flex1(index) + + def op_hstem(self, index): + args = self.popallWidth() + self.countHints(args, True) + if not self.readStems: + return + self.glyph.hStem(args, False) + + def op_vstem(self, index): + args = self.popallWidth() + self.countHints(args, False) + if not self.readStems: + return + self.glyph.vStem(args, False) + + def op_hstemhm(self, index): + args = self.popallWidth() + self.countHints(args, True) + if not self.readStems: + return + self.glyph.hStem(args, True) + + def op_vstemhm(self, index): + args = self.popallWidth() + self.countHints(args, False) + if not self.readStems: + return + self.glyph.vStem(args, True) + + def countHints(self, args, horiz): + if horiz: + self.hhintCount += len(args) // 2 + else: + self.vhintCount += len(args) // 2 + + def doMask(self, index, cntr=False): + args = [] + if not self.hintMaskBytes: + args = self.popallWidth() + if args: + # values after stems operators followed by a + # hint/cntrmask is an implicit vstem(hm)) + self.countHints(args, False) + self.glyph.vStem(args, None if cntr else True) + + self.hintMaskBytes = (self.vhintCount + self.hhintCount + 7) // 8 + + hintMaskString, index = self.callingStack[-1].getBytes( + index, self.hintMaskBytes) + + tc = self.hhintCount + self.vhintCount + hhints = [hintOn(i, hintMaskString) for i in range(self.hhintCount)] + vhints = [hintOn(i, hintMaskString) + for i in range(self.hhintCount, tc)] + return hintMaskString, hhints, vhints, index + + def op_hintmask(self, index): + hintString, hhints, vhints, index = self.doMask(index) + if self.readStems: + self.glyph.hintmask(hhints, vhints) + return hintString, index + + def op_cntrmask(self, index): + hintString, hhints, vhints, index = self.doMask(index, True) + if self.readStems: + self.glyph.cntrmask(hhints, vhints) + return hintString, index + + +def convertT2ToGlyphData(t2CharString, readStems=True, readFlex=True, + roundCoords=True, name=None): + """Wrapper method for T2ToGlyphDataExtractor execution""" + gl = glyphData(roundCoords=roundCoords, name=name) + subrs = getattr(t2CharString.private, "Subrs", []) + extractor = T2ToGlyphDataExtractor(gl, subrs, + t2CharString.globalSubrs, + t2CharString.private.nominalWidthX, + t2CharString.private.defaultWidthX, + readStems, readFlex) + extractor.execute(t2CharString) + t2_width_arg = None + if extractor.gotWidth and (extractor.width is not None): + t2_width_arg = extractor.width - t2CharString.private.nominalWidthX + gl.setWidth(t2_width_arg) + return gl + + +def _run_tx(args): + try: + subprocess.check_call(["tx"] + args, stderr=subprocess.DEVNULL) + except (subprocess.CalledProcessError, OSError) as e: + raise FontParseError(e) + + +class CFFFontData: + def __init__(self, path, font_format): + self.inputPath = path + self.font_format = font_format + self.is_cff2 = False + self.is_vf = False + self.vs_data_models = None + self.desc = None + if font_format == "OTF": + # It is an OTF font, we can process it directly. + font = TTFont(path) + if "CFF " in font: + cff_format = "CFF " + elif "CFF2" in font: + cff_format = "CFF2" + self.is_cff2 = True + else: + raise FontParseError("OTF font has no CFF table <%s>." % path) + else: + # Else, package it in an OTF font. + cff_format = "CFF " + if font_format == "CFF": + with open(path, "rb") as fp: + data = fp.read() + else: + fd, temp_path = tempfile.mkstemp() + os.close(fd) + try: + _run_tx(["-cff", "+b", "-std", path, temp_path]) + with open(temp_path, "rb") as fp: + data = fp.read() + finally: + os.remove(temp_path) + + font = TTFont() + font['CFF '] = newTable('CFF ') + font['CFF '].decompile(data, font) + + self.ttFont = font + self.cffTable = font[cff_format] + + # for identifier in glyph-list: + # Get charstring. + self.topDict = self.cffTable.cff.topDictIndex[0] + self.charStrings = self.topDict.CharStrings + if 'fvar' in self.ttFont: + # have not yet collected VF global data. + self.is_vf = True + self.glyph_programs = [] + self.vsIndexMap = {} + self.axes = self.ttFont['fvar'].axes + CFF2 = self.cffTable + CFF2.desubroutinize() + topDict = CFF2.cff.topDictIndex[0] + # We need a new charstring object into which we can save the + # hinted CFF2 program data. Copying an existing charstring is a + # little easier than creating a new one and making sure that all + # properties are set correctly. + self.temp_cs_extract = copy.deepcopy(self.charStrings['.notdef']) + self.temp_cs_merge = copy.deepcopy(self.charStrings['.notdef']) + self.vs_data_models = self.get_vs_data_models(topDict, self.axes) + + def getGlyphList(self): + return self.ttFont.getGlyphOrder() + + def getPSName(self): + if self.is_cff2 and 'name' in self.ttFont: + psName = next((name_rec.string for name_rec in self.ttFont[ + 'name'].names if (name_rec.nameID == 6) and ( + name_rec.platformID == 3))) + psName = psName.decode('utf-16be') + else: + psName = self.cffTable.cff.fontNames[0] + return psName + + def get_min_max(self, upm): + if self.is_cff2 and 'hhea' in self.ttFont: + font_max = self.ttFont['hhea'].ascent + font_min = self.ttFont['hhea'].descent + elif hasattr(self.topDict, 'FontBBox'): + font_max = self.topDict.FontBBox[3] + font_min = self.topDict.FontBBox[1] + else: + font_max = upm * 1.25 + font_min = -upm * 0.25 + return font_min, font_max + + def convertToGlyphData(self, glyphName, readStems, readFlex, + roundCoords, doAll=False): + t2CharString = self.charStrings[glyphName] + try: + gl = convertT2ToGlyphData(t2CharString, readStems, readFlex, + roundCoords, name=glyphName) + except SEACError: + log.warning("Skipping %s: can't process SEAC composite glyphs.", + glyphName) + gl = None + return gl + + def updateFromGlyph(self, gl, glyphName): + if gl is None: + return + t2Program = gl.T2() + + if not self.is_cff2: + t2_width_arg = gl.getWidth() + if t2_width_arg is not None: + t2Program = [t2_width_arg] + t2Program + if self.vs_data_models is not None: + # It is a variable font. Accumulate the charstrings. + self.glyph_programs.append(t2Program) + else: + # This is an MM source font. Update the font's charstring directly. + t2CharString = self.charStrings[glyphName] + # Not used but useful for debugging save failures + t2CharString._name = glyphName + t2CharString.program = t2Program + + def save(self, path): + if path is None: + path = self.inputPath + + if self.font_format == "OTF": + self.ttFont.save(path) + self.ttFont.close() + else: + data = self.ttFont["CFF "].compile(self.ttFont) + if self.font_format == "CFF": + with open(path, "wb") as fp: + fp.write(data) + else: + fd, temp_path = tempfile.mkstemp() + os.write(fd, data) + os.close(fd) + + try: + args = ["-t1", "-std"] + if self.font_format == "PFB": + args.append("-pfb") + _run_tx(args + [temp_path, path]) + finally: + os.remove(temp_path) + + def close(self): + self.ttFont.close() + + def isCID(self): + # XXX wrong for variable font + return hasattr(self.topDict, "FDSelect") + + def getPrivateDictVal(self, pDict, attr, default, vsindex, vsi): + val = getattr(pDict, attr, default) + if attr in ('BlueValues', 'OtherBlues', 'FamilyBlues', + 'FamilyOtherBlues', 'StemSnapH', 'StemSnapV'): + last_def = 0 + last_calc = 0 + vlist = [] + for dl in val: + if isinstance(dl, list): + assert vsi is not None + calc = (dl[0] - last_def + + vsi.interpolateFromDeltas(vsindex, dl[1:])) + vlist.append(last_calc + calc) + last_def = dl[0] + last_calc += calc + else: + vlist.append(dl) + last_def = last_calc = dl + val = vlist + else: + if isinstance(val, list): + assert vsi is not None + val = val[0] + vsi.interpolateFromDeltas(vsindex, val[1:]) + + return val + + def getPrivateFDDict(self, allow_no_blues, noFlex, vCounterGlyphs, + hCounterGlyphs, desc, fdIndex=0, gl_vsindex=None): + pTopDict = self.topDict + if hasattr(pTopDict, "FDArray"): + pDict = pTopDict.FDArray[fdIndex] + else: + assert fdIndex == 0 + pDict = pTopDict + privateDict = pDict.Private + + if self.is_vf: + dict_vsindex = getattr(privateDict, 'vsindex', 0) + if gl_vsindex is None: + gl_vsindex = dict_vsindex + vs_data_model = self.vs_data_models[gl_vsindex] + vsi_list = vs_data_model.master_vsi_list + else: + assert gl_vsindex is None + dict_vsindex = None + vsi_list = [None] + fontName = desc + + fdDictArray = [] + + for vn, vsi in enumerate(vsi_list): + if self.is_vf: + fontName = self.getInstanceName(vn, vsi, self.axes) + if fontName is None: + fontName = "Model %d Instance %d" % (gl_vsindex, vn) + fdDict = fdTools.FDDict(fdIndex, fontName=fontName) + fdDict.setInfo('LanguageGroup', + self.getPrivateDictVal(privateDict, + 'LanguageGroup', 0, + dict_vsindex, vsi)) + + if not self.is_cff2 and hasattr(pDict, "FontMatrix"): + fontMatrix = pDict.FontMatrix + upm = int(1 / fontMatrix[0]) + elif hasattr(pTopDict, 'FontMatrix'): + fontMatrix = pTopDict.FontMatrix + upm = int(1 / fontMatrix[0]) + else: + upm = 1000 + fdDict.setInfo('OrigEmSqUnits', upm) + + for bvattr, bvkeys in (('BlueValues', + fdTools.kBlueValueKeys), + ('OtherBlues', + fdTools.kOtherBlueValueKeys)): + bvs = self.getPrivateDictVal(privateDict, bvattr, [], + dict_vsindex, vsi) + numbvs = len(bvs) + if bvattr == 'BlueValues' and numbvs < 4: + low, high = self.get_min_max(upm) + low = min(-upm * 0.25, low) + high = max(upm * 1.25, high) + # Make a set of inactive alignment zones: zones outside + # of the font BBox so as not to affect hinting. Used + # when source font has no BlueValues or has invalid + # BlueValues. Some fonts have bad BBox values, so I + # don't let this be smaller than -upm*0.25, upm*1.25. + inactiveAlignmentValues = [low, low, high, high] + if allow_no_blues or self.is_vf: + # XXX adjusted for vf + bvs = inactiveAlignmentValues + numbvs = len(bvs) + else: + raise FontParseError("Font must have at least four " + + "values in its %s " % bvattr + + "array for PSAutoHint to work!") + bvs.sort() + + # The first pair only is a bottom zone, where the first value + # is the overshoot position. The rest are top zones, and second + # value of the pair is the overshoot position. + if bvattr == 'BlueValues': + bvs[0] = bvs[0] - bvs[1] + for i in range(3, numbvs, 2): + bvs[i] = bvs[i] - bvs[i - 1] + else: + for i in range(0, numbvs, 2): + bvs[i] = bvs[i] - bvs[i + 1] + + numbvs = min(numbvs, len(bvkeys)) + for i in range(numbvs): + key = bvkeys[i] + value = bvs[i] + fdDict.setInfo(key, value) + + for ssnap, stdw, fdkey in (('StemSnapV', 'StdVW', 'DominantV'), + ('StemSnapH', 'StdHW', 'DominantH')): + if hasattr(privateDict, ssnap): + sstems = self.getPrivateDictVal(privateDict, ssnap, + [], dict_vsindex, vsi) + elif hasattr(privateDict, stdw): + sstems = [self.getPrivateDictVal(privateDict, stdw, + -1, dict_vsindex, vsi)] + else: + if allow_no_blues or self.is_vf: + # XXX adjusted for vf + # dummy value. Needs to be larger than any hint will + # likely be, as the autohint program strips out any + # hint wider than twice the largest global stem width. + sstems = [upm] + else: + raise FontParseError("Font has neither %s nor %s!" % + (ssnap, stdw)) + sstems.sort() + if (len(sstems) == 0) or ((len(sstems) == 1) and + (sstems[0] < 1)): + sstems = [upm] # dummy value that will allow PyAC to run + log.warning("There is no value or 0 value for %s." % fdkey) + fdDict.setInfo(fdkey, sstems) + + if noFlex: + fdDict.setInfo('FlexOK', False) + else: + fdDict.setInfo('FlexOK', True) + + # Add candidate lists for counter hints, if any. + if vCounterGlyphs: + fdDict.setInfo('VCounterChars', vCounterGlyphs) + if hCounterGlyphs: + fdDict.setInfo('HCounterChars', hCounterGlyphs) + + fdDict.setInfo('BlueFuzz', + self.getPrivateDictVal(privateDict, 'BlueFuzz', + 1, dict_vsindex, vsi)) + fdDict.buildBlueLists() + + if not self.is_vf: + return fdDict + + fdDictArray.append(fdDict) + + assert self.is_vf + return fdDictArray, gl_vsindex + + def getfdIndex(self, name): + gid = self.ttFont.getGlyphID(name) + if gid is None: + return None + if hasattr(self.topDict, "FDSelect"): + fdIndex = self.topDict.FDSelect[gid] + else: + fdIndex = 0 + return fdIndex + + def isVF(self): + return self.is_vf + + def getInputPath(self): + return self.inputPath + + def getPrivateDict(self, fdIndex): + topDict = self.topDict + if hasattr(topDict, "FDArray"): + assert fdIndex < len(topDict.FDArray) + private = topDict.FDArray[fdIndex].Private + else: + assert fdIndex == 0 + private = topDict.Private + return private + + def mergePrivateMap(self, privateMap): + privateDict = self.getPrivateDict(0) + for k, v in privateMap.items(): + setattr(privateDict, k, v) + + @staticmethod + def getInstanceName(vn, vsi, axes): + if vn == 0: + vals = (f'{v:g}' for v in (a.defaultValue for a in axes)) + return 'DEF{' + ','.join(vals) + '}' + else: + vals = (f'{v:g}' + for v in denormalizeLocation(vsi.location, axes).values()) + return '{' + ','.join(vals) + '}' + + def get_vf_glyphs(self, glyph_name): + charstring = self.charStrings[glyph_name] + + if 'vsindex' in charstring.program: + op_index = charstring.program.index('vsindex') + vsindex = charstring.program[op_index - 1] + self.vsIndexMap[glyph_name] = (vsindex, True) + else: + privateDict = self.getPrivateDict(self.getfdIndex(glyph_name)) + vsindex = getattr(privateDict, 'vsindex', 0) + self.vsIndexMap[glyph_name] = (vsindex, False) + vs_data_model = self.vs_data_models[vsindex] + + glyph_list = [] + for vsi in vs_data_model.master_vsi_list: + iFD = vsi.interpolateFromDeltas + t2_program = interpolate_cff2_charstring(charstring, glyph_name, + iFD, vsindex) + self.temp_cs_extract.program = t2_program + glyph = convertT2ToGlyphData(self.temp_cs_extract, True, False, + True, name=glyph_name) + glyph_list.append(glyph) + + return glyph_list, vsindex + + @staticmethod + def get_vs_data_models(topDict, axes): + otvs = topDict.VarStore.otVarStore + region_list = otvs.VarRegionList.Region + axis_tags = [axis_entry.axisTag for axis_entry in axes] + vs_data_models = [] + for vsindex, var_data in enumerate(otvs.VarData): + vsi = VarStoreInstancer(topDict.VarStore.otVarStore, axes, {}) + master_vsi_list = [vsi] + for region_idx in var_data.VarRegionIndex: + region = region_list[region_idx] + loc = {} + for i, axis in enumerate(region.VarRegionAxis): + loc[axis_tags[i]] = axis.PeakCoord + vsi = VarStoreInstancer(topDict.VarStore.otVarStore, axes, + loc) + master_vsi_list.append(vsi) + vdm = VarDataModel(var_data, vsindex, master_vsi_list) + vs_data_models.append(vdm) + return vs_data_models + + def merge_hinted_glyphs(self, name): + vsindex, addIndex = self.vsIndexMap[name] + new_t2cs = merge_hinted_programs(self.temp_cs_merge, + self.glyph_programs, name, + self.vs_data_models[vsindex]) + if addIndex: + new_t2cs.program = [vsindex, 'vsindex'] + new_t2cs.program + self.charStrings[name] = new_t2cs + self.glyph_programs = [] + + +def interpolate_cff2_charstring(charstring, gname, interpolateFromDeltas, + vsindex): + # Interpolate charstring + # e.g replace blend op args with regular args, + # and discard vsindex op. + new_program = [] + last_i = 0 + seenVOP = False + program = charstring.program + for i, token in enumerate(program): + if token == 'vsindex': + if last_i != 0: + new_program.extend(program[last_i:i - 1]) + last_i = i + 1 + seenVOP = True + elif token == 'blend': + num_regions = charstring.getNumRegions(vsindex) + numInstances = 1 + num_regions + num_args = program[i - 1] + # The program list starting at program[i] is now: + # ..args for following operations + # num_args values from the default font + # num_args tuples, each with numInstances-1 delta values + # num_blend_args + # 'blend' + argi = i - (num_args * numInstances + 1) + if last_i != argi: + new_program.extend(program[last_i:argi]) + end_args = tuplei = argi + num_args + master_args = [] + while argi < end_args: + next_ti = tuplei + num_regions + deltas = program[tuplei:next_ti] + val = interpolateFromDeltas(vsindex, deltas) + master_val = program[argi] + master_val += otRound(val) + master_args.append(master_val) + tuplei = next_ti + argi += 1 + new_program.extend(master_args) + last_i = i + 1 + seenVOP = True + if last_i != 0 or not seenVOP: + new_program.extend(program[last_i:]) + return new_program + + +def merge_hinted_programs(charstring, t2_programs, gname, vs_data_model): + num_masters = vs_data_model.num_masters + var_pen = CFF2CharStringMergePen([], gname, num_masters, 0) + charstring.outlineExtractor = MergeOutlineExtractor + + for i, t2_program in enumerate(t2_programs): + var_pen.restart(i) + charstring.program = t2_program + charstring.draw(var_pen) + + new_charstring = var_pen.getCharString( + private=charstring.private, + globalSubrs=charstring.globalSubrs, + var_model=vs_data_model, optimize=True) + return new_charstring + + +@_add_method(VarStoreInstancer) +def get_scalars(self, vsindex, region_idx): + varData = self._varData + # The index key needs to be the master value index, which includes + # the default font value. VarRegionIndex provides the region indices. + scalars = {0: 1.0} # The default font always has a weight of 1.0 + region_index = varData[vsindex].VarRegionIndex + for idx in range(region_idx): # omit the scalar for the region. + scalar = self._getScalar(region_index[idx]) + if scalar: + scalars[idx + 1] = scalar + return scalars + + +class VarDataModel(object): + + def __init__(self, var_data, vsindex, master_vsi_list): + self.var_data = var_data + self.master_vsi_list = master_vsi_list + self._num_masters = len(master_vsi_list) + self.delta_weights = [{}] # for default font value + for region_idx, vsi in enumerate(master_vsi_list[1:]): + scalars = vsi.get_scalars(vsindex, region_idx) + self.delta_weights.append(scalars) + + @property + def num_masters(self): + return self._num_masters + + def getDeltas(self, master_values, *, round=noRound): + assert len(master_values) == len(self.delta_weights) + out = [] + for i, scalars in enumerate(self.delta_weights): + delta = master_values[i] + for j, scalar in scalars.items(): + if scalar: + delta -= out[j] * scalar + out.append(round(delta)) + return out diff --git a/python/afdko/otfautohint/overlap.py b/python/afdko/otfautohint/overlap.py new file mode 100644 index 000000000..4e8834bdc --- /dev/null +++ b/python/afdko/otfautohint/overlap.py @@ -0,0 +1,66 @@ +# Copyright 2022 Adobe. All rights reserved. + +# Portions of the code in removeOverlap are adapted from the MIT-licensed +# booleanOperations python package, located at +# https://github.com/typemytype/booleanOperations +# parts of which are also imported + +from booleanOperations.flatten import InputContour, OutputContour +from booleanOperations.booleanOperationManager import clipExecute +from booleanOperations.booleanGlyph import BooleanGlyph +from fontTools.pens.pointPen import PointToSegmentPen +from .glyphData import glyphData +import logging + +log = logging.getLogger(__name__) + + +def removeOverlap(glyph): + """ + If the glyphData 'glyph' object has overlap, create a new glyphData + object with the overlap removed and return it. If it has no overlap + return None + """ + bg = BooleanGlyph() + pointPen = bg.getPointPen() + pointPen.copyContourData = True + glyph.drawPoints(pointPen) + + inputContours = [InputContour(c) for c in bg.contours if c and len(c) > 1] + inputFlats = [c.originalFlat for c in inputContours] + it = 0 + while True: + resultFlats = clipExecute(inputFlats, [], "union", + subjectFillType="nonZero", + clipFillType="nonZero") + iPoints = set() + for c in inputFlats: + iPoints.update(c) + rPoints = set() + for c in resultFlats: + rPoints.update(c) + intersects = iPoints - rPoints + if not intersects or it >= 8: + break + inputFlats = resultFlats + it += 1 + if not intersects and it == 0: + return None + elif intersects: + log.warning("Could not eliminate all overlap within 8 iterations") + + outputContours = [OutputContour(c) for c in resultFlats] + for ic in inputContours: + for oc in outputContours: + if oc.final: + continue + if oc.reCurveFromEntireInputContour(ic): + break + for oc in outputContours: + oc.reCurveSubSegments(inputContours) + + dest = glyphData(roundCoords=False, name=glyph.name) + pointPen = PointToSegmentPen(dest) + for oc in outputContours: + oc.drawPoints(pointPen) + return dest diff --git a/python/afdko/otfautohint/report.py b/python/afdko/otfautohint/report.py new file mode 100644 index 000000000..5f864325b --- /dev/null +++ b/python/afdko/otfautohint/report.py @@ -0,0 +1,225 @@ +# Copyright 2016, 2022 Adobe. All rights reserved. + +# Methods: + +# Parse args. If glyphlist is from file, read in entire file as single string, +# and remove all white space, then parse out glyph-names and GID's. + +import logging +import time +from collections import defaultdict + +log = logging.getLogger(__name__) + + +class GlyphReport: + """Class to store stem and zone data from a particular glyph""" + def __init__(self, name=None, all_stems=False): + self.name = name + self.hstems = {} + self.vstems = {} + self.hstems_pos = set() + self.vstems_pos = set() + self.char_zones = set() + self.stem_zone_stems = set() + self.all_stems = all_stems + + def clear(self): + self.hstems.clear() + self.vstems.clear() + self.hstems_pos.clear() + self.vstems_pos.clear() + self.char_zones.clear() + self.stem_zones_stems.clear() + + def charZone(self, l, u): + self.char_zones.add((l, u)) + + def stemZone(self, l, u): + self.stem_zone_stems.add((l, u)) + + def stem(self, l, u, isLine, isV=False): + if not isLine and not self.all_stems: + return + if isV: + stems, stems_pos = self.vstems, self.vstems_pos + else: + stems, stems_pos = self.hstems, self.hstems_pos + pair = (l, u) + if pair not in stems_pos: + width = pair[1] - pair[0] + stems[width] = stems.get(width, 0) + 1 + stems_pos.add(pair) + + +class Report: + def __init__(self): + self.glyphs = {} + + @staticmethod + def round_value(val): + if val >= 0: + return int(val + 0.5) + else: + return int(val - 0.5) + + def parse_stem_dict(self, stem_dict): + """ + stem_dict: {45.5: 1, 47.0: 2} + """ + # key: stem width + # value: stem count + width_dict = defaultdict(int) + for width, count in stem_dict.items(): + width = self.round_value(width) + width_dict[width] += count + return width_dict + + def parse_zone_dicts(self, char_dict, stem_dict): + all_zones_dict = char_dict.copy() + all_zones_dict.update(stem_dict) + # key: zone height + # value: zone count + top_dict = defaultdict(int) + bot_dict = defaultdict(int) + for bot, top in all_zones_dict: + top = self.round_value(top) + top_dict[top] += 1 + bot = self.round_value(bot) + bot_dict[bot] += 1 + return top_dict, bot_dict + + def assemble_rep_list(self, items_dict, count_dict): + # item 0: stem/zone count + # item 1: stem width/zone height + # item 2: list of glyph names + gorder = list(self.glyphs.keys()) + rep_list = [] + for item in items_dict: + gnames = list(items_dict[item]) + # sort the names by the font's glyph order + if len(gnames) > 1: + gindexes = [gorder.index(gname) for gname in gnames] + gnames = [x for _, x in sorted(zip(gindexes, gnames))] + rep_list.append((count_dict[item], item, gnames)) + return rep_list + + def _get_lists(self, options): + """ + self.glyphs is a dictionary: + key: glyph name + value: Reports.Glyph object + """ + if not (options.report_stems or options.report_zones): + return [], [], [], [] + + h_stem_items_dict = defaultdict(set) + h_stem_count_dict = defaultdict(int) + v_stem_items_dict = defaultdict(set) + v_stem_count_dict = defaultdict(int) + + top_zone_items_dict = defaultdict(set) + top_zone_count_dict = defaultdict(int) + bot_zone_items_dict = defaultdict(set) + bot_zone_count_dict = defaultdict(int) + + for gName, gr in self.glyphs.items(): + if options.report_stems: + glyph_h_stem_dict = self.parse_stem_dict(gr.hstems) + glyph_v_stem_dict = self.parse_stem_dict(gr.vstems) + + for stem_width, stem_count in glyph_h_stem_dict.items(): + h_stem_items_dict[stem_width].add(gName) + h_stem_count_dict[stem_width] += stem_count + + for stem_width, stem_count in glyph_v_stem_dict.items(): + v_stem_items_dict[stem_width].add(gName) + v_stem_count_dict[stem_width] += stem_count + + if options.report_zones: + tmp = self.parse_zone_dicts(gr.char_zones, gr.stem_zone_stems) + glyph_top_zone_dict, glyph_bot_zone_dict = tmp + + for zone_height, zone_count in glyph_top_zone_dict.items(): + top_zone_items_dict[zone_height].add(gName) + top_zone_count_dict[zone_height] += zone_count + + for zone_height, zone_count in glyph_bot_zone_dict.items(): + bot_zone_items_dict[zone_height].add(gName) + bot_zone_count_dict[zone_height] += zone_count + + # item 0: stem count + # item 1: stem width + # item 2: list of glyph names + h_stem_list = self.assemble_rep_list( + h_stem_items_dict, h_stem_count_dict) + + v_stem_list = self.assemble_rep_list( + v_stem_items_dict, v_stem_count_dict) + + # item 0: zone count + # item 1: zone height + # item 2: list of glyph names + top_zone_list = self.assemble_rep_list( + top_zone_items_dict, top_zone_count_dict) + + bot_zone_list = self.assemble_rep_list( + bot_zone_items_dict, bot_zone_count_dict) + + return h_stem_list, v_stem_list, top_zone_list, bot_zone_list + + @staticmethod + def _sort_count(t): + """ + sort by: count (1st item), value (2nd item), list of glyph names (3rd + item) + """ + return (-t[0], -t[1], t[2]) + + @staticmethod + def _sort_val(t): + """ + sort by: value (2nd item), count (1st item), list of glyph names (3rd + item) + """ + return (t[1], -t[0], t[2]) + + @staticmethod + def _sort_val_reversed(t): + """ + sort by: value (2nd item), count (1st item), list of glyph names (3rd + item) + """ + return (-t[1], -t[0], t[2]) + + def save(self, path, options): + h_stems, v_stems, top_zones, bot_zones = self._get_lists(options) + items = ([h_stems, self._sort_count], + [v_stems, self._sort_count], + [top_zones, self._sort_val_reversed], + [bot_zones, self._sort_val]) + atime = time.asctime() + suffixes = (".hstm.txt", ".vstm.txt", ".top.txt", ".bot.txt") + titles = ("Horizontal Stem List for %s on %s\n" % (path, atime), + "Vertical Stem List for %s on %s\n" % (path, atime), + "Top Zone List for %s on %s\n" % (path, atime), + "Bottom Zone List for %s on %s\n" % (path, atime), + ) + headers = (["count width glyphs\n"] * 2 + + ["count height glyphs\n"] * 2) + + for i, item in enumerate(items): + reps, sortFunc = item + if not reps: + continue + fName = f'{path}{suffixes[i]}' + title = titles[i] + header = headers[i] + with open(fName, "w") as fp: + fp.write(title) + fp.write(header) + reps.sort(key=sortFunc) + for rep in reps: + gnames = ' '.join(rep[2]) + fp.write(f"{rep[0]:5} {rep[1]:5} [{gnames}]\n") + log.info("Wrote %s" % fName) diff --git a/python/afdko/otfautohint/splitpsdicts.py b/python/afdko/otfautohint/splitpsdicts.py new file mode 100644 index 000000000..4fcd603da --- /dev/null +++ b/python/afdko/otfautohint/splitpsdicts.py @@ -0,0 +1,232 @@ +# Copyright 2022 Adobe. All rights reserved. + +import argparse +from copy import deepcopy +import logging +import plistlib +import re +import sys + +from fontTools.ttLib import TTFont +from fontTools.cffLib import FontDict, FDArrayIndex, PrivateDict, FDSelect +from fontTools.designspaceLib import DesignSpaceDocument +from afdko.fdkutils import ( + run_shell_command, + get_temp_file_path, + validate_path, +) + +logger = logging.getLogger(__name__) + + +class ShellCommandError(Exception): + pass + + +def replaceCFF(otfPath, tempFilePath): + if not run_shell_command(['sfntedit', '-a', + f'CFF ={tempFilePath}', otfPath]): + raise ShellCommandError + + +def get_options(args): + parser = argparse.ArgumentParser() + + parser.add_argument( + '-m', + '--metadata', + dest='metaPath', + type=validate_path, + help='path to hinting metadata file', + required=True + ) + + group = parser.add_mutually_exclusive_group(required=True) + group.add_argument( + '-d', + '--designspace', + dest='dsPath', + type=validate_path, + help='path to design space file', + ) + group.add_argument( + '-f', + '--fontpath', + dest='fPath', + type=validate_path, + help='path to individual OTF font to modify', + ) + options = parser.parse_args(args) + + return options + + +class dictspec(): + pass + + +def getDictmap(options): + with open(options.metaPath, "rb") as dictmapfile: + rawdictmap = plistlib.load(dictmapfile) + + dictmap = [] + for name, d in rawdictmap.items(): + dct = dictspec() + dct.name = name + dct.BluePairs = d.get("blue_pairs", []) + dct.OtherPairs = d.get("other_blue_pairs", []) + dct.SIV = d.get("stem_indexes_v", []) + dct.SIH = d.get("stem_indexes_h", []) + dct.re = [] + for r in d.get("regex", []): + dct.re.append(re.compile(r)) + dct.foundGlyph = False + dictmap.append(dct) + + return dictmap + + +def remapDicts(fpath, dictmap): + f = TTFont(fpath) + if 'CFF ' not in f: + logger.error("No CFF table in %s: will not modify" % fpath) + return + + cff = f['CFF '] + top = cff.cff[0] + if hasattr(top, "FDArray"): + logger.error("CFF table in %s already has " % fpath + + "%d private dicts: will not modify" % len(top.FDArray)) + return + + hasExtra = False + + fdselect = top.FDSelect = FDSelect() + for gn in cff.getGlyphOrder(): + done = False + for i, dictspec in enumerate(dictmap): + for r in dictspec.re: + if r.search(gn): + fdselect.append(i) + dictspec.foundGlyph = True + done = True + break + if done: + break + if not done: + fdselect.append(i + 1) + hasExtra = True + + j = 0 + indexMap = [] + newdictmap = [] + for i, dictspec in enumerate(dictmap): + if dictspec.foundGlyph: + newdictmap.append(dictspec) + indexMap.append(j) + j += 1 + else: + logger.warning("No glyphs found for entry %s, skipping" % + dictspec.name) + indexMap.append(-1) + if hasExtra: + indexMap.append(j) + + for i, v in enumerate(fdselect): + assert indexMap[v] != -1 + fdselect[i] = indexMap[v] + + fdarray = top.FDArray = FDArrayIndex() + origPriv = top.Private + # Make sure info doesn't leak though in non-FDArray private dict + top.Private = PrivateDict() + + for dictspec in newdictmap: + npr = deepcopy(origPriv) + for bvals, fvals, indexes in [(getattr(npr, "BlueValues", None), + getattr(npr, "FamilyBlues", None), + dictspec.BluePairs), + (getattr(npr, "OtherBlues", None), + getattr(npr, "FamilyOtherBlues", None), + dictspec.OtherPairs)]: + nbvals = [] + nfvals = [] + for pi in sorted(indexes): + if bvals: + nbvals.extend([bvals[2 * pi], bvals[2 * pi + 1]]) + if fvals: + nfvals.extend([fvals[2 * pi], fvals[2 * pi + 1]]) + if bvals: + bvals[:] = nbvals + if fvals: + fvals[:] = nfvals + snapvs = getattr(npr, "StemSnapV", None) + if snapvs is not None: + npr.StemSnapV[:] = [snapvs[i] for i in dictspec.SIV] + npr.StdVW = npr.StemSnapV[0] + elif getattr(npr, "StdVW", None) is None: + logger.error("No StemSnapV or StdVW in combined dict") + + snaphs = getattr(npr, "StemSnapH", None) + if snaphs is not None: + npr.StemSnapH[:] = [snaphs[i] for i in dictspec.SIH] + npr.StdHW = npr.StemSnapH[0] + elif getattr(npr, "StdHW", None) is None: + logger.error("No StemSnapH or StdHW in combined dict") + + fontDict = FontDict() + fontDict.setCFF2(True) + fontDict.Private = npr + fdarray.append(fontDict) + + # add no-zone dictionary for other glyphs (leave stem sizes) + if hasExtra: + bbox = top.FontBBox + font_max = bbox[3] + font_min = bbox[1] + npr = deepcopy(fdarray[0].Private) # To get reasonable stem values + npr.BlueValues[:] = [font_min - 100, font_min - 85, + font_max + 85, font_max + 100] + if hasattr(npr, "FamilyBlues"): + npr.FamilyBlues[:] = [font_min - 100, font_min - 85, + font_max + 85, font_max + 100] + if hasattr(npr, "OtherBlues"): + npr.OtherBlues[:] = [] + if hasattr(npr, "FamilyOtherBlues"): + npr.FamilyOtherBlues[:] = [] + fontDict = FontDict() + fontDict.setCFF2(True) + fontDict.Private = npr + fdarray.append(fontDict) + + numdicts = len(newdictmap) + 1 if hasExtra else 0 + + logger.warning("Updating %s with %d dictionaries" % (fpath, numdicts)) + cfftpath = get_temp_file_path() + cfftfile = open(cfftpath, "w+b") + cff.cff.compile(cfftfile, f, False) + cfftfile.close() + f.close() + + replaceCFF(fpath, cfftpath) + + +def main(args=None): + options = get_options(args) + + dictmap = getDictmap(options) + + if options.dsPath is not None: + ds = DesignSpaceDocument.fromfile(options.dsPath) + otf_paths = [s.path.replace('.ufo', '.otf') for s in ds.sources] + else: + otf_paths = [options.fPath] + + for p in otf_paths: + remapDicts(p, dictmap) + + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/python/afdko/otfautohint/ufoFont.py b/python/afdko/otfautohint/ufoFont.py new file mode 100644 index 000000000..24b7ecbbd --- /dev/null +++ b/python/afdko/otfautohint/ufoFont.py @@ -0,0 +1,922 @@ +# Copyright 2014 Adobe. All rights reserved. + +""" +This module provides means of reading glyph data from and writing data +to UFO fonts, partly in virtue of the fontTools UFO library. + +Developed in order to support checkOutlines and autohint, the code +supports two main functions: +- convert between UFO GLIF and GlyphData representations +- Calculate a hash value for a glyph path used to maintain a map of what + glyphs have already been processed. + +The basic model is: + - read GLIF file + - transform GLIF XML element to a GlyphData structure + - operate on the GlyphData structure + - transform the altered GlyphData back to a GLIF XML element, + and save in list +- +After all glyphs are done save all the new GLIF XML elements to GLIF +files, and update the hash map. + +A complication in the Adobe UFO workflow comes from the fact we want to +make sure that checkOutlines and autohint have been run on each glyph in +a UFO font, when building an OTF font from the UFO font. We need to run +checkOutlines, because we no longer remove overlaps from source UFO font +data, because this can make revising a glyph much easier. We need to run +autohint, because the glyphs must be hinted after checkOutlines is run, +and in any case we want all glyphs to have been autohinted. The problem +with this is that it can take a minute or two to run autohint or +checkOutlines on a 2K-glyph font. The way we avoid this is to make and +keep a hash of the source glyph drawing operators for each tool. When +the tool is run, it calculates a hash of the source glyph, and compares +it to the saved hash. If these are the same, the tool can skip the +glyph. This saves a lot of time: if checkOutlines and autohint are run +on all glyphs in a font, then a second pass is under 2 seconds. + +Another issue is that since we no longer remove overlaps from the source +glyph files, checkOutlines must write any edited glyph data to a +different layer in order to not destroy the source data. The ufoFont +defines an Adobe-specific glyph layer for processed glyphs, named +"glyphs.com.adobe.type.processedGlyphs". +checkOutlines writes new glyph files to the processed glyphs layer only +when it makes a change to the glyph data. + +When the autohint program is run, the ufoFont must be able to tell +whether checkOutlines has been run and has altered a glyph: if so, the +input file needs to be from the processed glyph layer, else it needs to +be from the default glyph layer. + +The way the hashmap works is that we keep an entry for every glyph that +has been processed, identified by a hash of its marking path data. Each +entry contains: +- a hash of the glyph point coordinates, from the default layer. +This is set after a program has been run. +- a history list: a list of the names of each program that has been run, + in order. +- an editStatus flag. +Altered GLIF data is always written to the Adobe processed glyph layer. The +program may or may not have altered the outline data. For example, autohint +adds private hint data, and adds names to points, but does not change any +paths. + +If the stored hash for the glyph does not exist, the ufoFont lib will save the +new hash in the hash map entry and will set the history list to contain just +the current program. The program will read the glyph from the default layer. + +If the stored hash matches the hash for the current glyph file in the default +layer, and the current program name is in the history list,then ufoFont +will return "skip=1", and the calling program may skip the glyph. + +If the stored hash matches the hash for the current glyph file in the default +layer, and the current program name is not in the history list, then the +ufoFont will return "skip=0". If the font object field 'usedProcessedLayer' is +set True, the program will read the glyph from the from the Adobe processed +layer, if it exists, else it will always read from the default layer. + +If the hash differs between the hash map entry and the current glyph in the +default layer, and usedProcessedLayer is False, then ufoFont will return +"skip=0". If usedProcessedLayer is True, then the program will consult the +list of required programs. If any of these are in the history list, then the +program will report an error and return skip =1, else it will return skip=1. +The program will then save the new hash in the hash map entry and reset the +history list to contain just the current program. If the old and new hash +match, but the program name is not in the history list, then the ufoFont will +not skip the glyph, and will add the program name to the history list. + + +The only tools using this are, at the moment, checkOutlines, checkOutlinesUFO +and autohint. checkOutlines and checkOutlinesUFO use the hash map to skip +processing only when being used to edit glyphs, not when reporting them. +checkOutlines necessarily flattens any components in the source glyph file to +actual outlines. autohint adds point names, and saves the hint data as a +private data in the new GLIF file. + +autohint saves the hint data in the GLIF private data area, /lib/dict, +as a key and data pair. See below for the format. + +autohint started with _hintFormat1_, a reasonably compact XML representation of +the data. In Sep 2105, autohhint switched to _hintFormat2_ in order to be plist +compatible. This was necessary in order to be compatible with the UFO spec, by +was driven more immediately by the fact the the UFO font file normalization +tools stripped out the _hintFormat1_ hint data as invalid elements. + + +""" + +import ast +import hashlib +import logging +import os +import shutil + +from types import SimpleNamespace + +# from fontTools.pens.basePen import BasePen +from fontTools.pens.pointPen import AbstractPointPen +from fontTools.ufoLib import UFOReader, UFOWriter +from fontTools.ufoLib.errors import UFOLibError + +from . import fdTools, FontParseError +from .glyphData import glyphData, norm_float + + +log = logging.getLogger(__name__) + +_hintFormat1_ = """ + +Deprecated. See _hintFormat2_ below. + +A element identifies a specific point by its name, and +describes a new set of stem hints which should be applied before the +specific point. + +A element identifies a specific point by its name. The point is +the first point of a curve. The presence of the element is a +processing suggestion, that the curve and its successor curve should +be converted to a flex operator. + +One challenge in applying the hintset and flex elements is that in the +GLIF format, there is no explicit start and end operator: the first path +operator is both the end and the start of the path. I have chosen to +convert this to T1 by taking the first path operator, and making it a +move-to. I then also use it as the last path operator. An exception is a +line-to; in T1, this is omitted, as it is implied by the need to close +the path. Hence, if a hintset references the first operator, there is a +potential ambiguity: should it be applied before the T1 move-to, or +before the final T1 path operator? The logic here applies it before the +move-to only. + + +... + + + + + + + ()* + ()* + + * + + * + * + (* + ( + (positive integer)+ + )+ + )* + + + * + + + + + + +Example from "B" in SourceCodePro-Regular + + + + + + + + + + + + + + + + + + + + + + + + + + + + +""" + +_hintFormat2_ = """ + +A element in the hintSetList array identifies a specific point by its +name, and describes a new set of stem hints which should be applied before the +specific point. + +A element in the flexList identifies a specific point by its name. +The point is the first point of a curve. The presence of the element is a +processing suggestion, that the curve and its successor curve should be +converted to a flex operator. + +One challenge in applying the hintSetList and flexList elements is that in +the GLIF format, there is no explicit start and end operator: the first path +operator is both the end and the start of the path. I have chosen to convert +this to T1 by taking the first path operator, and making it a move-to. I then +also use it as the last path operator. An exception is a line-to; in T1, this +is omitted, as it is implied by the need to close the path. Hence, if a hintset +references the first operator, there is a potential ambiguity: should it be +applied before the T1 move-to, or before the final T1 path operator? The logic +here applies it before the move-to only. + +... + + + + + id + + hintSetList + + + pointTag + + stems + + hstem * + vstem * + hstem3 ... + * + vstem3 ... + * + + * + + + flexList* + + + + + + + + + +Example from "B" in SourceCodePro-Regular + + + id + 64bf4987f05ced2a50195f971cd924984047eb1d79c8c43e6a0054f59cc85dea23 + a49deb20946a4ea84840534363f7a13cca31a81b1e7e33c832185173369086 + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 338 28 + hstem 632 28 + hstem 100 32 + hstem 496 32 + + + + pointTag + hintSet0005 + stems + + hstem 0 28 + hstem 338 28 + hstem 632 28 + hstem 100 32 + hstem 454 32 + hstem 496 32 + + + + pointTag + hintSet0016 + stems + + hstem 0 28 + hstem 338 28 + hstem 632 28 + hstem 100 32 + hstem 496 32 + + + + + +""" + +# UFO names +PUBLIC_GLYPH_ORDER = "public.glyphOrder" + +ADOBE_DOMAIN_PREFIX = "com.adobe.type" + +PROCESSED_LAYER_NAME = "%s.processedglyphs" % ADOBE_DOMAIN_PREFIX +PROCESSED_GLYPHS_DIRNAME = "glyphs.%s" % PROCESSED_LAYER_NAME + +HASHMAP_NAME = "%s.processedHashMap" % ADOBE_DOMAIN_PREFIX +HASHMAP_VERSION_NAME = "hashMapVersion" +HASHMAP_VERSION = (1, 0) # If major version differs, do not use. +AUTOHINT_NAME = "autohint" +CHECKOUTLINE_NAME = "checkOutlines" + +POINT_NAME_PATTERN = "hintRef%04d" +HINT_DOMAIN_NAME1 = "com.adobe.type.autohint" +HINT_DOMAIN_NAME2 = "com.adobe.type.autohint.v2" +FLEX_INDEX_LIST_NAME = "flexList" +HINT_SET_LIST_NAME = "hintSetList" +HSTEM3_NAME = "hstem3" +HSTEM_NAME = "hstem" +POINT_NAME = "name" +POINT_TAG = "pointTag" +STEMS_NAME = "stems" +VSTEM3_NAME = "vstem3" +VSTEM_NAME = "vstem" +STACK_LIMIT = 46 + + +class UFOFontData: + def __init__(self, path, log_only, write_to_default_layer): + self._reader = UFOReader(path, validate=False) + + self.path = path + self._glyphmap = None + self._processed_layer_glyphmap = None + self.newGlyphMap = {} + self._fontInfo = None + self._glyphsets = {} + # If True, we are running in report mode and not doing any changes, so + # we skip the hash map and process all glyphs. + self.log_only = log_only + # Used to store the hash of glyph data of already processed glyphs. If + # the stored hash matches the calculated one, we skip the glyph. + self._hashmap = None + self.fontDict = None + self.hashMapChanged = False + # If True, then write data to the default layer + self.writeToDefaultLayer = write_to_default_layer + self.desc = None + + def getUnitsPerEm(self): + return self.fontInfo.get("unitsPerEm", 1000) + + def getPSName(self): + return self.fontInfo.get("postscriptFontName", "PSName-Undefined") + + def getInputPath(self): + return self.path + + @staticmethod + def isCID(): + return False + + def convertToGlyphData(self, name, readStems, readFlex, roundCoords, + doAll=False): + glyph, skip = self._get_or_skip_glyph(name, readStems, readFlex, + roundCoords, doAll) + if skip: + return None + return glyph + + def updateFromGlyph(self, glyph, name): + if glyph is None: + try: + self.removeHashEntry(name) + except ValueError: + pass + return + layer = None + if name in self.processedLayerGlyphMap: + layer = PROCESSED_LAYER_NAME + glyphset = self._get_glyphset(layer) + + gdwrap = GlyphDataWrapper(glyph) + glyphset.readGlyph(name, gdwrap) + self.newGlyphMap[name] = gdwrap + + # updateFromGlyph is called only if the glyph has been autohinted + # which might also change its outline data. We need to update the edit + # status in the hash map entry. We assume that convertToGlyphData has + # been run before, which will add an entry for this glyph. + self.updateHashEntry(name) + + def save(self, path): + if path is None: + path = self.path + + if os.path.abspath(self.path) != os.path.abspath(path): + # If user has specified a path other than the source font path, + # then copy the entire UFO font, and operate on the copy. + log.info("Copying from source UFO font to output UFO font before " + "processing...") + if os.path.exists(path): + shutil.rmtree(path) + shutil.copytree(self.path, path) + + writer = UFOWriter(path, + self._reader.formatVersionTuple, + validate=False) + + layer = PROCESSED_LAYER_NAME + if self.writeToDefaultLayer: + layer = None + + # Write layer contents. + layers = writer.layerContents.copy() + if self.writeToDefaultLayer and PROCESSED_LAYER_NAME in layers: + # Delete processed glyphs directory + writer.deleteGlyphSet(PROCESSED_LAYER_NAME) + # Remove entry from 'layercontents.plist' file + del layers[PROCESSED_LAYER_NAME] + elif self.processedLayerGlyphMap or not self.writeToDefaultLayer: + layers[PROCESSED_LAYER_NAME] = PROCESSED_GLYPHS_DIRNAME + writer.layerContents.update(layers) + writer.writeLayerContents() + + # Write glyphs. + glyphset = writer.getGlyphSet(layer, defaultLayer=layer is None) + for name, glyph in self.newGlyphMap.items(): + filename = self.glyphMap[name] + if not self.writeToDefaultLayer and \ + name in self.processedLayerGlyphMap: + filename = self.processedLayerGlyphMap[name] + # Recalculate glyph hashes + if self.writeToDefaultLayer: + self.recalcHashEntry(name, glyph) + glyphset.contents[name] = filename + glyphset.writeGlyph(name, glyph, glyph.drawPoints) + glyphset.writeContents() + + # Write hashmap + if self.hashMapChanged: + self.writeHashMap(writer) + + @property + def hashMap(self): + if self._hashmap is None: + try: + data = self._reader.readData(HASHMAP_NAME) + except UFOLibError: + data = None + if data: + hashmap = ast.literal_eval(data.decode("utf-8")) + else: + hashmap = {HASHMAP_VERSION_NAME: HASHMAP_VERSION} + + version = (0, 0) + if HASHMAP_VERSION_NAME in hashmap: + version = hashmap[HASHMAP_VERSION_NAME] + + if version[0] > HASHMAP_VERSION[0]: + raise FontParseError("Hash map version is newer than " + "otfautohint. Please update.") + elif version[0] < HASHMAP_VERSION[0]: + log.info("Updating hash map: was older version") + hashmap = {HASHMAP_VERSION_NAME: HASHMAP_VERSION} + + self._hashmap = hashmap + return self._hashmap + + def writeHashMap(self, writer): + hashMap = self.hashMap + if not hashMap: + return # no glyphs were processed. + + data = ["{"] + for gName in sorted(hashMap.keys()): + data.append("'%s': %s," % (gName, hashMap[gName])) + data.append("}") + data.append("") + data = "\n".join(data) + + writer.writeData(HASHMAP_NAME, data.encode("utf-8")) + + def updateHashEntry(self, glyphName): + # srcHash has already been set: we are fixing the history list. + + # Get hash entry for glyph + srcHash, historyList = self.hashMap[glyphName] + + self.hashMapChanged = True + # If the program is not in the history list, add it. + if AUTOHINT_NAME not in historyList: + historyList.append(AUTOHINT_NAME) + + def removeHashEntry(self, glyphName): + del self.hashMap[glyphName] + self.hashMapChanged = True + + def recalcHashEntry(self, glyphName, glyph): + hashBefore, historyList = self.hashMap[glyphName] + + hash_pen = HashPointPen(glyph) + glyph.drawPoints(hash_pen, ufoHintLib=False) + hashAfter = hash_pen.getHash() + + if hashAfter != hashBefore: + self.hashMap[glyphName] = [hashAfter, historyList] + self.hashMapChanged = True + + def checkSkipGlyph(self, glyphName, newSrcHash, doAll): + skip = False + if self.log_only: + return skip + + srcHash = None + historyList = [] + + # Get hash entry for glyph + if glyphName in self.hashMap: + srcHash, historyList = self.hashMap[glyphName] + + if srcHash == newSrcHash: + if AUTOHINT_NAME in historyList: + # The glyph has already been autohinted, and there have been no + # changes since. + skip = not doAll + if not skip and AUTOHINT_NAME not in historyList: + historyList.append(AUTOHINT_NAME) + else: + if CHECKOUTLINE_NAME in historyList: + log.error("Glyph '%s' has been edited. You must first " + "run '%s' before running '%s'. Skipping.", + glyphName, CHECKOUTLINE_NAME, AUTOHINT_NAME) + skip = True + + # If the source hash has changed, we need to delete the processed + # layer glyph. + self.hashMapChanged = True + self.hashMap[glyphName] = [newSrcHash, [AUTOHINT_NAME]] + if glyphName in self.processedLayerGlyphMap: + del self.processedLayerGlyphMap[glyphName] + + return skip + + def _get_glyphset(self, layer_name=None): + if layer_name not in self._glyphsets: + glyphset = None + try: + glyphset = self._reader.getGlyphSet(layer_name) + except UFOLibError: + pass + self._glyphsets[layer_name] = glyphset + return self._glyphsets[layer_name] + + @staticmethod + def get_glyph_data(glyph, name, readStems, readFlex, roundCoords, + glyphset): + gl = glyphData(roundCoords=roundCoords, name=name) + gl.glyphSet = glyphset # To support addComponent in read phase + glyph.draw(gl) + del gl.glyphSet + if not hasattr(glyph, "width"): + glyph.width = 0 + gl.setWidth(glyph.width) + return gl + + def _get_or_skip_glyph(self, name, readStems, readFlex, roundCoords, + doAll): + # Get default glyph layer data, so we can check if the glyph + # has been edited since this program was last run. + # If the program name is in the history list, and the srcHash + # matches the default glyph layer data, we can skip. + glyphset = self._get_glyphset() + glyph = glyphset[name] + glyph_data = self.get_glyph_data(glyph, name, readStems, readFlex, + roundCoords, glyphset) + + # Hash is always from the default glyph layer. + hash_pen = HashPointPen(glyph, glyphset) + glyph.drawPoints(hash_pen) + skip = self.checkSkipGlyph(name, hash_pen.getHash(), doAll) + + # If there is a glyph in the processed layer, get the outline from it. + if name in self.processedLayerGlyphMap: + glyphset = self._get_glyphset(PROCESSED_LAYER_NAME) + glyph = glyphset[name] + glyph_data = self.get_glyph_data(glyph, name, readStems, readFlex, + roundCoords, glyphset) + return glyph_data, skip + + def getGlyphList(self): + glyphOrder = self._reader.readLib().get(PUBLIC_GLYPH_ORDER, []) + glyphList = list(self._get_glyphset().keys()) + + # Sort the returned glyph list by the glyph order as we depend in the + # order for expanding glyph ranges. + def key_fn(v): + if v in glyphOrder: + return glyphOrder.index(v) + return len(glyphOrder) + return sorted(glyphList, key=key_fn) + + @property + def glyphMap(self): + if self._glyphmap is None: + glyphset = self._get_glyphset() + self._glyphmap = glyphset.contents + return self._glyphmap + + @property + def processedLayerGlyphMap(self): + if self._processed_layer_glyphmap is None: + self._processed_layer_glyphmap = {} + glyphset = self._get_glyphset(PROCESSED_LAYER_NAME) + if glyphset is not None: + self._processed_layer_glyphmap = glyphset.contents + return self._processed_layer_glyphmap + + @property + def fontInfo(self): + if self._fontInfo is None: + info = SimpleNamespace() + self._reader.readInfo(info) + self._fontInfo = vars(info) + return self._fontInfo + + def getPrivateFDDict(self, allow_no_blues, noFlex, vCounterGlyphs, + hCounterGlyphs, desc, fdIndex=None): + if self.fontDict is not None: + return self.fontDict + + assert fdIndex is None or fdIndex == 0 + + fdDict = fdTools.FDDict(fdIndex, fontName=desc) + # should be 1 if the glyphs are ideographic, else 0. + fdDict.setInfo('LanguageGroup', + self.fontInfo.get("languagegroup", "0")) + upm = self.getUnitsPerEm() + fdDict.setInfo('OrigEmSqUnits', upm) + low = min(-upm * 0.25, + self.fontInfo.get("openTypeOS2WinDescent", 0) - 200) + high = max(upm * 1.25, + self.fontInfo.get("openTypeOS2WinAscent", 0) + 200) + # Make a set of inactive alignment zones: zones outside of the font + # bbox so as not to affect hinting. Used when src font has no + # BlueValues or has invalid BlueValues. Some fonts have bad BBox + # values, so I don't let this be smaller than -upm*0.25, upm*1.25. + inactiveAlignmentValues = [low, low, high, high] + blueValues = self.fontInfo.get("postscriptBlueValues", []) + numBlueValues = len(blueValues) + if numBlueValues < 4: + if allow_no_blues: + blueValues = inactiveAlignmentValues + numBlueValues = len(blueValues) + else: + raise FontParseError( + "Font must have at least four values in its " + "BlueValues array for PSAutoHint to work!") + blueValues.sort() + # The first pair only is a bottom zone, where the first value is the + # overshoot position; the rest are top zones, and second value of the + # pair is the overshoot position. + blueValues[0] = blueValues[0] - blueValues[1] + for i in range(3, numBlueValues, 2): + blueValues[i] = blueValues[i] - blueValues[i - 1] + + numBlueValues = min(numBlueValues, len(fdTools.kBlueValueKeys)) + for i in range(numBlueValues): + key = fdTools.kBlueValueKeys[i] + value = blueValues[i] + fdDict.setInfo(key, value) + + otherBlues = self.fontInfo.get("postscriptOtherBlues", []) + + if len(otherBlues) > 0: + i = 0 + numBlueValues = len(otherBlues) + otherBlues.sort() + for i in range(0, numBlueValues, 2): + otherBlues[i] = otherBlues[i] - otherBlues[i + 1] + numBlueValues = min(numBlueValues, + len(fdTools.kOtherBlueValueKeys)) + for i in range(numBlueValues): + key = fdTools.kOtherBlueValueKeys[i] + value = otherBlues[i] + fdDict.setInfo(key, value) + + vstems = self.fontInfo.get("postscriptStemSnapV", []) + if not vstems: + if allow_no_blues: + # dummy value. Needs to be larger than any hint will likely be, + # as the autohint program strips out any hint wider than twice + # the largest global stem width. + vstems = [fdDict.OrigEmSqUnits] + else: + raise FontParseError("Font does not have postscriptStemSnapV!") + + vstems.sort() + if not vstems or (len(vstems) == 1 and vstems[0] < 1): + # dummy value that will allow PyAC to run + vstems = [fdDict.OrigEmSqUnits] + log.warning("There is no value or 0 value for DominantV.") + fdDict.setInfo('DominantV', vstems) + + hstems = self.fontInfo.get("postscriptStemSnapH", []) + if not hstems: + if allow_no_blues: + # dummy value. Needs to be larger than any hint will likely be, + # as the autohint program strips out any hint wider than twice + # the largest global stem width. + hstems = [fdDict.OrigEmSqUnits] + else: + raise FontParseError("Font does not have postscriptStemSnapH!") + + hstems.sort() + if not hstems or (len(hstems) == 1 and hstems[0] < 1): + # dummy value that will allow PyAC to run + hstems = [fdDict.OrigEmSqUnits] + log.warning("There is no value or 0 value for DominantH.") + fdDict.setInfo('DominantH', hstems) + + if noFlex: + fdDict.setInfo('FlexOK', False) + else: + fdDict.setInfo('FlexOK', True) + + # Add candidate lists for counter hints, if any. + if vCounterGlyphs: + fdDict.setInfo('VCounterChars', vCounterGlyphs) + if hCounterGlyphs: + fdDict.setInfo('HCounterChars', hCounterGlyphs) + + fdDict.setInfo('BlueFuzz', self.fontInfo.get("postscriptBlueFuzz", 1)) + fdDict.buildBlueLists() + # postscriptBlueShift + # postscriptBlueScale + self.fontDict = fdDict + return fdDict + + def getfdIndex(self, name): + # XXX update for postscriptFDArray in lib.plist + return 0 + + def isVF(self): + return False + + def get_min_max(self, upm): + return -upm, 2 * upm + + def mergePrivateMap(self, privateMap): + for k, v in privateMap.items(): + setattr(self.fontDict, k, v) + + @staticmethod + def close(): + return + + +class HashPointPen(AbstractPointPen): + + def __init__(self, glyph, glyphset=None): + self.glyphset = glyphset + self.width = norm_float(round(getattr(glyph, "width", 0), 9)) + self.data = ["w%s" % self.width] + + def getHash(self): + data = "".join(self.data) + if len(data) >= 128: + data = hashlib.sha512(data.encode("ascii")).hexdigest() + return data + + def beginPath(self, identifier=None, **kwargs): + pass + + def endPath(self): + pass + + def addPoint(self, pt, segmentType=None, smooth=False, name=None, + identifier=None, **kwargs): + if segmentType is None: + pt_type = "" + else: + pt_type = segmentType[0] + self.data.append("%s%s%s" % (pt_type, + repr(norm_float(round(pt[0], 9))), + repr(norm_float(round(pt[1], 9))))) + + def addComponent(self, baseGlyphName, transformation, identifier=None, + **kwargs): + # UFO glif files can reference other glifs as "components", so the + # hash algorithm needs to deal with this. However, hinted glyphs + # do not have components, so there is no need to track and + # use the associated glyphset when calculating hinted hashes. As + # that is the only circumstance where glyphset should be None, we + # should never reach this condition. + if self.glyphset is None: + raise FontParseError("Internal error: addComponent called " + + "when UFO glyphset is not set") + + self.data.append("base:%s" % baseGlyphName) + + for v in transformation: + self.data.append(str(norm_float(round(v, 9)))) + + self.data.append("w%s" % self.width) + glyph = self.glyphset[baseGlyphName] + glyph.drawPoints(self) + + +class GlyphDataWrapper(object): + """ + Wraps a glyphData object while storing the properties set by readGlyph + to aid output of hint data in Adobe's "hint format 2" for UFO. + """ + def __init__(self, glyph): + self._glyph = glyph + self.lib = {} + if hasattr(glyph, 'width'): + self.width = norm_float(glyph.width) + + def addUfoFlex(self, uhl, pointname): + """Mark the named point as starting a flex hint""" + if uhl.get(FLEX_INDEX_LIST_NAME, None) is None: + uhl[FLEX_INDEX_LIST_NAME] = [] + uhl[FLEX_INDEX_LIST_NAME].append(pointname) + + def addUfoMask(self, uhl, masks, pointname): + """Associates the hint set represented by masks with the named point""" + if uhl.get(HINT_SET_LIST_NAME, None) is None: + uhl[HINT_SET_LIST_NAME] = [] + + glyph = self._glyph + iscntr = [False, False] + opname = [HSTEM_NAME, VSTEM_NAME] + cntropname = [HSTEM3_NAME, VSTEM3_NAME] + if glyph.cntr and glyph.cntr[0]: + for i in range(2): + iscntr[i] = True in glyph.cntr[0][i] + + ustems = [] + for i, stems in enumerate([glyph.hstems, glyph.vstems]): + if masks and masks[i]: + sl = [s for (s, b) in zip(stems, masks[i]) if b] + else: + sl = stems + if iscntr[i]: + pl = [cntropname[i]] + for s in sl: + pl.extend((str(norm_float(v)) for v in s.UFOVals())) + ustems.append(" ".join(pl)) + else: + for s in sl: + p, w = s.UFOVals() + ustems.append("%s %s %s" % (opname[i], norm_float(p), + norm_float(w))) + hintset = {} + hintset[POINT_TAG] = pointname + hintset[STEMS_NAME] = ustems + uhl[HINT_SET_LIST_NAME].append(hintset) + + def addUfoHints(self, uhl, pe, labelnum, startSubpath=False): + """Adds hints to the pathElement, naming points as necessary""" + pn = POINT_NAME_PATTERN % labelnum + if uhl is None: + # Not recording hints + return labelnum, None + if not startSubpath or labelnum != 0: + # No hint data to record + if pe.flex != 1 and not pe.masks: + return labelnum, None + if pe.flex == 1: + self.addUfoFlex(uhl, pn) + if pe.masks: + self.addUfoMask(uhl, pe.masks, pn) + else: + # First call, record top-level mask (if any) + self.addUfoMask(uhl, self._glyph.startmasks, pn) + return labelnum + 1, pn + + def drawPoints(self, pen, ufoHintLib=True): + """ + Calls pointPen commands on pen to draw the glyph, optionally naming + some points and building a library of hint annotations + """ + if ufoHintLib is not None: + uhl = {} + ufoH = lambda pe, lm, ss=False: self.addUfoHints(uhl, pe, lm, ss) + else: + ufoH = None + + self._glyph.drawPoints(pen, ufoH) + + if ufoHintLib is not None: + # Add this hash to the glyph data, as it is the hash which matches + # the output outline data. This is not necessarily the same as the + # hash of the source data; autohint can be used to change outlines. + hash_pen = HashPointPen(self) + self._glyph.drawPoints(hash_pen, None) + uhl["id"] = hash_pen.getHash() + + # Remove any existing hint data. + for key in (HINT_DOMAIN_NAME1, HINT_DOMAIN_NAME2): + if key in self.lib: + del self.lib[key] + + self.lib[HINT_DOMAIN_NAME2] = uhl diff --git a/python/afdko/ufotools.py b/python/afdko/ufotools.py index dc5c50a54..f9f813976 100644 --- a/python/afdko/ufotools.py +++ b/python/afdko/ufotools.py @@ -12,7 +12,7 @@ from fontTools.pens.recordingPen import RecordingPen from fontTools.ufoLib import UFOReader -from psautohint.ufoFont import norm_float +from .otfautohint.ufoFont import norm_float from afdko import fdkutils @@ -23,7 +23,7 @@ Originally developed to work with 'bez' files and UFO fonts in support of the autohint tool, ufotools.py is now only used in checkoutlinesufo (since -autohint has been dropped in favor of psautohint). Some references to "bez" +autohint has been dropped in favor of otfautohint). Some references to "bez" and "autohint" remain in the tool its documentation. Users should *NOT* rely on long-term support of methods or classes within diff --git a/setup.py b/setup.py index f02e1154d..ac8f0dede 100644 --- a/setup.py +++ b/setup.py @@ -132,6 +132,8 @@ def _get_console_scripts(): ('fontsetplot', 'proofpdf:fontsetplot'), ('hintplot', 'proofpdf:hintplot'), ('waterfallplot', 'proofpdf:waterfallplot'), + ('otfautohint', 'otfautohint.__main__:main'), + ('otfstemhist', 'otfstemhist.__main__:stemhist'), ] scripts_path = 'afdko' scripts = [f'{name} = {scripts_path}.{entry}' @@ -180,7 +182,7 @@ def main(): keywords='font development tools', platforms=[platform_name], package_dir={'': 'python'}, - packages=['afdko', 'afdko.pdflib'], + packages=['afdko', 'afdko.pdflib', 'afdko.otfautohint'], include_package_data=True, package_data={ 'afdko': [ diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/_notdef.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/_notdef.glif index 455b0b16a..b3af7498b 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/_notdef.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/_notdef.glif @@ -3,7 +3,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -43,7 +43,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 0 18 @@ -52,17 +52,6 @@ vstem 482 26 - - pointTag - hintSet0017 - stems - - hstem 0 18 - hstem 630 30 - vstem 100 23 - vstem 482 26 - - id 0c18a8292a10540c26c34a8a934528d2344664dd69c0db99dee286f2a0c32776b545901a3d9c6830bd4ae8b9d91a006b317414d1a729f019472ec9c6b0407ae3 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/a.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/a.glif index 096d468eb..e90ad4a43 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/a.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/a.glif @@ -4,12 +4,12 @@ - + - + @@ -28,12 +28,12 @@ - + - + @@ -55,7 +55,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -12 7 @@ -65,7 +65,7 @@ pointTag - hintSet0003 + hintRef0001 stems hstem 21 -21 @@ -75,7 +75,7 @@ pointTag - hintSet0012 + hintRef0002 stems hstem -12 7 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/b.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/b.glif index b2cd30929..fd9278895 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/b.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/b.glif @@ -4,7 +4,7 @@ - + @@ -17,9 +17,9 @@ - + - + @@ -50,7 +50,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 9 -21 @@ -61,7 +61,7 @@ pointTag - hintSet0007 + hintRef0001 stems hstem 21 -21 @@ -70,17 +70,6 @@ vstem 104 370 - - pointTag - hintSet0009 - stems - - hstem 9 -21 - hstem 486 -20 - hstem 727 -20 - vstem 104 370 - - id 050ce6e9bb62efb181965dc92e19dbe2464a91c35bdd54fe7e1456c75d64158297e7c0992b08e5b27a75378f132beba060188d2f6c7158f888c4e7fe02fa4742 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/c.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/c.glif index 28264ef4b..9d2ead6ea 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/c.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/c.glif @@ -4,7 +4,7 @@ - + @@ -43,7 +43,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 9 -21 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/d.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/d.glif index 0e61cc739..c77555c82 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/d.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/d.glif @@ -4,12 +4,12 @@ - + - + @@ -21,7 +21,7 @@ - + @@ -50,11 +50,10 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 9 -21 - hstem 68 19 hstem 486 -20 hstem 727 -20 vstem 58 370 @@ -62,23 +61,10 @@ pointTag - hintSet0003 + hintRef0001 stems hstem 21 -21 - hstem 68 19 - hstem 486 -20 - hstem 727 -20 - vstem 58 370 - - - - pointTag - hintSet0011 - stems - - hstem 9 -21 - hstem 68 19 hstem 486 -20 hstem 727 -20 vstem 58 370 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/e.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/e.glif index 35c8191c9..058cd975d 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/e.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/e.glif @@ -4,7 +4,7 @@ - + @@ -49,7 +49,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -12 8 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/f.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/f.glif index 3f79aef9b..fa87d1e65 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/f.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/f.glif @@ -4,12 +4,12 @@ - + - - + + - + @@ -18,17 +18,17 @@ - + - + - + - + @@ -39,7 +39,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 21 -21 @@ -50,7 +50,7 @@ pointTag - hintSet0002 + hintRef0001 stems hstem 21 -21 @@ -61,7 +61,7 @@ pointTag - hintSet0003 + hintRef0002 stems hstem 21 -21 @@ -72,7 +72,7 @@ pointTag - hintSet0005 + hintRef0003 stems hstem 21 -21 @@ -83,7 +83,7 @@ pointTag - hintSet0010 + hintRef0004 stems hstem 21 -21 @@ -94,7 +94,7 @@ pointTag - hintSet0014 + hintRef0005 stems hstem 21 -21 @@ -105,7 +105,7 @@ pointTag - hintSet0016 + hintRef0006 stems hstem 21 -21 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/g.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/g.glif index b59c33751..1c1fdc487 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/g.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/g.glif @@ -4,14 +4,14 @@ - + - + @@ -30,7 +30,7 @@ - + @@ -47,7 +47,7 @@ - + @@ -58,13 +58,13 @@ - + - + @@ -96,27 +96,13 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -240 13 hstem 7 13 hstem 151 13 hstem 465 9 - vstem 59 10 - vstem 384 9 - - - - pointTag - hintSet0003 - stems - - hstem -240 13 - hstem 7 13 - hstem 151 13 - hstem 465 9 - vstem 59 10 vstem 90 12 vstem 141 9 vstem 384 9 @@ -124,14 +110,13 @@ pointTag - hintSet0012 + hintRef0001 stems hstem -240 13 hstem 7 13 hstem 151 13 hstem 475 11 - vstem 59 10 vstem 90 12 vstem 141 9 vstem 384 9 @@ -139,20 +124,7 @@ pointTag - hintSet0019 - stems - - hstem -240 13 - hstem 7 13 - hstem 151 13 - hstem 465 9 - vstem 59 10 - vstem 384 9 - - - - pointTag - hintSet0023 + hintRef0002 stems hstem -240 13 @@ -163,19 +135,6 @@ vstem 384 9 - - pointTag - hintSet0025 - stems - - hstem -240 13 - hstem 7 13 - hstem 151 13 - hstem 465 9 - vstem 59 10 - vstem 384 9 - - id e603448a03d2b493d112080ab1ae5edf34e60fb71c1c4d4ab1f0cb42b2597488a6dfcf97bb60b000058f2fb35043373d2bcf780e74b7cb24c42ee72dfc1269ae diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/h.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/h.glif index 994f0f578..8e1dbc3c3 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/h.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/h.glif @@ -4,7 +4,7 @@ - + @@ -37,7 +37,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 21 -21 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/i.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/i.glif index b3e3c87c5..b778052be 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/i.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/i.glif @@ -4,7 +4,7 @@ - + @@ -35,7 +35,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 21 -21 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/j.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/j.glif index 62c0d0bac..33359a664 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/j.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/j.glif @@ -4,7 +4,7 @@ - + @@ -17,7 +17,7 @@ - + @@ -46,7 +46,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -243 7 @@ -55,6 +55,17 @@ vstem 84 43 + + pointTag + hintRef0001 + stems + + hstem -211 -21 + hstem 474 -20 + hstem 608 47 + vstem 84 43 + + id 4b0b6b7bc11f99773616e2b5b5e317f139d23f3104212663dd46a763b479777dbc5cdceb950d69ae994b27cd50ddeef9a16a660a4a5e7f029be3faf1f1af164b diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/k.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/k.glif index a932799fd..9ab8060f8 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/k.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/k.glif @@ -4,18 +4,18 @@ - + - + - + - + @@ -29,7 +29,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 21 -21 @@ -40,7 +40,7 @@ pointTag - hintSet0006 + hintRef0001 stems hstem 21 -21 @@ -51,7 +51,7 @@ pointTag - hintSet0009 + hintRef0002 stems hstem 21 -21 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/l.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/l.glif index 9baeaaa76..8ee4eadbf 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/l.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/l.glif @@ -4,7 +4,7 @@ - + @@ -32,7 +32,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -12 8 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/m.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/m.glif index 41e5cfc2c..259d7a126 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/m.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/m.glif @@ -4,31 +4,31 @@ - + - + - + - + - + - + - + @@ -38,7 +38,7 @@ - + @@ -52,17 +52,17 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 21 -21 hstem 486 -20 - vstem 394 8 + vstem 400 299 pointTag - hintSet0004 + hintRef0001 stems hstem 21 -21 @@ -72,7 +72,7 @@ pointTag - hintSet0007 + hintRef0002 stems hstem 21 -21 @@ -82,7 +82,7 @@ pointTag - hintSet0009 + hintRef0003 stems hstem 21 -21 @@ -92,7 +92,7 @@ pointTag - hintSet0014 + hintRef0004 stems hstem 21 -21 @@ -102,7 +102,7 @@ pointTag - hintSet0018 + hintRef0005 stems hstem 21 -21 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/n.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/n.glif index dbe7ee6b1..99facb639 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/n.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/n.glif @@ -4,7 +4,7 @@ - + @@ -23,7 +23,7 @@ - + @@ -37,7 +37,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 21 -21 @@ -47,7 +47,7 @@ pointTag - hintSet0011 + hintRef0001 stems hstem 21 -21 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/o.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/o.glif index d8c8d57fd..efaabdbc6 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/o.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/o.glif @@ -4,7 +4,7 @@ - + @@ -44,7 +44,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 9 -21 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/p.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/p.glif index d529587e5..8b3788d41 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/p.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/p.glif @@ -4,7 +4,7 @@ - + @@ -21,7 +21,7 @@ - + @@ -50,7 +50,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -210 -21 @@ -61,7 +61,7 @@ pointTag - hintSet0009 + hintRef0001 stems hstem -210 -21 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/q.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/q.glif index 4a9d41591..6e5cd1464 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/q.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/q.glif @@ -4,13 +4,13 @@ - + - + - + - + @@ -50,18 +50,7 @@ pointTag - hintSet0000 - stems - - hstem -210 -21 - hstem 9 -21 - hstem 486 -20 - vstem 58 370 - - - - pointTag - hintSet0002 + hintRef0000 stems hstem -210 -21 @@ -72,7 +61,7 @@ pointTag - hintSet0004 + hintRef0001 stems hstem -210 -21 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/r.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/r.glif index c4b944658..824bcd004 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/r.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/r.glif @@ -4,13 +4,13 @@ - + - + - + @@ -21,7 +21,7 @@ - + @@ -35,17 +35,17 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 21 -21 - hstem 476 -20 + hstem 472 14 vstem 104 184 pointTag - hintSet0003 + hintRef0001 stems hstem 21 -21 @@ -55,7 +55,7 @@ pointTag - hintSet0009 + hintRef0002 stems hstem 21 -21 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/s.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/s.glif index cb05b1d79..978a06818 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/s.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/s.glif @@ -4,7 +4,7 @@ - + @@ -55,7 +55,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -12 8 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/t.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/t.glif index fe5c458e7..b691b0cf1 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/t.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/t.glif @@ -4,27 +4,27 @@ - + - + - + - + - - + + - + @@ -41,17 +41,7 @@ pointTag - hintSet0000 - stems - - hstem -12 7 - hstem 467 7 - vstem 111 149 - - - - pointTag - hintSet0003 + hintRef0000 stems hstem -12 7 @@ -61,7 +51,7 @@ pointTag - hintSet0006 + hintRef0001 stems hstem -12 7 @@ -71,7 +61,7 @@ pointTag - hintSet0008 + hintRef0002 stems hstem -12 7 @@ -81,7 +71,7 @@ pointTag - hintSet0011 + hintRef0003 stems hstem -12 7 @@ -91,7 +81,7 @@ pointTag - hintSet0012 + hintRef0004 stems hstem -12 7 @@ -101,7 +91,7 @@ pointTag - hintSet0014 + hintRef0005 stems hstem -12 7 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/u.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/u.glif index 60f0875ff..bdde603fb 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/u.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/u.glif @@ -4,12 +4,12 @@ - + - + @@ -23,7 +23,7 @@ - + @@ -39,7 +39,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 9 -21 @@ -49,7 +49,7 @@ pointTag - hintSet0003 + hintRef0001 stems hstem 21 -21 @@ -57,16 +57,6 @@ vstem 95 315 - - pointTag - hintSet0013 - stems - - hstem 9 -21 - hstem 474 -20 - vstem 95 315 - - id w513c236-12302-1235328c40285l40485l4060l4100l410474l408474l40810834028291-8c226-8134-89652c96166l96474l95474l951669542141-12 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/v.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/v.glif index af6abc01b..2ca8c55bc 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/v.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/v.glif @@ -4,7 +4,7 @@ - + @@ -30,7 +30,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 0 13 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/w.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/w.glif index aa737423a..2c319e320 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/w.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/w.glif @@ -4,7 +4,7 @@ - + @@ -53,7 +53,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 0 8 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/x.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/x.glif index c91f546b6..e8b329e8c 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/x.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/x.glif @@ -4,9 +4,9 @@ - + - + @@ -16,13 +16,13 @@ - + - + @@ -33,7 +33,7 @@ - + @@ -44,18 +44,7 @@ pointTag - hintSet0000 - stems - - hstem 21 -21 - hstem 250 8 - hstem 474 -20 - vstem 14 334 - - - - pointTag - hintSet0002 + hintRef0000 stems hstem 21 -21 @@ -66,7 +55,7 @@ pointTag - hintSet0014 + hintRef0001 stems hstem 21 -21 @@ -77,11 +66,11 @@ pointTag - hintSet0021 + hintRef0002 stems hstem 21 -21 - hstem 240 8 + hstem 248 10 hstem 474 -20 vstem 14 334 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/y.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/y.glif index 250f86023..f91ff0df5 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/y.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/y.glif @@ -4,7 +4,7 @@ - + @@ -43,7 +43,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -229 9 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/z.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/z.glif index 3e32d2dba..a1003cc86 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/z.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraMinus.ufo/glyphs.com.adobe.type.processedglyphs/z.glif @@ -4,7 +4,7 @@ - + @@ -26,7 +26,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 0 7 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/_notdef.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/_notdef.glif index 813c357aa..32105ad07 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/_notdef.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/_notdef.glif @@ -3,7 +3,7 @@ - + @@ -17,15 +17,15 @@ - - - + + + - + - + @@ -43,7 +43,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 0 140 @@ -54,44 +54,22 @@ pointTag - hintSet0010 + hintRef0001 stems hstem 0 140 - hstem 551 109 + hstem 551 -20 vstem 66 149 vstem 530 148 pointTag - hintSet0012 + hintRef0002 stems hstem 0 140 - hstem 521 139 - vstem 66 149 - vstem 530 148 - - - - pointTag - hintSet0014 - stems - - hstem 0 140 - hstem 551 109 - vstem 66 149 - vstem 530 148 - - - - pointTag - hintSet0016 - stems - - hstem 0 140 - hstem 521 139 + hstem 521 30 vstem 66 149 vstem 530 148 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/a.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/a.glif index 30c4dc6b5..fd5e1f233 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/a.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/a.glif @@ -4,7 +4,7 @@ - + @@ -15,12 +15,12 @@ - + - + @@ -33,12 +33,12 @@ - + - - + + @@ -57,51 +57,31 @@ pointTag - hintSet0000 - stems - - hstem 21 -21 - hstem 343 180 - vstem 278 243 - - - - pointTag - hintSet0004 + hintRef0000 stems hstem 9 -21 - hstem 343 180 + hstem 333 190 vstem 278 243 pointTag - hintSet0007 + hintRef0001 stems hstem 21 -21 - hstem 343 180 - vstem 278 243 - - - - pointTag - hintSet0014 - stems - - hstem 9 -21 - hstem 343 180 + hstem 523 -20 vstem 278 243 pointTag - hintSet0015 + hintRef0002 stems hstem 0 172 - hstem 343 180 + hstem 523 -20 vstem 278 243 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/b.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/b.glif index 778831612..0b1de7b0c 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/b.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/b.glif @@ -4,7 +4,7 @@ - + @@ -17,15 +17,15 @@ - + - + - + @@ -50,7 +50,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 9 -21 @@ -62,31 +62,7 @@ pointTag - hintSet0007 - stems - - hstem 0 184 - hstem 523 -20 - hstem 683 -20 - vstem 39 243 - vstem 325 248 - - - - pointTag - hintSet0009 - stems - - hstem 9 -21 - hstem 523 -20 - hstem 683 -20 - vstem 39 243 - vstem 325 248 - - - - pointTag - hintSet0012 + hintRef0001 stems hstem 0 184 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/c.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/c.glif index b4369804c..3140e9c4e 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/c.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/c.glif @@ -4,12 +4,12 @@ - + - - + + @@ -28,7 +28,7 @@ - + @@ -43,7 +43,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 9 -21 @@ -53,7 +53,7 @@ pointTag - hintSet0002 + hintRef0001 stems hstem -12 193 @@ -61,16 +61,6 @@ vstem 21 248 - - pointTag - hintSet0010 - stems - - hstem 9 -21 - hstem 523 -20 - vstem 21 248 - - id 5216991a7e54afafef3d23555782cb87df04aa1cf166b9819a04e870d8c2bce6a215122dd8dc1d41834e5412d29c61b1dddaf95ff6a6dbb5d943825f40a11120 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/d.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/d.glif index a969d9fcd..8be1bb3eb 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/d.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/d.glif @@ -4,12 +4,12 @@ - + - + @@ -21,12 +21,12 @@ - + - - + + @@ -50,19 +50,18 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 9 -21 hstem 523 -20 hstem 683 -20 - vstem 27 248 vstem 318 243 pointTag - hintSet0003 + hintRef0001 stems hstem 21 -21 @@ -74,22 +73,10 @@ pointTag - hintSet0011 - stems - - hstem 9 -21 - hstem 523 -20 - hstem 683 -20 - vstem 27 248 - vstem 318 243 - - - - pointTag - hintSet0012 + hintRef0002 stems - hstem 0 184 + hstem 0 183.861 hstem 523 -20 hstem 683 -20 vstem 27 248 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/e.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/e.glif index 501a0fadd..628402797 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/e.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/e.glif @@ -4,16 +4,16 @@ - + - + - + @@ -23,17 +23,17 @@ - + - + - - + + @@ -47,56 +47,29 @@ flexList - flexCurve0010 - flexCurve0013 + hintRef0001 + hintRef0002 hintSetList pointTag - hintSet0000 - stems - - hstem -12 190 - hstem 332 191 - vstem 21 494 - - - - pointTag - hintSet0002 - stems - - hstem 178 154 - vstem 21 494 - - - - pointTag - hintSet0005 - stems - - hstem -12 190 - hstem 332 191 - vstem 21 494 - - - - pointTag - hintSet0008 + hintRef0000 stems + hstem 9 -21 hstem 178 154 + hstem 523 -20 vstem 21 494 pointTag - hintSet0012 + hintRef0002 stems - hstem -12 190 - hstem 332 191 + hstem 9 -21 + hstem 342.2869 180.7131 vstem 21 494 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/f.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/f.glif index ad0089b9d..5dc27c048 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/f.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/f.glif @@ -4,7 +4,7 @@ - + @@ -32,7 +32,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 21 -21 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/g.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/g.glif index 8f0c0137a..6515a6537 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/g.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/g.glif @@ -4,21 +4,21 @@ - + - + - + - + @@ -27,13 +27,13 @@ - + - + - + @@ -50,36 +50,36 @@ - + - + - + - + - + - + - + - + - + @@ -91,10 +91,10 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem -192 145 + hstem -192 144.9921 hstem 339 172 vstem 25 224 vstem 330 230 @@ -102,10 +102,9 @@ pointTag - hintSet0002 + hintRef0001 stems - hstem -192 145 hstem -37 179 hstem 339 172 vstem 25 224 @@ -114,44 +113,42 @@ pointTag - hintSet0006 + hintRef0002 stems - hstem -192 145 + hstem -192 144.9921 hstem 161 139 hstem 339 172 - vstem 25 224 vstem 279 206 pointTag - hintSet0009 + hintRef0003 stems - hstem -192 145 + hstem -192 144.9921 hstem 339 172 - vstem 25 224 vstem 279 273 pointTag - hintSet0012 + hintRef0004 stems - hstem -192 145 + hstem -192 144.9921 hstem 523 -20 - vstem 25 224 vstem 279 273 pointTag - hintSet0013 + hintRef0005 stems - hstem -192 145 + hstem -192 144.9921 + hstem 161 139 hstem 523 -20 vstem 25 224 vstem 330 230 @@ -159,22 +156,10 @@ pointTag - hintSet0020 - stems - - hstem -192 145 - hstem 339 172 - vstem 25 224 - vstem 330 230 - - - - pointTag - hintSet0021 + hintRef0006 stems - hstem -192 145 - hstem 161 139 + hstem -192 144.9921 hstem 366 157 vstem 25 224 vstem 330 230 @@ -182,61 +167,25 @@ pointTag - hintSet0024 + hintRef0007 stems - hstem -192 145 + hstem -192 144.9921 hstem 366 157 - vstem 25 224 vstem 279 273 pointTag - hintSet0025 + hintRef0008 stems - hstem -192 145 - hstem 161 139 - hstem 366 157 - vstem 25 224 - vstem 330 230 - - - - pointTag - hintSet0026 - stems - - hstem -192 145 - hstem 339 172 - vstem 25 224 - vstem 330 230 - - - - pointTag - hintSet0028 - stems - - hstem -192 145 hstem -37 179 hstem 339 172 vstem 25 224 vstem 330 230 - - pointTag - hintSet0031 - stems - - hstem -192 145 - hstem 339 172 - vstem 25 224 - vstem 330 230 - - id 3371b71203fe51ecebba6e944fd71bdd552e47b1498b713a168f2f6859e6a50a5915858d4bd6b37403feb0f162e2eeb0a66b8153e96fc5a979660615ea4f7b09 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/h.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/h.glif index e4db5b8bd..dc8d916cc 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/h.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/h.glif @@ -4,7 +4,7 @@ - + @@ -37,7 +37,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 21 -21 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/i.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/i.glif index bb5896711..e04962beb 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/i.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/i.glif @@ -4,14 +4,14 @@ - + - - + + @@ -35,7 +35,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 21 -21 @@ -46,7 +46,7 @@ pointTag - hintSet0004 + hintRef0001 stems hstem 21 -21 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/j.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/j.glif index e63c15fb9..1c8e45bce 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/j.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/j.glif @@ -4,26 +4,26 @@ - + - - + + - + - - + + @@ -46,7 +46,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -144 -21 @@ -57,7 +57,7 @@ pointTag - hintSet0004 + hintRef0001 stems hstem -165 187 @@ -68,18 +68,7 @@ pointTag - hintSet0008 - stems - - hstem -144 -21 - hstem 511 -20 - hstem 543 224 - vstem 42 243 - - - - pointTag - hintSet0009 + hintRef0002 stems hstem -144 -21 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/k.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/k.glif index fa2eef357..61fd0404d 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/k.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/k.glif @@ -4,7 +4,7 @@ - + @@ -29,7 +29,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 21 -21 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/l.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/l.glif index 74dfd1c60..8560b6723 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/l.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/l.glif @@ -4,7 +4,7 @@ - + @@ -32,7 +32,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 9 -21 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/m.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/m.glif index e50d66197..cb0a83d4f 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/m.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/m.glif @@ -4,9 +4,9 @@ - + - + @@ -25,7 +25,7 @@ - + @@ -38,7 +38,7 @@ - + @@ -52,37 +52,17 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 21 -21 - hstem 523 -20 + hstem 318.0075 204.9925 vstem3 39 243 329 243 619 243 pointTag - hintSet0002 - stems - - hstem 21 -21 - hstem 318 193 - vstem3 39 243 329 243 619 243 - - - - pointTag - hintSet0013 - stems - - hstem 21 -21 - hstem 523 -20 - vstem3 39 243 329 243 619 243 - - - - pointTag - hintSet0018 + hintRef0001 stems hstem 21 -21 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/n.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/n.glif index 4101ff5ec..6a747081f 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/n.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/n.glif @@ -4,9 +4,9 @@ - + - + @@ -16,14 +16,14 @@ - + - + @@ -37,7 +37,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 21 -21 @@ -48,29 +48,7 @@ pointTag - hintSet0002 - stems - - hstem 21 -21 - hstem 318 193 - vstem 39 243 - vstem 330 243 - - - - pointTag - hintSet0008 - stems - - hstem 21 -21 - hstem 523 -20 - vstem 39 243 - vstem 330 243 - - - - pointTag - hintSet0011 + hintRef0001 stems hstem 21 -21 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/o.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/o.glif index 6b8623367..1aaaedd63 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/o.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/o.glif @@ -4,7 +4,7 @@ - + @@ -44,7 +44,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -12 193 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/p.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/p.glif index c84d2e893..5b70530d6 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/p.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/p.glif @@ -4,11 +4,11 @@ - + - - + + @@ -21,7 +21,7 @@ - + @@ -29,14 +29,14 @@ - - + + - + @@ -50,49 +50,57 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -132 -21 hstem 9 -21 hstem 523 -20 vstem 39 243 - vstem 325 248 pointTag - hintSet0009 + hintRef0001 stems - hstem -132 -21 - hstem -12 196 - hstem 511 -20 + hstem -153 186 + hstem 523 -20 vstem 39 243 - vstem 325 248 pointTag - hintSet0013 + hintRef0002 stems hstem -132 -21 hstem 9 -21 - hstem 327 184 + hstem 523 -20 vstem 39 243 vstem 325 248 pointTag - hintSet0016 + hintRef0003 stems hstem -132 -21 hstem -12 196 hstem 511 -20 vstem 39 243 + + + + pointTag + hintRef0004 + stems + + hstem -132 -21 + hstem 9 -21 + hstem 327 184 + vstem 39 243 vstem 325 248 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/q.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/q.glif index 34bc0c493..330d9008e 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/q.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/q.glif @@ -4,13 +4,13 @@ - + - + - + - + @@ -26,17 +26,17 @@ - + - + - + @@ -50,18 +50,7 @@ pointTag - hintSet0000 - stems - - hstem -132 -21 - hstem 9 -21 - hstem 523 -20 - vstem 318 243 - - - - pointTag - hintSet0002 + hintRef0000 stems hstem -132 -21 @@ -72,7 +61,7 @@ pointTag - hintSet0004 + hintRef0001 stems hstem -132 -21 @@ -84,7 +73,7 @@ pointTag - hintSet0012 + hintRef0002 stems hstem -132 -21 @@ -94,18 +83,6 @@ vstem 318 243 - - pointTag - hintSet0016 - stems - - hstem -132 -21 - hstem 9 -21 - hstem 523 -20 - vstem 27 248 - vstem 318 243 - - id 30bfe987c81dfae586240c3a42901c1ab09458003e052fdd580d4e32c3cfd6c76bbd3d1cb1dd9b2181e2a55279189d2c1bb66e734b9b3ab66dd5d149d166fad4 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/r.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/r.glif index 6ce955d98..d95ee591b 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/r.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/r.glif @@ -4,7 +4,7 @@ - + @@ -13,15 +13,15 @@ - - + + - + @@ -35,17 +35,7 @@ pointTag - hintSet0000 - stems - - hstem 21 -21 - hstem 523 -20 - vstem 39 243 - - - - pointTag - hintSet0005 + hintRef0000 stems hstem 21 -21 @@ -55,7 +45,7 @@ pointTag - hintSet0006 + hintRef0001 stems hstem 21 -21 @@ -65,7 +55,7 @@ pointTag - hintSet0009 + hintRef0002 stems hstem 21 -21 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/s.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/s.glif index ead106009..dd357dd0e 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/s.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/s.glif @@ -4,7 +4,7 @@ - + @@ -29,20 +29,20 @@ - + - + - + @@ -54,32 +54,22 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 9 -21 hstem 348 175 - vstem 38 224 + vstem 10 460 pointTag - hintSet0010 + hintRef0001 stems hstem -12 175 hstem 523 -20 - vstem 38 224 - - - - pointTag - hintSet0015 - stems - - hstem 9 -21 - hstem 348 175 - vstem 38 224 + vstem 10 460 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/t.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/t.glif index dc6d0e019..11c212c0e 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/t.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/t.glif @@ -4,12 +4,12 @@ - + - - + + @@ -26,7 +26,7 @@ - + @@ -41,7 +41,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 9 -21 @@ -52,7 +52,7 @@ pointTag - hintSet0002 + hintRef0001 stems hstem -12 187 @@ -61,17 +61,6 @@ vstem 67 243 - - pointTag - hintSet0016 - stems - - hstem 9 -21 - hstem 324 187 - hstem 636 -20 - vstem 67 243 - - id 231a3752b648a714d2ecd8895531af0e6b4e2be91e58ba61babd48d8640365ab5d28a35c0613703211f28bfe841ba2eb1afde06253bbfe90d1b3030cc66e25ef diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/u.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/u.glif index 0febd85ea..96062905e 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/u.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/u.glif @@ -4,17 +4,17 @@ - + - + - - + + @@ -23,7 +23,7 @@ - + @@ -39,7 +39,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 9 -21 @@ -50,7 +50,7 @@ pointTag - hintSet0003 + hintRef0001 stems hstem 21 -21 @@ -61,21 +61,10 @@ pointTag - hintSet0007 + hintRef0002 stems - hstem 0 193 - hstem 511 -20 - vstem 37 243 - vstem 323 243 - - - - pointTag - hintSet0013 - stems - - hstem 9 -21 + hstem 0 192.9926 hstem 511 -20 vstem 37 243 vstem 323 243 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/v.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/v.glif index d99bfa196..3299b5121 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/v.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/v.glif @@ -4,12 +4,12 @@ - + - + @@ -30,7 +30,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 21 -21 @@ -40,7 +40,7 @@ pointTag - hintSet0005 + hintRef0001 stems hstem 0 173 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/w.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/w.glif index 089b83ef9..5518c017c 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/w.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/w.glif @@ -4,10 +4,10 @@ - + - + @@ -50,17 +50,7 @@ pointTag - hintSet0000 - stems - - hstem 0 192 - hstem 511 -20 - vstem 24 813 - - - - pointTag - hintSet0003 + hintRef0000 stems hstem 0 192 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/x.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/x.glif index c2fdc1964..402542b87 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/x.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/x.glif @@ -4,7 +4,7 @@ - + @@ -42,7 +42,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 21 -21 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/y.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/y.glif index 4b8e3b22d..3b3735e2f 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/y.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/y.glif @@ -4,7 +4,7 @@ - + @@ -20,7 +20,7 @@ - + @@ -28,7 +28,7 @@ - + @@ -43,17 +43,7 @@ pointTag - hintSet0000 - stems - - hstem -140 -21 - hstem 511 -20 - vstem 12 577 - - - - pointTag - hintSet0010 + hintRef0000 stems hstem -171 186 @@ -63,7 +53,7 @@ pointTag - hintSet0014 + hintRef0001 stems hstem -140 -21 diff --git a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/z.glif b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/z.glif index f0d0210eb..4fc4a4bb3 100644 --- a/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/z.glif +++ b/tests/makeinstancesufo_data/expected_output/Dummy-ExtraPlus.ufo/glyphs.com.adobe.type.processedglyphs/z.glif @@ -4,16 +4,16 @@ - + - + - + @@ -26,7 +26,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 0 187 @@ -36,7 +36,7 @@ pointTag - hintSet0004 + hintRef0001 stems hstem 0 187 @@ -46,7 +46,7 @@ pointTag - hintSet0009 + hintRef0002 stems hstem 0 187 diff --git a/tests/makeinstancesufo_data/expected_output/black.ufo/fontinfo.plist b/tests/makeinstancesufo_data/expected_output/black.ufo/fontinfo.plist index 95f971c13..68225f3ed 100644 --- a/tests/makeinstancesufo_data/expected_output/black.ufo/fontinfo.plist +++ b/tests/makeinstancesufo_data/expected_output/black.ufo/fontinfo.plist @@ -81,7 +81,7 @@ openTypeOS2WinDescent 335 postscriptBlueFuzz - 5 + 3 postscriptBlueScale 0.0675 postscriptBlueValues diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/fontinfo.plist b/tests/makeinstancesufo_data/expected_output/bold.ufo/fontinfo.plist index 63580ad9b..6c6b16c92 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/fontinfo.plist +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/fontinfo.plist @@ -81,7 +81,7 @@ openTypeOS2WinDescent 335 postscriptBlueFuzz - 4 + 2 postscriptBlueScale 0.059146 postscriptBlueValues diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif index 81aaf37e6..1ad514646 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif @@ -4,7 +4,7 @@ - + @@ -14,11 +14,11 @@ - + - + @@ -35,7 +35,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 0 57 @@ -46,7 +46,7 @@ pointTag - hintSet0010 + hintRef0001 stems hstem 0 55.5 @@ -55,17 +55,6 @@ vstem 9 215 - - pointTag - hintSet0014 - stems - - hstem 0 57 - hstem 191 58 - hstem 658 -20 - vstem 9 215 - - id w675l90l2240l22454l14866l188191l390191l43062l35352l3530l6620l66252l60159l396658l293658l9066l954l207249l290505l371249 diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif index 0407922e8..1f7cf7122 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif @@ -4,7 +4,7 @@ - + @@ -19,11 +19,11 @@ - + - + @@ -53,7 +53,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 0 57 @@ -65,7 +65,7 @@ pointTag - hintSet0013 + hintRef0001 stems hstem 0 55.5 @@ -75,18 +75,6 @@ vstem 9 215 - - pointTag - hintSet0017 - stems - - hstem 0 57 - hstem 191 58 - hstem 658 -20 - hstem 734 -20 - vstem 9 215 - - id 38a5f4156323df45a2d7149a03a9c8aa7eb2e4b4e3e3e23d7b88f44ba4784577882124b61e161a1e53e4dc2ab7e9a24c5635da5d6b5e451938a41b528a34cb99 diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif index 0a9bef59d..1f682bbe7 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif @@ -4,8 +4,8 @@ - - + + @@ -14,11 +14,11 @@ - + - + @@ -27,8 +27,8 @@ - - + + @@ -63,20 +63,7 @@ pointTag - hintSet0000 - stems - - hstem 0 57 - hstem 191 58 - hstem 658 -20 - hstem 713 138 - vstem 145 147 - vstem 394 147 - - - - pointTag - hintSet0001 + hintRef0000 stems hstem 0 57 @@ -89,33 +76,20 @@ pointTag - hintSet0010 + hintRef0001 stems hstem 0 55.5 hstem 191 58 hstem 658 -20 hstem 713 138 - vstem 145 147 - vstem 394 147 - - - - pointTag - hintSet0014 - stems - - hstem 0 57 - hstem 191 58 - hstem 658 -20 - hstem 713 138 vstem 9 215 vstem 394 147 pointTag - hintSet0019 + hintRef0002 stems hstem 0 57 diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif index 4f8e5018d..49f2e5698 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif @@ -4,7 +4,7 @@ - + @@ -14,11 +14,11 @@ - + - + @@ -35,7 +35,7 @@ - + @@ -48,7 +48,7 @@ - + @@ -63,7 +63,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 0 57 @@ -76,7 +76,7 @@ pointTag - hintSet0010 + hintRef0001 stems hstem 0 55.5 @@ -89,20 +89,7 @@ pointTag - hintSet0014 - stems - - hstem 0 57 - hstem 191 58 - hstem 658 -20 - hstem 720 -20 - hstem 762 97 - vstem 9 215 - - - - pointTag - hintSet0023 + hintRef0002 stems hstem 0 57 @@ -114,7 +101,7 @@ pointTag - hintSet0028 + hintRef0003 stems hstem 0 57 diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif index 2713d103a..a28a32f72 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif @@ -4,12 +4,12 @@ - + - + - + @@ -25,9 +25,9 @@ - - - + + + @@ -39,28 +39,17 @@ pointTag - hintSet0000 - stems - - hstem 0 58.5 - hstem 603 54 - vstem 230 168 - vstem 415 207 - - - - pointTag - hintSet0003 + hintRef0000 stems hstem 0 58.5 hstem 598.5 58.5 - vstem 230 168 + vstem 415 207 pointTag - hintSet0005 + hintRef0001 stems hstem 0 58.5 @@ -70,23 +59,11 @@ pointTag - hintSet0017 - stems - - hstem 0 58.5 - hstem 603 54 - vstem 230 168 - vstem 415 207 - - - - pointTag - hintSet0019 + hintRef0002 stems hstem 0 58.5 hstem 600 57 - vstem 230 168 vstem 415 207 diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif index ca309a7ee..610b6d3b0 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif @@ -4,12 +4,12 @@ - + - + - + @@ -25,9 +25,9 @@ - - - + + + @@ -57,30 +57,18 @@ pointTag - hintSet0000 - stems - - hstem 0 58.5 - hstem 603 54 - hstem 731 -20 - vstem 230 168 - vstem 415 207 - - - - pointTag - hintSet0003 + hintRef0000 stems hstem 0 58.5 hstem 598.5 58.5 hstem 731 -20 - vstem 230 168 + vstem 415 207 pointTag - hintSet0005 + hintRef0001 stems hstem 0 58.5 @@ -91,25 +79,12 @@ pointTag - hintSet0017 - stems - - hstem 0 58.5 - hstem 603 54 - hstem 731 -20 - vstem 230 168 - vstem 415 207 - - - - pointTag - hintSet0019 + hintRef0002 stems hstem 0 58.5 hstem 600 57 hstem 731 -20 - vstem 230 168 vstem 415 207 diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif index 0ffb24e53..8602c1170 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif @@ -4,12 +4,12 @@ - + - + - + @@ -25,9 +25,9 @@ - - - + + + @@ -45,8 +45,8 @@ - - + + @@ -67,28 +67,17 @@ pointTag - hintSet0000 - stems - - hstem 0 58.5 - hstem 603 54 - vstem 230 168 - vstem 415 207 - - - - pointTag - hintSet0003 + hintRef0000 stems hstem 0 58.5 hstem 598.5 58.5 - vstem 230 168 + vstem 415 207 pointTag - hintSet0005 + hintRef0001 stems hstem 0 58.5 @@ -98,18 +87,7 @@ pointTag - hintSet0017 - stems - - hstem 0 58.5 - hstem 603 54 - vstem 230 168 - vstem 415 207 - - - - pointTag - hintSet0019 + hintRef0002 stems hstem 0 58.5 @@ -121,13 +99,12 @@ pointTag - hintSet0026 + hintRef0003 stems hstem 0 58.5 hstem 600 57 hstem 713 138 - vstem 230 168 vstem 418 147 diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif index c663f3465..443348e18 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif @@ -4,12 +4,12 @@ - + - + - + @@ -25,9 +25,9 @@ - - - + + + @@ -39,7 +39,7 @@ - + @@ -52,10 +52,10 @@ - + - + @@ -67,32 +67,19 @@ pointTag - hintSet0000 - stems - - hstem 0 58.5 - hstem 603 54 - hstem 720 -20 - hstem 762 97 - vstem 230 168 - vstem 415 207 - - - - pointTag - hintSet0003 + hintRef0000 stems hstem 0 58.5 hstem 598.5 58.5 hstem 720 -20 hstem 762 97 - vstem 230 168 + vstem 415 207 pointTag - hintSet0005 + hintRef0001 stems hstem 0 58.5 @@ -104,56 +91,30 @@ pointTag - hintSet0017 - stems - - hstem 0 58.5 - hstem 603 54 - hstem 720 -20 - hstem 762 97 - vstem 230 168 - vstem 415 207 - - - - pointTag - hintSet0019 + hintRef0002 stems hstem 0 58.5 hstem 600 57 hstem 720 -20 hstem 762 97 - vstem 230 168 vstem 415 207 pointTag - hintSet0025 + hintRef0003 stems hstem 0 58.5 hstem 600 57 hstem 703 97 - vstem 230 168 - - - - pointTag - hintSet0030 - stems - - hstem 0 58.5 - hstem 600 57 - hstem 720 -20 - hstem 762 97 - vstem 230 168 + vstem 415 207 pointTag - hintSet0031 + hintRef0004 stems hstem 0 58.5 @@ -161,7 +122,6 @@ hstem 720 -20 hstem 762 97 vstem 230 168 - vstem 415 207 diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/a.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/a.glif index 3165a7838..e6ee5ad84 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/a.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/a.glif @@ -4,12 +4,12 @@ - + - - + + @@ -42,17 +42,17 @@ - + - + - + @@ -75,7 +75,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -15 81 @@ -85,7 +85,7 @@ pointTag - hintSet0002 + hintRef0001 stems hstem -14 71 @@ -96,28 +96,7 @@ pointTag - hintSet0016 - stems - - hstem -15 81 - hstem 447 52 - vstem 31 148 - vstem 300 156 - - - - pointTag - hintSet0018 - stems - - hstem -15 81 - hstem 447 52 - vstem 300 156 - - - - pointTag - hintSet0019 + hintRef0002 stems hstem -15 81 diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif index f705fab48..25cdca5e8 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif @@ -4,12 +4,12 @@ - + - - + + @@ -42,13 +42,13 @@ - + - + @@ -70,7 +70,7 @@ - + @@ -93,7 +93,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -15 81 @@ -103,7 +103,7 @@ pointTag - hintSet0002 + hintRef0001 stems hstem -14 71 @@ -114,28 +114,7 @@ pointTag - hintSet0016 - stems - - hstem -15 81 - hstem 447 52 - vstem 31 148 - vstem 300 156 - - - - pointTag - hintSet0018 - stems - - hstem -15 81 - hstem 447 52 - vstem 300 156 - - - - pointTag - hintSet0026 + hintRef0002 stems hstem -15 81 diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif index b5b793dc8..cf13ff28a 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif @@ -3,7 +3,7 @@ - + @@ -29,7 +29,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 734 -20 diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif index 876506582..3c06dc764 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif @@ -4,7 +4,7 @@ - + @@ -30,7 +30,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 553 223 diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif index cf4d211de..c2b415398 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif @@ -4,12 +4,12 @@ - + - - + + @@ -42,18 +42,18 @@ - + - + - - + + @@ -80,8 +80,8 @@ - - + + @@ -103,18 +103,18 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -15 81 hstem 447 52 hstem 575 146 - vstem 300 156 + vstem 307 154 pointTag - hintSet0002 + hintRef0001 stems hstem -14 71 @@ -126,7 +126,7 @@ pointTag - hintSet0016 + hintRef0002 stems hstem -15 81 @@ -138,18 +138,7 @@ pointTag - hintSet0018 - stems - - hstem -15 81 - hstem 447 52 - hstem 575 146 - vstem 300 156 - - - - pointTag - hintSet0019 + hintRef0003 stems hstem -15 81 @@ -161,7 +150,7 @@ pointTag - hintSet0029 + hintRef0004 stems hstem -15 81 diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif index d9d3a9edf..8656e7d58 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif @@ -4,12 +4,12 @@ - + - - + + @@ -42,45 +42,45 @@ - + - + - - + + - + - - + + - + - + @@ -103,75 +103,54 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -15 81 hstem 447 52 - hstem 630 97 + hstem 571 98 vstem 300 156 pointTag - hintSet0002 + hintRef0001 stems hstem -14 71 hstem 447 52 - hstem 630 97 - vstem 31 148 - vstem 300 156 - - - - pointTag - hintSet0016 - stems - - hstem -15 81 - hstem 447 52 - hstem 630 97 + hstem 571 98 vstem 31 148 vstem 300 156 pointTag - hintSet0018 - stems - - hstem -15 81 - hstem 447 52 - hstem 630 97 - vstem 300 156 - - - - pointTag - hintSet0020 + hintRef0002 stems hstem -15 81 hstem 447 52 hstem 571 98 + vstem 31 148 vstem 300 156 pointTag - hintSet0021 + hintRef0003 stems hstem -15 81 hstem 447 52 hstem 630 97 + vstem 31 148 vstem 300 156 pointTag - hintSet0023 + hintRef0004 stems hstem -15 81 @@ -182,7 +161,7 @@ pointTag - hintSet0025 + hintRef0005 stems hstem -15 81 @@ -193,7 +172,7 @@ pointTag - hintSet0026 + hintRef0006 stems hstem -15 81 @@ -204,18 +183,7 @@ pointTag - hintSet0028 - stems - - hstem -15 81 - hstem 447 52 - hstem 630 97 - vstem 300 156 - - - - pointTag - hintSet0030 + hintRef0007 stems hstem -15 81 diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif index 601cc7493..17b66ad0c 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif @@ -3,7 +3,7 @@ - + @@ -39,7 +39,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 713 138 diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif index bd83d50c6..c5ef7b373 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif @@ -5,7 +5,7 @@ - + @@ -41,7 +41,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 575 146 diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif index 750c7e040..097891d33 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif @@ -3,7 +3,7 @@ - + @@ -11,7 +11,7 @@ - + @@ -24,7 +24,7 @@ - + @@ -39,7 +39,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 720 -20 @@ -49,7 +49,7 @@ pointTag - hintSet0004 + hintRef0001 stems hstem 703 97 @@ -58,7 +58,7 @@ pointTag - hintSet0009 + hintRef0002 stems hstem 720 -20 diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif index d21a54b38..8f182dc46 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif @@ -4,28 +4,28 @@ - - - + + + - + - - + + - + @@ -40,16 +40,7 @@ pointTag - hintSet0000 - stems - - hstem 630 97 - vstem -177 354 - - - - pointTag - hintSet0001 + hintRef0000 stems hstem 571 98 @@ -58,7 +49,7 @@ pointTag - hintSet0002 + hintRef0001 stems hstem 630 97 @@ -67,7 +58,7 @@ pointTag - hintSet0004 + hintRef0002 stems hstem 571 98 @@ -76,7 +67,7 @@ pointTag - hintSet0006 + hintRef0003 stems hstem 630 97 @@ -85,7 +76,7 @@ pointTag - hintSet0007 + hintRef0004 stems hstem 571 98 @@ -94,7 +85,7 @@ pointTag - hintSet0009 + hintRef0005 stems hstem 630 97 diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/y.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/y.glif index ae6bcc0aa..39dbfbb34 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/y.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/y.glif @@ -4,23 +4,23 @@ - + - + - + - + - + - - + + @@ -45,17 +45,7 @@ pointTag - hintSet0000 - stems - - hstem -237 140 - hstem 436 47 - vstem 342 188 - - - - pointTag - hintSet0002 + hintRef0000 stems hstem -237 140 @@ -65,7 +55,7 @@ pointTag - hintSet0004 + hintRef0001 stems hstem -237 140 @@ -75,7 +65,7 @@ pointTag - hintSet0006 + hintRef0002 stems hstem -237 140 @@ -85,7 +75,7 @@ pointTag - hintSet0011 + hintRef0003 stems hstem -237 140 @@ -95,7 +85,7 @@ pointTag - hintSet0013 + hintRef0004 stems hstem -237 140 @@ -105,7 +95,7 @@ pointTag - hintSet0014 + hintRef0005 stems hstem -237 140 diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif index d9475b3b1..e72605ff4 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif @@ -4,23 +4,23 @@ - + - + - + - + - + - - + + @@ -63,17 +63,7 @@ pointTag - hintSet0000 - stems - - hstem -237 140 - hstem 436 47 - vstem 342 188 - - - - pointTag - hintSet0002 + hintRef0000 stems hstem -237 140 @@ -83,7 +73,7 @@ pointTag - hintSet0004 + hintRef0001 stems hstem -237 140 @@ -93,7 +83,7 @@ pointTag - hintSet0006 + hintRef0002 stems hstem -237 140 @@ -103,7 +93,7 @@ pointTag - hintSet0011 + hintRef0003 stems hstem -237 140 @@ -113,7 +103,7 @@ pointTag - hintSet0013 + hintRef0004 stems hstem -237 140 @@ -123,7 +113,7 @@ pointTag - hintSet0014 + hintRef0005 stems hstem -237 140 diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif index 8fae06c4f..90eb52f93 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif @@ -4,23 +4,23 @@ - + - + - + - + - + - - + + @@ -73,19 +73,7 @@ pointTag - hintSet0000 - stems - - hstem -237 140 - hstem 436 47 - hstem 575 146 - vstem 119 154 - vstem 359 154 - - - - pointTag - hintSet0002 + hintRef0000 stems hstem -237 140 @@ -97,7 +85,7 @@ pointTag - hintSet0004 + hintRef0001 stems hstem -237 140 @@ -109,7 +97,7 @@ pointTag - hintSet0006 + hintRef0002 stems hstem -237 140 @@ -121,7 +109,7 @@ pointTag - hintSet0011 + hintRef0003 stems hstem -237 140 @@ -133,7 +121,7 @@ pointTag - hintSet0013 + hintRef0004 stems hstem -237 140 @@ -145,7 +133,7 @@ pointTag - hintSet0014 + hintRef0005 stems hstem -237 140 diff --git a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif index df3e7fbd8..ba3889bf4 100644 --- a/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif +++ b/tests/makeinstancesufo_data/expected_output/bold.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif @@ -4,23 +4,23 @@ - + - + - + - + - + - - + + @@ -38,27 +38,27 @@ - - + + - + - - + + - + @@ -73,84 +73,62 @@ pointTag - hintSet0000 - stems - - hstem -237 140 - hstem 436 47 - hstem 630 97 - vstem 342 188 - - - - pointTag - hintSet0002 + hintRef0000 stems hstem -237 140 hstem 440 43 - hstem 630 97 + hstem 571 98 vstem 342 188 pointTag - hintSet0004 + hintRef0001 stems hstem -237 140 hstem 436 47 - hstem 630 97 + hstem 571 98 vstem 342 188 pointTag - hintSet0006 + hintRef0002 stems hstem -237 140 hstem 440 43 - hstem 630 97 + hstem 571 98 vstem 342 188 pointTag - hintSet0011 + hintRef0003 stems hstem -237 140 hstem 436 47 - hstem 630 97 + hstem 571 98 vstem 342 188 pointTag - hintSet0013 + hintRef0004 stems hstem -237 140 hstem 440 43 - hstem 630 97 - vstem 342 188 - - - - pointTag - hintSet0014 - stems - - hstem -237 140 - hstem 436 47 - hstem 630 97 + hstem 571 98 vstem 342 188 pointTag - hintSet0023 + hintRef0005 stems hstem -237 140 @@ -161,7 +139,7 @@ pointTag - hintSet0024 + hintRef0006 stems hstem -237 140 @@ -172,7 +150,7 @@ pointTag - hintSet0026 + hintRef0007 stems hstem -237 140 @@ -183,7 +161,7 @@ pointTag - hintSet0028 + hintRef0008 stems hstem -237 140 @@ -194,7 +172,7 @@ pointTag - hintSet0029 + hintRef0009 stems hstem -237 140 @@ -205,7 +183,7 @@ pointTag - hintSet0031 + hintRef0010 stems hstem -237 140 diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif index 9b7553267..96d71d800 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif @@ -4,21 +4,21 @@ - + - + - + - + @@ -35,7 +35,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 0 22.5 @@ -46,7 +46,7 @@ pointTag - hintSet0006 + hintRef0001 stems hstem 0 23 @@ -57,7 +57,7 @@ pointTag - hintSet0008 + hintRef0002 stems hstem 0 22.5 @@ -68,7 +68,7 @@ pointTag - hintSet0014 + hintRef0003 stems hstem 0 23 diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif index 62b849725..af6080571 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif @@ -4,8 +4,8 @@ - - + + @@ -15,15 +15,15 @@ - + - + - + @@ -53,19 +53,7 @@ pointTag - hintSet0000 - stems - - hstem 0 22.5 - hstem 247 20 - hstem 684 -20 - hstem 741 -20 - vstem 12 639 - - - - pointTag - hintSet0001 + hintRef0000 stems hstem 0 22.5 @@ -77,7 +65,7 @@ pointTag - hintSet0009 + hintRef0001 stems hstem 0 23 @@ -89,7 +77,7 @@ pointTag - hintSet0011 + hintRef0002 stems hstem 0 22.5 @@ -101,7 +89,7 @@ pointTag - hintSet0017 + hintRef0003 stems hstem 0 23 diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif index 9d6bfe3ec..155db80f2 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif @@ -4,21 +4,21 @@ - + - + - + - + @@ -63,7 +63,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 0 22.5 @@ -76,7 +76,7 @@ pointTag - hintSet0006 + hintRef0001 stems hstem 0 23 @@ -89,7 +89,7 @@ pointTag - hintSet0008 + hintRef0002 stems hstem 0 22.5 @@ -102,7 +102,7 @@ pointTag - hintSet0014 + hintRef0003 stems hstem 0 23 diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif index 15337c4f8..19656da89 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif @@ -4,21 +4,21 @@ - + - + - + - + @@ -35,7 +35,7 @@ - + @@ -51,7 +51,7 @@ - + @@ -63,7 +63,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 0 22.5 @@ -76,7 +76,7 @@ pointTag - hintSet0006 + hintRef0001 stems hstem 0 23 @@ -89,7 +89,7 @@ pointTag - hintSet0008 + hintRef0002 stems hstem 0 22.5 @@ -102,43 +102,17 @@ pointTag - hintSet0014 + hintRef0003 stems hstem 0 23 hstem 247 20 hstem 636 48 - hstem 753 -20 - hstem 822 23 - vstem 12 639 - - - - pointTag - hintSet0023 - stems - - hstem 0 22.5 - hstem 247 20 - hstem 684 -20 hstem 741 23 hstem 822 23 vstem 12 639 - - pointTag - hintSet0029 - stems - - hstem 0 23 - hstem 247 20 - hstem 636 48 - hstem 753 -20 - hstem 822 23 - vstem 12 639 - - id 919772c12e1a23d9bdb9b27caecfbb4de27a5b7a9326b9b583401373a071f2e638680fe693a5c896ed5994de5b4818d3e914c826b8ac4b805075d4c3607247f3 diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif index aa9f43b9d..be83d9f9e 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif @@ -4,14 +4,14 @@ - + - + @@ -27,7 +27,7 @@ - + @@ -39,7 +39,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 0 23 @@ -49,7 +49,7 @@ pointTag - hintSet0007 + hintRef0001 stems hstem 0 23 @@ -59,7 +59,7 @@ pointTag - hintSet0019 + hintRef0002 stems hstem 0 23 diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif index 6ba9a7f1e..f6ac51642 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif @@ -4,14 +4,14 @@ - + - + @@ -27,7 +27,7 @@ - + @@ -57,7 +57,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 0 23 @@ -68,7 +68,7 @@ pointTag - hintSet0007 + hintRef0001 stems hstem 0 23 @@ -79,7 +79,7 @@ pointTag - hintSet0019 + hintRef0002 stems hstem 0 23 diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif index a199011c6..ec697bd97 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif @@ -4,14 +4,14 @@ - + - + @@ -27,7 +27,7 @@ - + @@ -67,17 +67,18 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 0 23 hstem 653.5 23.5 + vstem 195 64 vstem 303 30 pointTag - hintSet0007 + hintRef0001 stems hstem 0 23 @@ -87,7 +88,7 @@ pointTag - hintSet0019 + hintRef0002 stems hstem 0 23 diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif index da9f90309..9f547ba87 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif @@ -4,14 +4,14 @@ - + - + @@ -27,7 +27,7 @@ - + @@ -39,7 +39,7 @@ - + @@ -55,7 +55,7 @@ - + @@ -67,7 +67,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 0 23 @@ -79,7 +79,7 @@ pointTag - hintSet0007 + hintRef0001 stems hstem 0 23 @@ -91,19 +91,7 @@ pointTag - hintSet0019 - stems - - hstem 0 23 - hstem 653.5 23.5 - hstem 753 -20 - hstem 822 23 - vstem 303 30 - - - - pointTag - hintSet0025 + hintRef0002 stems hstem 0 23 @@ -113,18 +101,6 @@ vstem 303 30 - - pointTag - hintSet0031 - stems - - hstem 0 23 - hstem 653.5 23.5 - hstem 753 -20 - hstem 822 23 - vstem 303 30 - - id 368eccd07fb0b1d6e6df2613b0520dccf95af14ce4e36d28cbe9c42da8fed82b872853b9d2bca404f0407817db487ff5abf099117ab91df93ad319e82e18a19d diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/a.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/a.glif index e8240776e..c8dbcd79e 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/a.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/a.glif @@ -4,12 +4,12 @@ - + - - + + @@ -42,7 +42,7 @@ - + @@ -52,11 +52,11 @@ - + - + @@ -75,18 +75,18 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -13 26 hstem 463 20 vstem 57 30 - vstem 356 27 + vstem 355 28 pointTag - hintSet0002 + hintRef0001 stems hstem -13 24 @@ -97,7 +97,7 @@ pointTag - hintSet0016 + hintRef0002 stems hstem -13 26 @@ -108,7 +108,7 @@ pointTag - hintSet0019 + hintRef0003 stems hstem -13 26 diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif index ee4cc321a..08af97a30 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif @@ -4,12 +4,12 @@ - + - - + + @@ -42,7 +42,7 @@ - + @@ -54,7 +54,7 @@ - + @@ -66,15 +66,15 @@ - + - + - + @@ -93,46 +93,22 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -13 26 hstem 463 20 hstem 738 -20 vstem 57 30 - vstem 356 27 - - - - pointTag - hintSet0002 - stems - - hstem -13 24 - hstem 463 20 - hstem 738 -20 - vstem 57 30 vstem 355 28 pointTag - hintSet0016 - stems - - hstem -13 26 - hstem 463 20 - hstem 738 -20 - vstem 57 30 - vstem 356 27 - - - - pointTag - hintSet0021 + hintRef0001 stems - hstem -13 26 + hstem -13 24 hstem 463 20 hstem 738 -20 vstem 57 30 @@ -141,7 +117,7 @@ pointTag - hintSet0025 + hintRef0002 stems hstem -13 26 @@ -153,7 +129,7 @@ pointTag - hintSet0026 + hintRef0003 stems hstem -13 26 diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif index 8eb4f908c..88398d730 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif @@ -2,7 +2,7 @@ - + @@ -29,7 +29,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 741 -20 diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif index 9a9eb0d17..720ec1983 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif @@ -3,7 +3,7 @@ - + @@ -30,7 +30,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 738 -20 diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif index 6b740a160..30ae27267 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif @@ -4,12 +4,12 @@ - + - - + + @@ -42,7 +42,7 @@ - + @@ -52,7 +52,7 @@ - + @@ -67,7 +67,7 @@ - + @@ -84,14 +84,14 @@ - + - + @@ -103,18 +103,18 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -13 26 hstem 463 20 vstem 57 30 - vstem 356 27 + vstem 355 28 pointTag - hintSet0002 + hintRef0001 stems hstem -13 24 @@ -125,31 +125,32 @@ pointTag - hintSet0016 + hintRef0002 stems hstem -13 26 hstem 463 20 + hstem 644 59 vstem 57 30 + vstem 119 58 vstem 356 27 pointTag - hintSet0019 + hintRef0003 stems hstem -13 26 hstem 463 20 hstem 644 59 vstem 57 30 - vstem 119 58 vstem 307 58 pointTag - hintSet0031 + hintRef0004 stems hstem -13 26 @@ -158,19 +159,6 @@ vstem 355 28 - - pointTag - hintSet0034 - stems - - hstem -13 26 - hstem 463 20 - hstem 644 59 - vstem 57 30 - vstem 119 58 - vstem 307 58 - - id 463de1cbf298c1c7c2f67d87a149ba056d1cf37ee22b552c80c7a745c57a00669ee8aeddeecd67126fe85df1f02706ccf1edb5a2a580150b05e190fbfbd0a366 diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif index 49d70f532..db9c8766e 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif @@ -4,12 +4,12 @@ - + - - + + @@ -42,7 +42,7 @@ - + @@ -52,7 +52,7 @@ - + @@ -63,24 +63,24 @@ - + - + - + - + @@ -103,7 +103,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -13 26 @@ -111,12 +111,12 @@ hstem 588 23 hstem 684 -20 vstem 57 30 - vstem 356 27 + vstem 355 28 pointTag - hintSet0002 + hintRef0001 stems hstem -13 24 @@ -129,20 +129,7 @@ pointTag - hintSet0016 - stems - - hstem -13 26 - hstem 463 20 - hstem 588 23 - hstem 684 -20 - vstem 57 30 - vstem 356 27 - - - - pointTag - hintSet0019 + hintRef0002 stems hstem -13 26 @@ -150,12 +137,12 @@ hstem 588 23 hstem 669 23 vstem 57 30 - vstem 355 28 + vstem 356 27 pointTag - hintSet0024 + hintRef0003 stems hstem -13 26 @@ -163,12 +150,12 @@ hstem 588 23 hstem 679 -20 vstem 57 30 - vstem 355 28 + vstem 356 27 pointTag - hintSet0025 + hintRef0004 stems hstem -13 26 @@ -176,12 +163,12 @@ hstem 588 23 hstem 684 -20 vstem 57 30 - vstem 355 28 + vstem 356 27 pointTag - hintSet0028 + hintRef0005 stems hstem -13 26 @@ -192,19 +179,6 @@ vstem 355 28 - - pointTag - hintSet0030 - stems - - hstem -13 26 - hstem 463 20 - hstem 588 23 - hstem 684 -20 - vstem 57 30 - vstem 355 28 - - id bad6026f637063a663f006162251db60f262035821bd5d7c30b14a452b61caf4ab7e4ac8ebe2c28a7ff524044fb17a6055c3616e1fb66cd4941b367d03b32b86 diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif index f531ba531..8a78a7da5 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif @@ -2,7 +2,7 @@ - + @@ -39,7 +39,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 756 64 diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif index 6c7eb2623..808e3aa05 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif @@ -3,7 +3,7 @@ - + @@ -41,7 +41,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 644 59 diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif index dc4ca0f42..5447540a9 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif @@ -2,7 +2,7 @@ - + @@ -10,7 +10,7 @@ - + @@ -26,7 +26,7 @@ - + @@ -39,17 +39,7 @@ pointTag - hintSet0000 - stems - - hstem 753 -20 - hstem 822 23 - vstem -164 328 - - - - pointTag - hintSet0004 + hintRef0000 stems hstem 741 23 @@ -57,16 +47,6 @@ vstem -164 328 - - pointTag - hintSet0010 - stems - - hstem 753 -20 - hstem 822 23 - vstem -164 328 - - id 26923e3aee3010934870d4fc153095cdba8f155938c98ecd8f46cc0d4bce87ebe8650eb366b0b60a41a5bb9fa95e5fcf0c7515ed11ed62026a826dc4027db8c9 diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif index bc73df9cc..cf6b6bc44 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif @@ -3,7 +3,7 @@ - + @@ -14,17 +14,17 @@ - + - + - + @@ -40,7 +40,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 588 23 @@ -50,7 +50,7 @@ pointTag - hintSet0005 + hintRef0001 stems hstem 588 23 @@ -60,7 +60,7 @@ pointTag - hintSet0006 + hintRef0002 stems hstem 588 23 @@ -70,7 +70,7 @@ pointTag - hintSet0009 + hintRef0003 stems hstem 588 23 diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/y.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/y.glif index bef86cb77..6d9e0e883 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/y.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/y.glif @@ -4,18 +4,18 @@ - + - + - + - + - + @@ -30,10 +30,10 @@ - + - + @@ -45,7 +45,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -255 22 @@ -55,7 +55,7 @@ pointTag - hintSet0002 + hintRef0001 stems hstem -255 22 @@ -65,18 +65,17 @@ pointTag - hintSet0006 + hintRef0002 stems hstem -255 22 hstem 447 23 - vstem -14 194 vstem 310 183 pointTag - hintSet0009 + hintRef0003 stems hstem -255 22 @@ -86,7 +85,7 @@ pointTag - hintSet0021 + hintRef0004 stems hstem -255 22 diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif index b20338dee..f58a220ba 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif @@ -4,18 +4,18 @@ - + - + - + - + - + @@ -30,10 +30,10 @@ - + - + @@ -63,7 +63,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -255 22 @@ -74,7 +74,7 @@ pointTag - hintSet0002 + hintRef0001 stems hstem -255 22 @@ -85,19 +85,18 @@ pointTag - hintSet0006 + hintRef0002 stems hstem -255 22 hstem 447 23 hstem 738 -20 - vstem -14 194 vstem 310 183 pointTag - hintSet0009 + hintRef0003 stems hstem -255 22 @@ -108,7 +107,7 @@ pointTag - hintSet0021 + hintRef0004 stems hstem -255 22 diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif index aedb6adb4..82130ad2f 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif @@ -4,18 +4,18 @@ - + - + - + - + @@ -33,12 +33,12 @@ - + - + @@ -73,19 +73,7 @@ pointTag - hintSet0000 - stems - - hstem -255 22 - hstem 447.5 22.5 - hstem 644 59 - vstem 133 58 - vstem 321 58 - - - - pointTag - hintSet0002 + hintRef0000 stems hstem -255 22 @@ -97,19 +85,19 @@ pointTag - hintSet0006 + hintRef0001 stems hstem -255 22 hstem 447 23 hstem 644 59 - vstem -14 194 + vstem 133 58 vstem 310 183 pointTag - hintSet0009 + hintRef0002 stems hstem -255 22 @@ -121,7 +109,7 @@ pointTag - hintSet0021 + hintRef0003 stems hstem -255 22 diff --git a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif index 1f3375e0c..1a6a1a3d0 100644 --- a/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif +++ b/tests/makeinstancesufo_data/expected_output/extralight.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif @@ -4,18 +4,18 @@ - + - + - + - + - + @@ -30,14 +30,14 @@ - + - + - + @@ -48,17 +48,17 @@ - + - + - + @@ -73,7 +73,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -255 22 @@ -85,7 +85,7 @@ pointTag - hintSet0002 + hintRef0001 stems hstem -255 22 @@ -97,20 +97,19 @@ pointTag - hintSet0006 + hintRef0002 stems hstem -255 22 hstem 447 23 hstem 588 23 hstem 684 -20 - vstem -14 194 vstem 310 183 pointTag - hintSet0009 + hintRef0003 stems hstem -255 22 @@ -122,19 +121,7 @@ pointTag - hintSet0021 - stems - - hstem -255 22 - hstem 447.5 22.5 - hstem 588 23 - hstem 684 -20 - vstem -19 512 - - - - pointTag - hintSet0022 + hintRef0004 stems hstem -255 22 @@ -146,7 +133,7 @@ pointTag - hintSet0027 + hintRef0005 stems hstem -255 22 @@ -158,7 +145,7 @@ pointTag - hintSet0028 + hintRef0006 stems hstem -255 22 @@ -170,7 +157,7 @@ pointTag - hintSet0031 + hintRef0007 stems hstem -255 22 diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/data/com.adobe.type.processedHashMap b/tests/makeinstancesufo_data/expected_output/regular.ufo/data/com.adobe.type.processedHashMap index 7a99b27d2..3ecb18717 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/data/com.adobe.type.processedHashMap +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/data/com.adobe.type.processedHashMap @@ -1,25 +1,25 @@ { -'A': ['068e64b2bdd1cd278a527f2ab57f4071e3830b85fe33d935c692f0f09d4438510d5181a6cd558b6e7f3b3b7aab2b0ae316952f385b19e4fcbe8395b9038899e5', ['checkOutlines', 'autohint']], -'Aacute': ['4a2096f71f02fc76c6eaddc1e19ef64b7f6340a2572927792c7a48182924d45c123eee41347135a48f415e32aa0fa149a8a6b192ac522902c5024545793270e0', ['checkOutlines', 'autohint']], -'Adieresis': ['ed971c9ccb51b9f2ad18233b2978edc90876cd6f1459c6ede361751462fd7a629be53d24cdaa22562d37456004e477442d67355fc0bf9ad28888e0c89d7a1d4c', ['checkOutlines', 'autohint']], -'Atilde': ['b2d8714c0f680f9a90fa6644191c46baf1a3bddaedab1b4a971e832d488880ff830c7d04a5953e4107673fd700271b3c45e10f4e1656d85098bfb3e5d9aae146', ['checkOutlines', 'autohint']], -'Y': ['503ee0a0d5df03c843a1d4cc9aacfd1ae522d05df2e5c7099b8cb732ff5455cf43877cbc7ed1c58b5ec5516d7fb7afedc75bbcf245be5c4b5e30ea0beda5add4', ['checkOutlines', 'autohint']], -'Yacute': ['d2dceab56697a90fe1a9b8b78e993530e29357984220639c166e3a13bc177a049b2ae8b642eb79e6fef911f5ef6e025fd593cc0c10d8e334c72abd7b66a53f85', ['checkOutlines', 'autohint']], -'Ydieresis': ['cb99cdf8c06d9bde5477069a71567ec851e49329efa8fc64dbce5dcb5bc1041064c3afecb6c10cf74d9d76582d9a6b861164d852c9c77d1a7741b370206fdb94', ['checkOutlines', 'autohint']], -'Ytilde': ['5a539f2db368c16174bcd7efbd6396a68e52a55e51baeba4221d8b79204299b44ce2fd497c878e1b4bbc03f0603d9f87c20baa994bed2e7ba085f5fa3708b3c1', ['checkOutlines', 'autohint']], -'a': ['4cb327f0af7a5828a109e900419ea075e75ead03097b912ed55f9690bfafe11f109e80cf46adae10f8e6577c3d0622b2984cea5db655f4f7df2214ba8fc98b8c', ['checkOutlines', 'autohint']], -'aacute': ['3fc119faec3d4c6faa9f86cd0248c80b429daaed812347b2b3d285a65a83f51b1ed5c03d56aa2f1a02025544fa275928b1ba6a88a129e1a083a9b86709fec9f4', ['checkOutlines', 'autohint']], -'acutecmb': ['c8cfc2ecf4ffa7aa270157ae438dfc51f449e0ee18ecd952427776d5d0ea4c57b12e1dcca10ba0f7a94106dc9ee6899bcb346bc7d71ad3ba7ee06f4d28ddf6fd', ['checkOutlines', 'autohint']], -'acutecmb.cap': ['eb169c1b8c0f99ebad88e21a64c1d6e4d94877d82548bde3e9c27aac1ad31c682f1f4a067f8bef3ad9b1da5b7e7a1bf8d837451ccc9eaa18c6d935bc9e5d36de', ['checkOutlines', 'autohint']], -'adieresis': ['af714b08ce1fdb2f52e75e77b473502160e713c72026057764639281308070beb520d49ebc09247047aabf391cb14e1cacc77983a74d17f21603915bc3833d5c', ['checkOutlines', 'autohint']], -'atilde': ['c60bda7de6dd9a191bc224f824d532426b111fa60c5be767052536efcb787a895f24f06de2bd2cfcdda1864fb4738de0fe254ea8716708df5d5bd19f54785ace', ['checkOutlines', 'autohint']], -'dieresiscmb': ['398e06b52b2ec08f9d8c6414449e4fb588aaf86557ea80e2152631710c462b899cd4f28ec35e00c617644e8e540e6ef046a6ac878e3087ce0ed4ebe25a4506a5', ['checkOutlines', 'autohint']], -'dieresiscmb.cap': ['a703f97f034d7fc556b1c6c457a83721b03ae7a1a01d3e896b5f93bef25e8847a3c1456b1851ced865ba8f80393a48f2a3b25acb74d22b805456fc3f4cf8960a', ['checkOutlines', 'autohint']], +'A': ['1cd208daf2f427f53a76aa2eab1720f3d12b561b6d07f0efd9558b2e42e9c7330548119a17cbd57cb7c4e368cd78ce607c2793f4e3e32da5dbda8d877d1658cd', ['checkOutlines', 'autohint']], +'Aacute': ['c5d967978bd0067e8938a5af2df9fcf7c02ea1d534e159b8c35eb18621bd510a47bb30456ecd9d0bf7ee669a7d505e40b1eff4733a0aace9752a17e13d68ba05', ['checkOutlines', 'autohint']], +'Adieresis': ['30ee50fd188e95cdbf0efef6bdcc15c8dfd07a087d77132f2d432413e4eb69b56e5e07c028ec9c825ecfcce06e5567c42286999c01a6bc1338239224dfdbd047', ['checkOutlines', 'autohint']], +'Atilde': ['c92a189139da81bb40c936971675b13096a701035e7f80196ccdf568e7a9843af7d5f874662fd6254caef61d0b4542e367dfd95b139d244d448d8c5d73e4cda3', ['checkOutlines', 'autohint']], +'Y': ['3f541ffad56bb0aeb99c0aad4ca76f5d0ecd462ae8a88949f50be1410f3241d0ac7080f9b1f64f62125f6b76768adb073f33ba6cd0bd30736dbcd5c1e4939649', ['checkOutlines', 'autohint']], +'Yacute': ['52301d80e41149085dda8c27b329253c6559b145cc30ff4ccf74e38d721ad52ce970b7ee2453d7ac34583dd317f8668d36daa308663ca4ec1868911ba7690bae', ['checkOutlines', 'autohint']], +'Ydieresis': ['fc5a6b1b07270f24a6317d52d8bf7d21c938e2de17388ea84ad98aa13d074886fab688e5cca53a7a56b92ef157fcf10ceecc5aab5b4c1dcd47b43cdf48f1b51b', ['checkOutlines', 'autohint']], +'Ytilde': ['ee32cad4e0396c4e5130c668c9fd308f1a0d42287cd29101ff46459d15ec8ddaa44ccda529f23186ac19e434480c8c70e478a2cddd41bda5a60f9ebc19848c38', ['checkOutlines', 'autohint']], +'a': ['3ded7878bbc166b27593060efcffc40568066c569bcb323338c7c921655b9a9bfff40cbb2a91cbf60343ee2dc0c3f15811ad63a5e63aaaf2e2ba82b8214e894c', ['checkOutlines', 'autohint']], +'aacute': ['21cf8057d5c13ae31ff600a62d0bd1c7825d0c0d9aaa1937c78cc9dc3e24eed735b0f7f1a6fce8ec94e70efcd1ba718599c37561b7ab72a17070b0ceba38d42a', ['checkOutlines', 'autohint']], +'acutecmb': ['744e2d6087aaf4cdc98e48630b97a1e0f096d2f9f1c177c6ff7c5d355023c129207c5c6f4f1639c2fcde430a90b50bba2ea6a477db6fe5bb07a7118d3eef4c7f', ['checkOutlines', 'autohint']], +'acutecmb.cap': ['0f5c9d8282699b65ec41c50ccb23eac2a9f09c1dad765bf0fe19402aa4c6b3bfd3a21370bf2fd873e015031f0c66940147bc4aec6b0af9e1b3e2329545b37f7b', ['checkOutlines', 'autohint']], +'adieresis': ['2a85aa4ced91b8bf9bc5e5d9b41534b8b0ee44bc4bd41a39d7bb83f8115058c3d6c94be5d056f1304783fccfa6770df4ecd2775154c8fe35e82c3be046a60c2c', ['checkOutlines', 'autohint']], +'atilde': ['973206363efd74bacfab5b252fcf91619f009a331571d537ae01d1b274e855c9c7419bf9a4970321ef509435cd32c950589b2d56f772f1376209c36288ced5d4', ['checkOutlines', 'autohint']], +'dieresiscmb': ['3c0723c734feee053cef6d7e46d5a28ce8d39ed056d6a9705a3a9f2445084fdd9fee517a926513b1d348696f9e89d2334f12ee60f7ffcb22cb7b1e243ecbfdcb', ['checkOutlines', 'autohint']], +'dieresiscmb.cap': ['d8c631ce034b73a9a93c3249bd0b0ba537a11cf6ae251a76b7f4f66376cd04372ff0e2c6d4f18758f312d87b29d897a8c1cda2d4edc6f53b217827a925a04a74', ['checkOutlines', 'autohint']], 'hashMapVersion': (1, 0), -'tildecmb': ['54cec5c46758681872f14f447b40cb3d5dc393f93d6b8903d864e031353d7d143b561bde9afd9af0f33a6f6fd676b55eb6283d2e3eca8b2d5970ac0e67bd9f3c', ['checkOutlines', 'autohint']], -'tildecmb.cap': ['8b68e2caa8254df2b8c45b62cdafa67c88283a55218a3873bdb8c5372698e43b32562d03aa765d25ad69d975e54585eaefacdeff39b55aef3955f17e0b9c4a1c', ['checkOutlines', 'autohint']], -'y': ['083f00ea90199c7a740ec4199e35496ae7c0b813253cc1e015d9ed78b998fb3461557357d11e7023d5a7d41ec5f8292968fac5b8f58241cce6c5f8c14a485e71', ['checkOutlines', 'autohint']], -'yacute': ['682889e0e090f149ec49c899a63771c29be4635625116882c01a36963983e59b0288a7ae6d565a67b6a8ee86f63123b42cc36f495cb974bb1386ab56d26f9503', ['checkOutlines', 'autohint']], -'ydieresis': ['0c02166d8ba7bbb050c7555a31042c75af285df9f448cac66c7d5c524828fd52feb15b00b1dd2b93aebaa7919f68b2432cf8f1b3b599ec25b244ff787aa2af9a', ['checkOutlines', 'autohint']], -'ytilde': ['4fc9ce785676bcd72d4bffb657dcdb6ee63bdd43edc70318f185f30e0b7de0360a2d779497a50c226fc5f1649116dd6634923d16bc766f7301ced7b135700cb3', ['checkOutlines', 'autohint']], +'tildecmb': ['2bc9c54e871cde86cb690cf59dd90a4a4abca040a26b74baa4050e8b967ab689688760626fb1f5df54fb9dcae30d431e5e9fcf959783e90294438bad389c9126', ['checkOutlines', 'autohint']], +'tildecmb.cap': ['b34cfff9a9d2ce2ae071b9a36d182694b3efc6ecc6c2863b76aadbb57ecff206a3388b4f8fbff28cfbf3a18d0e539c89a957e620f727dd7ee27ef42b5fd7eda7', ['checkOutlines', 'autohint']], +'y': ['6d77a1fd938eebf0c8c84b09882f2077683ff296bc5c0b1f918fc534403af513ad0fad0d7a3747d8e93af74aab0196c4919e1cd8f238dd6f51ea34b7d26baff7', ['checkOutlines', 'autohint']], +'yacute': ['8c968029b81941a61758714b05ea376136ec1d48784743211981e2b60f64be608401e123f4ad9a81abb1219d70d0d616318a5d92a0b4ac10a51219600490795b', ['checkOutlines', 'autohint']], +'ydieresis': ['c79b00fa4017efb751b5ea519de174ff4f0942432000f5e892227b8661903988b1fa55c8e5df48d9de1175bcfafd898decf2ad4be1ff70f9e8209b2f67e7002d', ['checkOutlines', 'autohint']], +'ytilde': ['7718f1ae87a182df9208899d459b0fce5f510e77dfd76c3e9b90880b36ce8d6e1a4f7bbb04bfba78c3427f8b603694adc309f17f410b68f66d89c53fcf351fec', ['checkOutlines', 'autohint']], } diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/fontinfo.plist b/tests/makeinstancesufo_data/expected_output/regular.ufo/fontinfo.plist index 144048ad6..961f643d4 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/fontinfo.plist +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/fontinfo.plist @@ -82,7 +82,7 @@ openTypeOS2WinDescent 335 postscriptBlueFuzz - 0.21 + 0.12 postscriptBlueScale 0.038734 postscriptBlueValues diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif index 3a66382c8..ffd94749f 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif @@ -4,27 +4,27 @@ - - - + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -35,51 +35,73 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - vstem 5 648 + hstem 0 46.544 + hstem 217.396 46.699 + hstem 674.054 -20 + vstem 5.206 229.177 pointTag - hintSet0003 + hintRef0001 stems - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - vstem 5.21 229.17 + hstem 0 46.544 + hstem 217.396 46.699 + hstem 674.054 -20 + vstem 5.206 648.288 pointTag - hintSet0013 + hintRef0002 stems - hstem 0 45.24 - hstem 217.4 46.7 - hstem 674.05 -20 - vstem 5 648 + hstem 0 46.544 + hstem 217.396 46.699 + hstem 674.054 -20 + vstem 5.206 229.177 pointTag - hintSet0017 + hintRef0003 stems - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - vstem 5.21 229.17 + hstem 0 46.544 + hstem 217.396 46.699 + hstem 674.054 -20 + vstem 5.206 648.288 + + + + pointTag + hintRef0004 + stems + + hstem 0 45.2375 + hstem 217.396 46.699 + hstem 674.054 -20 + vstem 5.206 648.288 + + + + pointTag + hintRef0005 + stems + + hstem 0 45.2375 + hstem 217.396 46.699 + hstem 674.054 -20 + vstem 5.206 229.177 id - 7780e04248642674813a2d2c471fbb3f9b21a4c2aea4421fb53e99d0dca3f6865ff730ac7f612c1ce78a83f7acd311df8412fe2e2711a6527d8fcec57eee0ff9 + b76ee42dedf520cb39e5980c26904b99985a96785fcfc7c7d8900b3dd576d387847cb9d66c75a046b67daac74d275dab82cb575fad70597214684ea8d88410fa diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif index 4494ee962..61bb53ef9 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif @@ -4,45 +4,45 @@ - - - + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -53,55 +53,79 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 745.3 -20 - vstem 5 648 + hstem 0 46.544 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 745.301 -20 + vstem 5.206 229.177 pointTag - hintSet0003 + hintRef0001 stems - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 745.3 -20 - vstem 5.21 229.17 + hstem 0 46.544 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 745.301 -20 + vstem 5.206 648.288 pointTag - hintSet0013 + hintRef0002 stems - hstem 0 45.24 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 745.3 -20 - vstem 5 648 + hstem 0 46.544 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 745.301 -20 + vstem 5.206 229.177 pointTag - hintSet0017 + hintRef0003 stems - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 745.3 -20 - vstem 5.21 229.17 + hstem 0 46.544 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 745.301 -20 + vstem 5.206 648.288 + + + + pointTag + hintRef0004 + stems + + hstem 0 45.2375 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 745.301 -20 + vstem 5.206 648.288 + + + + pointTag + hintRef0005 + stems + + hstem 0 45.2375 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 745.301 -20 + vstem 5.206 229.177 id - 598fa5698308cf0bf4633b8df8d19e6225dc530bbb5112f87ce4a1b3fdb0a79aaaf3c8941c9a82a5842575d22f3b14ee0e4233b88c408caf44691e561debde8f + 47ad0ff3fd1dff1af978f57190a214a58d9f8497a2f0af1fc55046c8d4b3306a0b07788177ae63e5aaaaef7338e86e8388d8b3a1e4608a2a46ec8e5766992fa5 diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif index 2167853ec..b5d6a26b4 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif @@ -4,55 +4,55 @@ - - - + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + @@ -63,72 +63,46 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 744.11 109.73 - vstem 161.97 114.94 - vstem 385.54 114.93 + hstem 0 46.544 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 744.108 109.727 + vstem 5.206 229.177 + vstem 385.535 114.933 pointTag - hintSet0003 + hintRef0001 stems - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 744.11 109.73 - vstem 5.21 229.17 - vstem 385.54 114.93 + hstem 0 45.2375 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 744.108 109.727 + vstem 5.206 229.177 + vstem 385.535 114.933 pointTag - hintSet0013 + hintRef0002 stems - hstem 0 45.24 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 744.11 109.73 - vstem 161.97 114.94 - vstem 385.54 114.93 - - - - pointTag - hintSet0017 - stems - - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 744.11 109.73 - vstem 5.21 229.17 - vstem 385.54 114.93 - - - - pointTag - hintSet0019 - stems - - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 744.11 109.73 - vstem 161.97 114.94 - vstem 385.54 114.93 + hstem 0 46.544 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 744.108 109.727 + vstem 161.972 114.933 + vstem 385.535 114.933 id - b2dfdbe9d17bcb4ebd988b3074becb070eb139e333337b559f776b50e8f60d4b4ed5f65110b97940b11b36493426c087167decbd4f98af223be8b772446d6bb0 + 5701519685e4356e0e2e8661b491ca7085e6665ac3c9776514fac4951e62e4e2a678be95d025398e7c3742e4ddab802abdaf2272b50586a184c47497e32a6e89 diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif index 096e57e48..60078ab8f 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif @@ -4,55 +4,55 @@ - - - + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -63,98 +63,110 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 5 648 + hstem 0 46.544 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 734.136 -20 + hstem 804.408 58.345 + vstem 5.206 229.177 pointTag - hintSet0003 + hintRef0001 stems - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 5.21 229.17 + hstem 0 46.544 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 734.136 -20 + hstem 804.408 58.345 + vstem 5.206 648.288 pointTag - hintSet0013 + hintRef0002 stems - hstem 0 45.24 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 5 648 + hstem 0 46.544 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 734.136 -20 + hstem 804.408 58.345 + vstem 5.206 229.177 pointTag - hintSet0017 + hintRef0003 stems - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 5.21 229.17 + hstem 0 46.544 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 734.136 -20 + hstem 804.408 58.345 + vstem 5.206 648.288 pointTag - hintSet0023 + hintRef0004 stems - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 722.81 58.34 - hstem 804.41 58.34 - vstem 5 648 + hstem 0 45.2375 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 734.136 -20 + hstem 804.408 58.345 + vstem 5.206 648.288 pointTag - hintSet0028 + hintRef0005 stems - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 5 648 + hstem 0 45.2375 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 734.136 -20 + hstem 804.408 58.345 + vstem 5.206 229.177 pointTag - hintSet0029 + hintRef0006 stems - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 5.21 229.17 + hstem 0 46.544 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 722.807 58.345 + vstem 5.206 648.288 + + + + pointTag + hintRef0007 + stems + + hstem 0 46.544 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 734.136 -20 + hstem 804.408 58.345 + vstem 5.206 229.177 id - 3dc41d5c62d20d2d6a613ad55150cfa12f3c9915303039848c8b57226d6976378a1778614a1632fa414a3f89b7238a4c568dcc178b96f2785a1282ee164503f6 + 762aea2390a1185e7fa47c9e76ec74baae49c064d5b1dd55df1b34524d4cb50c01c0c74929d7b34f324493230739d0bfc1720c19c55bad609ae899e512fb588d diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif index e83ccfe76..d95107c09 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif @@ -4,31 +4,31 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + @@ -39,70 +39,47 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem 0 46.24 - hstem 628.48 40.78 - vstem 270.57 94.45 - vstem 394.23 228.69 + hstem 0 46.2445 + hstem 622.9805 46.2785 + vstem 394.234 228.684 pointTag - hintSet0003 + hintRef0001 stems - hstem 0 46.24 - hstem 622.98 46.28 - vstem 270.57 94.45 + hstem 0 46.2495 + hstem 623.9715 45.2875 + vstem 270.568 94.452 pointTag - hintSet0007 + hintRef0002 stems - hstem 0 46.25 - hstem 623.98 45.28 - vstem 270.57 94.45 + hstem 0 46.2445 + hstem 622.9805 46.2785 + vstem 270.568 94.452 pointTag - hintSet0012 + hintRef0003 stems - hstem 0 46.24 - hstem 622.98 46.28 - vstem 270.57 94.45 - - - - pointTag - hintSet0017 - stems - - hstem 0 46.24 - hstem 628.48 40.78 - vstem 270.57 94.45 - vstem 394.23 228.69 - - - - pointTag - hintSet0019 - stems - - hstem 0 46.24 - hstem 622.98 46.28 - vstem 270.57 94.45 - vstem 394.23 228.69 + hstem 0 46.2445 + hstem 622.9805 46.2785 + vstem 394.234 228.684 id - c2acd946962abdd4405b511377a312a3136ace20e1f5b7d9a33b6a43a87ebc5f04ab54c42ce0c3253988540fc3eda2a415af2f3cd6f933792b3e2a395a2725ad + 3f314cf7d7b9a89c05cb0c0d0bf3306d0b332cb8611865ebb54de8ffaedce58e058bb77e2fcb78e439928152289b4bb6487fd99044f83746dbed81755778de63 diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif index 7e51e26a2..65fafceea 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif @@ -4,49 +4,49 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -57,76 +57,51 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem 0 46.24 - hstem 628.48 40.78 - hstem 735.71 -20 - vstem 270.57 94.45 - vstem 394.23 228.69 + hstem 0 46.2445 + hstem 622.9805 46.2785 + hstem 735.712 -20 + vstem 394.234 228.684 pointTag - hintSet0003 + hintRef0001 stems - hstem 0 46.24 - hstem 622.98 46.28 - hstem 735.71 -20 - vstem 270.57 94.45 + hstem 0 46.2495 + hstem 623.9715 45.2875 + hstem 735.712 -20 + vstem 270.568 94.452 pointTag - hintSet0007 + hintRef0002 stems - hstem 0 46.25 - hstem 623.98 45.28 - hstem 735.71 -20 - vstem 270.57 94.45 + hstem 0 46.2445 + hstem 622.9805 46.2785 + hstem 735.712 -20 + vstem 270.568 94.452 pointTag - hintSet0012 + hintRef0003 stems - hstem 0 46.24 - hstem 622.98 46.28 - hstem 735.71 -20 - vstem 270.57 94.45 - - - - pointTag - hintSet0017 - stems - - hstem 0 46.24 - hstem 628.48 40.78 - hstem 735.71 -20 - vstem 270.57 94.45 - vstem 394.23 228.69 - - - - pointTag - hintSet0019 - stems - - hstem 0 46.24 - hstem 622.98 46.28 - hstem 735.71 -20 - vstem 270.57 94.45 - vstem 394.23 228.69 + hstem 0 46.2445 + hstem 622.9805 46.2785 + hstem 735.712 -20 + vstem 394.234 228.684 id - de8c1981a39009741f2454f6052e146ba21fc6c3ecef77a7fc1005597388fa0bf59a4ec84aae3e60c3a484fbf9add16d09433b3926e21e09e4337929236f586e + 4d3ee8c49649f8d48c87b2dafe8c812d6cf3a6ce809abcfc57159574ce55c1efd4c28eb8f41b1ebf2de7a958beacc3b1350d43965e4999c1bbb9c68b44ec7127 diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif index f2bfada3f..616a9eb2c 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif @@ -4,59 +4,59 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + @@ -67,83 +67,61 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem 0 46.24 - hstem 628.48 40.78 - vstem 270.57 94.45 - vstem 394.23 228.69 + hstem 0 46.2445 + hstem 622.9805 46.2785 + vstem 394.234 228.684 pointTag - hintSet0003 + hintRef0001 stems - hstem 0 46.24 - hstem 622.98 46.28 - vstem 270.57 94.45 + hstem 0 46.2495 + hstem 623.9715 45.2875 + vstem 270.568 94.452 pointTag - hintSet0007 + hintRef0002 stems - hstem 0 46.25 - hstem 623.98 45.28 - vstem 270.57 94.45 + hstem 0 46.2445 + hstem 622.9805 46.2785 + vstem 270.568 94.452 pointTag - hintSet0012 + hintRef0003 stems - hstem 0 46.24 - hstem 622.98 46.28 - vstem 270.57 94.45 + hstem 0 46.2445 + hstem 622.9805 46.2785 + hstem 744.108 109.727 + vstem 177.465 114.934 + vstem 394.234 228.684 pointTag - hintSet0017 + hintRef0004 stems - hstem 0 46.24 - hstem 628.48 40.78 - vstem 270.57 94.45 - vstem 394.23 228.69 - - - - pointTag - hintSet0019 - stems - - hstem 0 46.24 - hstem 622.98 46.28 - hstem 744.11 109.73 - vstem 177.47 114.93 - vstem 394.23 228.69 - - - - pointTag - hintSet0026 - stems - - hstem 0 46.24 - hstem 622.98 46.28 - hstem 744.11 109.73 - vstem 270.57 94.45 - vstem 401.03 114.93 + hstem 0 46.2445 + hstem 622.9805 46.2785 + hstem 744.108 109.727 + vstem 270.568 94.452 + vstem 401.028 114.934 id - b73a908f2aeb9039a6854b4bcf2e41571fb6c4e0644bee80e1a4c0df58def4078426833e93c278f5585873270d2d92cea92497d243de2d3114043e5aa00e0150 + 3077eab171fa7841e5555b274b360b762faf097d6e5bdad3e5e60c6fc0ce81c1aefb66e7fa9983204536b49112af6875acf726a30c46387561dd50c293b22d68 diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif index 036415a40..c99e37d12 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif @@ -4,59 +4,59 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -67,119 +67,78 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem 0 46.24 - hstem 628.48 40.78 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 270.57 94.45 - vstem 394.23 228.69 + hstem 0 46.2445 + hstem 622.9805 46.2785 + hstem 734.136 -20 + hstem 804.408 58.345 + vstem 394.234 228.684 pointTag - hintSet0003 + hintRef0001 stems - hstem 0 46.24 - hstem 622.98 46.28 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 270.57 94.45 + hstem 0 46.2495 + hstem 623.9715 45.2875 + hstem 734.136 -20 + hstem 804.408 58.345 + vstem 270.568 94.452 pointTag - hintSet0007 + hintRef0002 stems - hstem 0 46.25 - hstem 623.98 45.28 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 270.57 94.45 + hstem 0 46.2445 + hstem 622.9805 46.2785 + hstem 734.136 -20 + hstem 804.408 58.345 + vstem 270.568 94.452 pointTag - hintSet0012 + hintRef0003 stems - hstem 0 46.24 - hstem 622.98 46.28 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 270.57 94.45 + hstem 0 46.2445 + hstem 622.9805 46.2785 + hstem 734.136 -20 + hstem 804.408 58.345 + vstem 394.234 228.684 pointTag - hintSet0017 + hintRef0004 stems - hstem 0 46.24 - hstem 628.48 40.78 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 270.57 94.45 - vstem 394.23 228.69 + hstem 0 46.2445 + hstem 622.9805 46.2785 + hstem 722.807 58.345 + vstem 394.234 228.684 pointTag - hintSet0019 + hintRef0005 stems - hstem 0 46.24 - hstem 622.98 46.28 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 270.57 94.45 - vstem 394.23 228.69 - - - - pointTag - hintSet0025 - stems - - hstem 0 46.24 - hstem 622.98 46.28 - hstem 722.81 58.34 - hstem 804.41 58.34 - vstem 270.57 94.45 - - - - pointTag - hintSet0030 - stems - - hstem 0 46.24 - hstem 622.98 46.28 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 270.57 94.45 - - - - pointTag - hintSet0031 - stems - - hstem 0 46.24 - hstem 622.98 46.28 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 270.57 94.45 - vstem 394.23 228.69 + hstem 0 46.2445 + hstem 622.9805 46.2785 + hstem 734.136 -20 + hstem 804.408 58.345 + vstem 270.568 94.452 id - 145cbaa8e18a7eaa9e30eca3e670aedec7c8eb7970709ae699013cb0d4fffc88c7ad5de190225169c58fb225be3961c78cb1fbdec53c194dfd7928e1bfe28b95 + abb5779527ce18ab2ba4c841d930697bf5b8590e504aff1dab4ba97a71ddb710ae1ddbff3ef47765c873a7455af543c730f00833a1f782b1da4589ae13c1ad31 diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/a.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/a.glif index 997b7f058..d2cc0eded 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/a.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/a.glif @@ -4,67 +4,67 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -75,40 +75,28 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem -13.12 65.89 - hstem 442.29 45.37 - vstem 45.14 88.58 - vstem 323.6 84.28 + hstem -13.123 65.905 + hstem 442.288 45.37 + vstem 45.136 88.579 + vstem 323.601 84.279 pointTag - hintSet0009 + hintRef0001 stems - hstem -10.25 52.16 - hstem 442.29 45.37 - vstem 45.14 88.58 - vstem 323.6 84.28 - - - - pointTag - hintSet0024 - stems - - hstem -13.12 65.89 - hstem 442.29 45.37 - vstem 45.14 88.58 - vstem 323.6 84.28 + hstem -10.247 52.152 + hstem 442.288 45.37 + vstem 323.601 84.279 id - 91c2f00b245fffd5e37c771304e339f676078a7067774a4c42c4dd6d82c02bc00be42ec3943ba9cf0701cdf79dabea3b3951f6f1d0001dea6a7b5c19e19cea9c + b887238eb3e2fd8619587c8825231aab35000b9f92c4448d89cbef18073d8722ce656a83bad5f1b78f2ec8aca036c97d08fdccd418ce2daeb6da88b221963706 diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif index e35fe7659..4f0107f14 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif @@ -4,85 +4,85 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -93,40 +93,28 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem -13.12 65.89 - hstem 442.29 45.37 - vstem 45.14 88.58 - vstem 323.6 84.28 + hstem -13.123 65.905 + hstem 442.288 45.37 + vstem 45.136 88.579 + vstem 323.601 84.279 pointTag - hintSet0016 + hintRef0001 stems - hstem -10.25 52.16 - hstem 442.29 45.37 - vstem 45.14 88.58 - vstem 323.6 84.28 - - - - pointTag - hintSet0031 - stems - - hstem -13.12 65.89 - hstem 442.29 45.37 - vstem 45.14 88.58 - vstem 323.6 84.28 + hstem -10.247 52.152 + hstem 442.288 45.37 + vstem 323.601 84.279 id - 65be6738ecdb7a8253cdf45b2d7ad05593d546d76c317ca1a00c7055aec0b946e368aee94bdaac1f91e41ee83def221f74c2d79d6387c87110476427b06302eb + b5f3a7606bd34fa1f1980da9f3cee4e63ccb50ac53a10d971b82f0b53b418930945bbec9fb1bfcb1d7afebd087e0e74feace244d04ea871edd869e4be1b1f034 diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif index 9cbca1324..03ae2e55c 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif @@ -2,22 +2,22 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -29,16 +29,16 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem 745.3 -20 - vstem -67 194 + hstem 745.3006 -20 + vstem -67.3576 194.7152 id - 94e23d802b136bf9f30e6340aeab47dbaf8d99057c03096578d7998a7e7449c8392be7f53aeb206e6f4e0f594909edfb4a02a22167641962f44cf889f59f82d6 + 0f5c9d8282699b65ec41c50ccb23eac2a9f09c1dad765bf0fe19402aa4c6b3bfd3a21370bf2fd873e015031f0c66940147bc4aec6b0af9e1b3e2329545b37f7b diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif index f24e5d3f1..8437eab83 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif @@ -3,22 +3,22 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -30,16 +30,16 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem 557 201 - vstem -59 181 + hstem 556.7943 201.3165 + vstem -58.8639 180.8513 id - 3dcc06e623cb83e146836ae5806c65b596344b19e08901555ad407bedba44d46c1eb940a2ea640b9f8b88d01a514381a2c319a94ae198c8908f94b9af2904bfb + 744e2d6087aaf4cdc98e48630b97a1e0f096d2f9f1c177c6ff7c5d355023c129207c5c6f4f1639c2fcde430a90b50bba2ea6a477db6fe5bb07a7118d3eef4c7f diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif index 8af5bf794..6365dca50 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif @@ -4,95 +4,95 @@ - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -103,91 +103,40 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem -13.12 65.89 - hstem 442.29 45.37 - hstem 595.77 113.89 - vstem 85.89 119.1 - vstem 323.6 84.28 + hstem -13.123 65.905 + hstem 442.288 45.37 + hstem 595.766 113.892 + vstem 85.889 119.098 + vstem 294.741 119.098 pointTag - hintSet0005 + hintRef0001 stems - hstem -13.12 65.89 - hstem 442.29 45.37 - hstem 595.77 113.89 - vstem 45.14 88.58 - vstem 294.74 119.1 + hstem -13.123 65.905 + hstem 442.288 45.37 + vstem 45.136 88.579 + vstem 323.601 84.279 pointTag - hintSet0012 + hintRef0002 stems - hstem -13.12 65.89 - hstem 442.29 45.37 - hstem 595.77 113.89 - vstem 45.14 88.58 - vstem 323.6 84.28 - - - - pointTag - hintSet0015 - stems - - hstem -13.12 65.89 - hstem 442.29 45.37 - hstem 595.77 113.89 - vstem 45.14 88.58 - vstem 294.74 119.1 - - - - pointTag - hintSet0018 - stems - - hstem -13.12 65.89 - hstem 442.29 45.37 - hstem 595.77 113.89 - vstem 85.89 119.1 - vstem 323.6 84.28 - - - - pointTag - hintSet0019 - stems - - hstem -10.25 52.16 - hstem 442.29 45.37 - hstem 595.77 113.89 - vstem 85.89 119.1 - vstem 323.6 84.28 - - - - pointTag - hintSet0034 - stems - - hstem -13.12 65.89 - hstem 442.29 45.37 - hstem 595.77 113.89 - vstem 45.14 88.58 - vstem 294.74 119.1 + hstem -10.247 52.152 + hstem 442.288 45.37 + vstem 323.601 84.279 id - 8b46e158a799fe762633ff3debd5ff80b3a135fdf0c942421316848cb46cca413d0483723e03d7e4c60774680db97e2e2794719574092d45e7f7b3a108e1f86c + 8f498002311fb435904c3dfe0aa516b80ce141156ea9381f5dfa2423e0af0ec92446e867818979034cd64d176d89135c2242ccdac049dc47c78dbfea8b2febf9 diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif index cf8357578..f889aacfa 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif @@ -4,95 +4,95 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -103,77 +103,53 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem -13.12 65.89 - hstem 442.29 45.37 - hstem 574.79 58.35 - hstem 656.4 58.34 - vstem 323.6 84.28 + hstem -13.123 65.905 + hstem 442.288 45.37 + hstem 656.396 58.345 + vstem 323.601 84.279 pointTag - hintSet0004 + hintRef0001 stems - hstem -13.12 65.89 - hstem 442.29 45.37 - hstem 574.79 58.35 - vstem 323.6 84.28 + hstem -13.123 65.905 + hstem 442.288 45.37 + hstem 574.794 58.345 + vstem 45.136 88.579 + vstem 323.601 84.279 pointTag - hintSet0009 + hintRef0002 stems - hstem -13.12 65.89 - hstem 442.29 45.37 - hstem 574.79 58.35 - hstem 656.4 58.34 - vstem 323.6 84.28 + hstem -13.123 65.905 + hstem 442.288 45.37 + hstem 656.396 58.345 + vstem 45.136 88.579 + vstem 323.601 84.279 pointTag - hintSet0011 + hintRef0003 stems - hstem -13.12 65.89 - hstem 442.29 45.37 - hstem 574.79 58.35 - vstem 45.14 88.58 - vstem 323.6 84.28 - - - - pointTag - hintSet0020 - stems - - hstem -10.25 52.16 - hstem 442.29 45.37 - hstem 574.79 58.35 - vstem 323.6 84.28 - - - - pointTag - hintSet0035 - stems - - hstem -13.12 65.89 - hstem 442.29 45.37 - hstem 574.79 58.35 - vstem 45.14 88.58 - vstem 323.6 84.28 + hstem -10.247 52.152 + hstem 442.288 45.37 + hstem 574.794 58.345 + vstem 323.601 84.279 id - 5fd8777229a4c54f717549a275f8eae562e298f503cceba0f8a318df8d570b370544f8bb0a5c2e8802f5f0219264f64827c99f6704affa5ae457a67d9e83c48c + 50aea472cea2faf14a98b2293a3a0300067b8b311efeaf03252030aba6c493c6b0167667db89f3db2f159fb33260c55208dfb73227be22010f058a71b9df76bb diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif index 7952465ef..72a6a41a6 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif @@ -2,32 +2,32 @@ - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + @@ -39,17 +39,17 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem 744.11 109.73 - vstem -169.73 114.94 - vstem 53.84 114.93 + hstem 744.1076 109.7278 + vstem -169.7278 114.9335 + vstem 53.8354 114.9335 id - e515945e06395806a2d2a35c470bb7d3d04f32390e1587a8ac4e3d212d89bdf6ddbcb8d762733abefb5295ffccfb7200ef224d333e2dedc4843333b4d4e8f7fc + d8c631ce034b73a9a93c3249bd0b0ba537a11cf6ae251a76b7f4f66376cd04372ff0e2c6d4f18758f312d87b29d897a8c1cda2d4edc6f53b217827a925a04a74 diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif index e75097e9a..381bff939 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif @@ -3,32 +3,32 @@ - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + @@ -41,17 +41,17 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem 595.77 113.89 - vstem -163.97 119.09 - vstem 44.88 119.09 + hstem 595.7658 113.8924 + vstem -163.9747 119.0981 + vstem 44.8766 119.0981 id - 8348b2699028dce324cf8d53e6ee5e07b273000662f6c97e156701e6a4ed992e46555d8536a5f1a2e63abfc0c546aaa6f3795e7f87cc0197c0a1e155bf024983 + 3c0723c734feee053cef6d7e46d5a28ce8d39ed056d6a9705a3a9f2445084fdd9fee517a926513b1d348696f9e89d2334f12ee60f7ffcb22cb7b1e243ecbfdcb diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif index 0f2b4eed1..e39cd9fa7 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif @@ -2,32 +2,32 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -39,37 +39,36 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem 734.14 -20 - hstem 804.41 58.34 - vstem -180 360 + hstem 734.1361 -20 + hstem 804.4082 58.3449 + vstem -180.0823 360.2057 pointTag - hintSet0004 + hintRef0001 stems - hstem 722.81 58.34 - hstem 804.41 58.34 - vstem -180 360 + hstem 722.807 58.3449 + vstem -180.0823 360.2057 pointTag - hintSet0009 + hintRef0002 stems - hstem 734.14 -20 - hstem 804.41 58.34 - vstem -180 360 + hstem 734.1361 -20 + hstem 804.4082 58.3449 + vstem -180.0823 360.2057 id - ad38104a7c257a571b25ab4846a8017528dbcb42d3a63f5f567c4ac2d47b460e62f2d24bfefeabdbf9985153f675398baf9eb425ae871b1613800ef546d7abb4 + b34cfff9a9d2ce2ae071b9a36d182694b3efc6ecc6c2863b76aadbb57ecff206a3388b4f8fbff28cfbf3a18d0e539c89a957e620f727dd7ee27ef42b5fd7eda7 diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif index 2ce408382..56d83c5c7 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif @@ -3,32 +3,32 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -40,36 +40,34 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem 574.79 58.35 - hstem 656.4 58.34 - vstem -163 326 + hstem 656.3956 58.3449 + vstem -162.8639 325.7278 pointTag - hintSet0004 + hintRef0001 stems - hstem 574.79 58.35 - vstem -163 326 + hstem 574.7943 58.3449 + vstem -162.8639 325.7278 pointTag - hintSet0009 + hintRef0002 stems - hstem 574.79 58.35 - hstem 656.4 58.34 - vstem -163 326 + hstem 656.3956 58.3449 + vstem -162.8639 325.7278 id - 1d53b76ff5e3df2c0909cb4c22fbc620afd82c180596e80d072a310fd38f6e53880308b0dad8be5818ee542d2bc3ca1c24d299687934d4c7b393f337d6ed6484 + 2bc9c54e871cde86cb690cf59dd90a4a4abca040a26b74baa4050e8b967ab689688760626fb1f5df54fb9dcae30d431e5e9fcf959783e90294438bad389c9126 diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/y.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/y.glif index dcc806e8d..a9869dc96 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/y.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/y.glif @@ -4,37 +4,37 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -45,77 +45,36 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 0 512 + hstem -249.259 109.81 + hstem 432.834 41.701 + vstem 0.041 512.07 pointTag - hintSet0002 + hintRef0001 stems - hstem -249.26 109.81 - hstem 439.04 35.5 - vstem 316.52 195.59 + hstem 432.834 41.701 + vstem 316.522 195.589 pointTag - hintSet0004 + hintRef0002 stems - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 316.52 195.59 - - - - pointTag - hintSet0006 - stems - - hstem -249.26 109.81 - hstem 439.04 35.5 - vstem 316.52 195.59 - - - - pointTag - hintSet0009 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 0 512 - - - - pointTag - hintSet0013 - stems - - hstem -249.26 109.81 - hstem 434.82 39.72 - vstem 0 512 - - - - pointTag - hintSet0021 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 0 512 + hstem -249.259 109.81 + hstem 434.819 39.716 + vstem 0.041 512.07 id - 8b72155e00d7be99bbfc8a89e73654f7d9f64886da28f7dff78841e4fad9bc5e60e89bdfc0d80516977ef3665cfa331e00d25450697744a755016b468ad4a8ba + 02d11302bce454ce957385e0d0265de92382b368cbdd9bd15c2002c91c6c3fc470c2c5dc7b27d45e320bcd019c84db0976f7ed0df3e4df732c09e31cfa3adf6d diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif index 9c941db64..6e19c05a6 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif @@ -4,55 +4,55 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -63,77 +63,36 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 0 512 + hstem -249.259 109.81 + hstem 432.834 41.701 + vstem 0.041 512.07 pointTag - hintSet0002 + hintRef0001 stems - hstem -249.26 109.81 - hstem 439.04 35.5 - vstem 316.52 195.59 + hstem 432.834 41.701 + vstem 316.522 195.589 pointTag - hintSet0004 + hintRef0002 stems - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 316.52 195.59 - - - - pointTag - hintSet0006 - stems - - hstem -249.26 109.81 - hstem 439.04 35.5 - vstem 316.52 195.59 - - - - pointTag - hintSet0009 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 0 512 - - - - pointTag - hintSet0013 - stems - - hstem -249.26 109.81 - hstem 434.82 39.72 - vstem 0 512 - - - - pointTag - hintSet0021 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 0 512 + hstem -249.259 109.81 + hstem 434.819 39.716 + vstem 0.041 512.07 id - 897ee0f4ac094776107aab40bf79dcba90fa378759721509c3d0662660fe18bd9da81c1d2c36f137157ac2bbdfede46c10b62f71d734ed521b7bcc8f6aefac52 + 7c014929e081615d89976fb1a3d8d47a63758b8c65baf28ff6621f4b58c8d5841f02916f6e2fbc26d07ada4854151d81bdf782e1cd31baa5e294dedf41be32ab diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif index c39b8c344..422194447 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif @@ -4,65 +4,65 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - + @@ -73,96 +73,30 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 119.96 119.1 - vstem 328.81 119.1 + hstem -249.259 109.81 + hstem 432.834 41.701 + vstem 119.959 119.098 + vstem 316.522 195.589 pointTag - hintSet0002 + hintRef0001 stems - hstem -249.26 109.81 - hstem 439.04 35.5 - vstem 119.96 119.1 - vstem 316.52 195.59 - - - - pointTag - hintSet0004 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 119.96 119.1 - vstem 316.52 195.59 - - - - pointTag - hintSet0006 - stems - - hstem -249.26 109.81 - hstem 439.04 35.5 - vstem 119.96 119.1 - vstem 316.52 195.59 - - - - pointTag - hintSet0009 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 119.96 119.1 - vstem 328.81 119.1 - - - - pointTag - hintSet0013 - stems - - hstem -249.26 109.81 - hstem 434.82 39.72 - vstem 119.96 119.1 - vstem 328.81 119.1 - - - - pointTag - hintSet0021 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 119.96 119.1 - vstem 328.81 119.1 - - - - pointTag - hintSet0022 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - hstem 595.77 113.89 - vstem 119.96 119.1 - vstem 328.81 119.1 + hstem -249.259 109.81 + hstem 434.819 39.716 + hstem 595.766 113.892 + vstem 119.959 119.098 + vstem 328.81 119.098 id - a3a5a7b549beb7ee405863365f3da14b412e3d5c6a69e1074733498e82826ca2f629ae9cd25cefb7df136e02bb43c0a9716aac7a4375f4a07dc28c40300dcb93 + c58af4e399627f9fae095f2c32b5ab2ea1e931090ed5fbce0894b77c211da06c861b394840dc9da360e58e34335463376ad3b353f6cea357bc914b08fe58a2f1 diff --git a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif index 4405e1b87..5dfb024aa 100644 --- a/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif +++ b/tests/makeinstancesufo_data/expected_output/regular.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif @@ -4,65 +4,65 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -73,119 +73,57 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem -249.26 109.81 - hstem 432.84 41.7 - hstem 574.79 58.35 - vstem 0 512 + hstem -249.259 109.81 + hstem 432.834 41.701 + vstem 0.041 512.07 pointTag - hintSet0002 + hintRef0001 stems - hstem -249.26 109.81 - hstem 439.04 35.5 - hstem 574.79 58.35 - vstem 316.52 195.59 + hstem 432.834 41.701 + vstem 316.522 195.589 pointTag - hintSet0004 + hintRef0002 stems - hstem -249.26 109.81 - hstem 432.84 41.7 - hstem 574.79 58.35 - vstem 316.52 195.59 + hstem -249.259 109.81 + hstem 434.819 39.716 + hstem 656.396 58.345 + vstem 0.041 512.07 pointTag - hintSet0006 + hintRef0003 stems - hstem -249.26 109.81 - hstem 439.04 35.5 - hstem 574.79 58.35 - vstem 316.52 195.59 + hstem 432.834 41.701 + hstem 574.794 58.345 + vstem 0.041 512.07 pointTag - hintSet0009 + hintRef0004 stems - hstem -249.26 109.81 - hstem 432.84 41.7 - hstem 574.79 58.35 - vstem 0 512 - - - - pointTag - hintSet0013 - stems - - hstem -249.26 109.81 - hstem 434.82 39.72 - hstem 574.79 58.35 - vstem 0 512 - - - - pointTag - hintSet0021 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - hstem 574.79 58.35 - vstem 0 512 - - - - pointTag - hintSet0022 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - hstem 574.79 58.35 - hstem 656.4 58.34 - vstem 0 512 - - - - pointTag - hintSet0026 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - hstem 574.79 58.35 - vstem 0 512 - - - - pointTag - hintSet0031 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - hstem 574.79 58.35 - hstem 656.4 58.34 - vstem 0 512 + hstem 432.834 41.701 + hstem 656.396 58.345 + vstem 0.041 512.07 id - 82983743a88b9de8b641aa8062088646336d7dc82cec5a4623d23ea935d5baf18636dcc70bab7a613d755e2011036522817385c101c787e3aba618a845e747e4 + e27caf0628093b3b64a740c2a2589e6a83a38532d83284268cdddf5e581892d0a48feffb04ef4220931fbd0f551511a3e627fc372475481f06cfbfc0b03dccf6 diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/data/com.adobe.type.processedHashMap b/tests/makeinstancesufo_data/expected_output/regular1.ufo/data/com.adobe.type.processedHashMap index 99c8aa8a7..3ecb18717 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/data/com.adobe.type.processedHashMap +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/data/com.adobe.type.processedHashMap @@ -1,25 +1,25 @@ { -'A': ['068e64b2bdd1cd278a527f2ab57f4071e3830b85fe33d935c692f0f09d4438510d5181a6cd558b6e7f3b3b7aab2b0ae316952f385b19e4fcbe8395b9038899e5', ['checkOutlines', 'autohint']], -'Aacute': ['2f3cd6c51f6b6093964928dce688986b289bed7be49345be9b9ccf06b7111a6edbab8012de50aa4e3d124859d019954dc2c66854e256f6527539d746e05036b4', ['checkOutlines', 'autohint']], -'Adieresis': ['b6c542676ad92592730b98e9a813722125bfd0388564ed67dbd1190333705f8a0bfe356c2691bc65253bde0293e391cf8bacea5a4e128a7994b27ca10176e76c', ['checkOutlines', 'autohint']], -'Atilde': ['cc66247e1e94d06efc65f0aa0b7db352299ade0287e8b8c7a8199f3398648b5662d580371367a9808db614d252283de0f0022a148800883b08060d558e2ca0e2', ['checkOutlines', 'autohint']], -'Y': ['503ee0a0d5df03c843a1d4cc9aacfd1ae522d05df2e5c7099b8cb732ff5455cf43877cbc7ed1c58b5ec5516d7fb7afedc75bbcf245be5c4b5e30ea0beda5add4', ['checkOutlines', 'autohint']], -'Yacute': ['30502584a123b87f0dcab1d5c6fdefc0a6bbf5f40ce10ff676d9f7f431b86be8876fa4123baa3851aaafa8028d6ec652c87b7e0701e82d20fb1fecf54157466d', ['checkOutlines', 'autohint']], -'Ydieresis': ['9e1d3f48af216c0ead3b663bb7b7660b2d17ee52da2dcaf7859bb3d6576f4d55096cedc5c20140e9ac2e915f073167ebe5b943840c18eba250fd63de3411416d', ['checkOutlines', 'autohint']], -'Ytilde': ['ebfc138dbae50d4b2656d50a2a0f692747b5211b5f88225536efe45315a6be61758b02c95ab9737089ba6adcc05fb70719c4d5b06f943ec211858290294c780e', ['checkOutlines', 'autohint']], -'a': ['2089986fdc4a46200208d75d8d0e99ad2e1498e1ec449b4b1e26e8fc93dacb003aad69e22bcde785aca4b78348fe1615d748c0b2e658a3de9132d7dcefa7b9c4', ['checkOutlines', 'autohint']], -'aacute': ['d1790cc6b96631a302dfdb6c3aaa68276360e8931ef83673ee6516c4f9860296f74c58893a2f014fd7bac432a34f44ce6254f928e6bac3b56842d6ff7a92558a', ['checkOutlines', 'autohint']], -'acutecmb': ['0024f2e1edf5b457e6bea39ca58f0a7590d0e9be99b91ec1cc23571624c9dd6a5836fa6ae80b123d360b08ab4b55e261b2fa359d1bdde2303cb0d4a2bab22a7d', ['checkOutlines', 'autohint']], -'acutecmb.cap': ['e33e947fbfa72555c7c0d70542b3cbff7ea92024a3f1248b0f6b0ee8e9785297993ac1360b71451b83598586c55997e441afdc07f5830f54acb9eff143bb52b1', ['checkOutlines', 'autohint']], -'adieresis': ['f3e1fdb2f122684613875a978dd3d445aee9d0655c19ad40739f11b23cb987dadd2a623257c28bbd2130fc15d5bf640fd514b4e917bf1581cf280d9df011042b', ['checkOutlines', 'autohint']], -'atilde': ['076cbee65e5c71994f6b3996df61ec8a2e5c9206635ccf77692b8a132f93a6810f8c0ba2c18abc53aa61686a74bc1a181498090cf9942b53ce1542a053f3f51c', ['checkOutlines', 'autohint']], -'dieresiscmb': ['d5035b99b93ae73ebbc61c545c02b2fe6754a55550f82063d62355034532e072e20fa918b0a16df9208d62fe5bc41c29810c335a33d3efc80232c1290d17ae29', ['checkOutlines', 'autohint']], -'dieresiscmb.cap': ['66a2599cb8f3d6d2d5c80b627a35550fdf9ca9caeae0f1d81c0e008aaceb7c06a9db4f29df5d068f9ba4b0af73e17530428825d3c553346de3fa4618f6ebc463', ['checkOutlines', 'autohint']], +'A': ['1cd208daf2f427f53a76aa2eab1720f3d12b561b6d07f0efd9558b2e42e9c7330548119a17cbd57cb7c4e368cd78ce607c2793f4e3e32da5dbda8d877d1658cd', ['checkOutlines', 'autohint']], +'Aacute': ['c5d967978bd0067e8938a5af2df9fcf7c02ea1d534e159b8c35eb18621bd510a47bb30456ecd9d0bf7ee669a7d505e40b1eff4733a0aace9752a17e13d68ba05', ['checkOutlines', 'autohint']], +'Adieresis': ['30ee50fd188e95cdbf0efef6bdcc15c8dfd07a087d77132f2d432413e4eb69b56e5e07c028ec9c825ecfcce06e5567c42286999c01a6bc1338239224dfdbd047', ['checkOutlines', 'autohint']], +'Atilde': ['c92a189139da81bb40c936971675b13096a701035e7f80196ccdf568e7a9843af7d5f874662fd6254caef61d0b4542e367dfd95b139d244d448d8c5d73e4cda3', ['checkOutlines', 'autohint']], +'Y': ['3f541ffad56bb0aeb99c0aad4ca76f5d0ecd462ae8a88949f50be1410f3241d0ac7080f9b1f64f62125f6b76768adb073f33ba6cd0bd30736dbcd5c1e4939649', ['checkOutlines', 'autohint']], +'Yacute': ['52301d80e41149085dda8c27b329253c6559b145cc30ff4ccf74e38d721ad52ce970b7ee2453d7ac34583dd317f8668d36daa308663ca4ec1868911ba7690bae', ['checkOutlines', 'autohint']], +'Ydieresis': ['fc5a6b1b07270f24a6317d52d8bf7d21c938e2de17388ea84ad98aa13d074886fab688e5cca53a7a56b92ef157fcf10ceecc5aab5b4c1dcd47b43cdf48f1b51b', ['checkOutlines', 'autohint']], +'Ytilde': ['ee32cad4e0396c4e5130c668c9fd308f1a0d42287cd29101ff46459d15ec8ddaa44ccda529f23186ac19e434480c8c70e478a2cddd41bda5a60f9ebc19848c38', ['checkOutlines', 'autohint']], +'a': ['3ded7878bbc166b27593060efcffc40568066c569bcb323338c7c921655b9a9bfff40cbb2a91cbf60343ee2dc0c3f15811ad63a5e63aaaf2e2ba82b8214e894c', ['checkOutlines', 'autohint']], +'aacute': ['21cf8057d5c13ae31ff600a62d0bd1c7825d0c0d9aaa1937c78cc9dc3e24eed735b0f7f1a6fce8ec94e70efcd1ba718599c37561b7ab72a17070b0ceba38d42a', ['checkOutlines', 'autohint']], +'acutecmb': ['744e2d6087aaf4cdc98e48630b97a1e0f096d2f9f1c177c6ff7c5d355023c129207c5c6f4f1639c2fcde430a90b50bba2ea6a477db6fe5bb07a7118d3eef4c7f', ['checkOutlines', 'autohint']], +'acutecmb.cap': ['0f5c9d8282699b65ec41c50ccb23eac2a9f09c1dad765bf0fe19402aa4c6b3bfd3a21370bf2fd873e015031f0c66940147bc4aec6b0af9e1b3e2329545b37f7b', ['checkOutlines', 'autohint']], +'adieresis': ['2a85aa4ced91b8bf9bc5e5d9b41534b8b0ee44bc4bd41a39d7bb83f8115058c3d6c94be5d056f1304783fccfa6770df4ecd2775154c8fe35e82c3be046a60c2c', ['checkOutlines', 'autohint']], +'atilde': ['973206363efd74bacfab5b252fcf91619f009a331571d537ae01d1b274e855c9c7419bf9a4970321ef509435cd32c950589b2d56f772f1376209c36288ced5d4', ['checkOutlines', 'autohint']], +'dieresiscmb': ['3c0723c734feee053cef6d7e46d5a28ce8d39ed056d6a9705a3a9f2445084fdd9fee517a926513b1d348696f9e89d2334f12ee60f7ffcb22cb7b1e243ecbfdcb', ['checkOutlines', 'autohint']], +'dieresiscmb.cap': ['d8c631ce034b73a9a93c3249bd0b0ba537a11cf6ae251a76b7f4f66376cd04372ff0e2c6d4f18758f312d87b29d897a8c1cda2d4edc6f53b217827a925a04a74', ['checkOutlines', 'autohint']], 'hashMapVersion': (1, 0), -'tildecmb': ['e2f1b1fa7a2ce42ac5eebfa34eb1e42918b04ce8afb026f658793f3cd59537a2c2bba8e4a87c2a30a51612164817158da96ebf4861bb36051e33310f269cc19d', ['checkOutlines', 'autohint']], -'tildecmb.cap': ['f46534624e0e6eaaafc01b93a2e00318986edcd477e5236f3b66dc6941650fe094e5cb72e1b6d3f28e675180ab5f4f64708fb4c14e8544bcde02db47ef101e03', ['checkOutlines', 'autohint']], -'y': ['083f00ea90199c7a740ec4199e35496ae7c0b813253cc1e015d9ed78b998fb3461557357d11e7023d5a7d41ec5f8292968fac5b8f58241cce6c5f8c14a485e71', ['checkOutlines', 'autohint']], -'yacute': ['ab3b0c59ff5ef1919c69a78b9c77f085fe0ec991bb1d15d4b868e9a70223d9985d55a9250f622c3b664175165528ffe02750d7f8def516ece90e6a363e9019e6', ['checkOutlines', 'autohint']], -'ydieresis': ['363263a29467dd33ea3c6cfe0bf3406e71f5a3787f42db82082533026bc16db8cc99e0e31026f2537c31350cb68438fd3f6cd3fc8ff091e7619ff9c6d385e8c6', ['checkOutlines', 'autohint']], -'ytilde': ['a4b0a7ba513654c60447644fcf8aaffe7f367db1e0f980322cd1209f2d7cb2d00f0b57a34f3779310905b701f28c23f494fc68576e8795bb26452b611a01daeb', ['checkOutlines', 'autohint']], +'tildecmb': ['2bc9c54e871cde86cb690cf59dd90a4a4abca040a26b74baa4050e8b967ab689688760626fb1f5df54fb9dcae30d431e5e9fcf959783e90294438bad389c9126', ['checkOutlines', 'autohint']], +'tildecmb.cap': ['b34cfff9a9d2ce2ae071b9a36d182694b3efc6ecc6c2863b76aadbb57ecff206a3388b4f8fbff28cfbf3a18d0e539c89a957e620f727dd7ee27ef42b5fd7eda7', ['checkOutlines', 'autohint']], +'y': ['6d77a1fd938eebf0c8c84b09882f2077683ff296bc5c0b1f918fc534403af513ad0fad0d7a3747d8e93af74aab0196c4919e1cd8f238dd6f51ea34b7d26baff7', ['checkOutlines', 'autohint']], +'yacute': ['8c968029b81941a61758714b05ea376136ec1d48784743211981e2b60f64be608401e123f4ad9a81abb1219d70d0d616318a5d92a0b4ac10a51219600490795b', ['checkOutlines', 'autohint']], +'ydieresis': ['c79b00fa4017efb751b5ea519de174ff4f0942432000f5e892227b8661903988b1fa55c8e5df48d9de1175bcfafd898decf2ad4be1ff70f9e8209b2f67e7002d', ['checkOutlines', 'autohint']], +'ytilde': ['7718f1ae87a182df9208899d459b0fce5f510e77dfd76c3e9b90880b36ce8d6e1a4f7bbb04bfba78c3427f8b603694adc309f17f410b68f66d89c53fcf351fec', ['checkOutlines', 'autohint']], } diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/fontinfo.plist b/tests/makeinstancesufo_data/expected_output/regular1.ufo/fontinfo.plist index c741df1df..440cbb3dd 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/fontinfo.plist +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/fontinfo.plist @@ -81,7 +81,7 @@ openTypeOS2WinDescent 335 postscriptBlueFuzz - 0.21 + 0.12 postscriptBlueScale 0.038734 postscriptBlueValues diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif index f031b1de9..4cb406f02 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif @@ -4,27 +4,27 @@ - - - + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -35,51 +35,73 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - vstem 5 648 + hstem 0 46.544 + hstem 217.396 46.699 + hstem 674.054 -20 + vstem 5.206 229.177 pointTag - hintSet0003 + hintRef0001 stems - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - vstem 5.21 229.17 + hstem 0 46.544 + hstem 217.396 46.699 + hstem 674.054 -20 + vstem 5.206 648.288 pointTag - hintSet0013 + hintRef0002 stems - hstem 0 45.24 - hstem 217.4 46.7 - hstem 674.05 -20 - vstem 5 648 + hstem 0 46.544 + hstem 217.396 46.699 + hstem 674.054 -20 + vstem 5.206 229.177 pointTag - hintSet0017 + hintRef0003 stems - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - vstem 5.21 229.17 + hstem 0 46.544 + hstem 217.396 46.699 + hstem 674.054 -20 + vstem 5.206 648.288 + + + + pointTag + hintRef0004 + stems + + hstem 0 45.2375 + hstem 217.396 46.699 + hstem 674.054 -20 + vstem 5.206 648.288 + + + + pointTag + hintRef0005 + stems + + hstem 0 45.2375 + hstem 217.396 46.699 + hstem 674.054 -20 + vstem 5.206 229.177 id - 7780e04248642674813a2d2c471fbb3f9b21a4c2aea4421fb53e99d0dca3f6865ff730ac7f612c1ce78a83f7acd311df8412fe2e2711a6527d8fcec57eee0ff9 + b76ee42dedf520cb39e5980c26904b99985a96785fcfc7c7d8900b3dd576d387847cb9d66c75a046b67daac74d275dab82cb575fad70597214684ea8d88410fa diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif index a8a68f87e..b5b11e752 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif @@ -4,45 +4,45 @@ - - - + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -53,55 +53,79 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 745.3 -20 - vstem 5 648 + hstem 0 46.544 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 745.301 -20 + vstem 5.206 229.177 pointTag - hintSet0003 + hintRef0001 stems - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 745.3 -20 - vstem 5.21 229.17 + hstem 0 46.544 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 745.301 -20 + vstem 5.206 648.288 pointTag - hintSet0013 + hintRef0002 stems - hstem 0 45.24 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 745.3 -20 - vstem 5 648 + hstem 0 46.544 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 745.301 -20 + vstem 5.206 229.177 pointTag - hintSet0017 + hintRef0003 stems - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 745.3 -20 - vstem 5.21 229.17 + hstem 0 46.544 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 745.301 -20 + vstem 5.206 648.288 + + + + pointTag + hintRef0004 + stems + + hstem 0 45.2375 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 745.301 -20 + vstem 5.206 648.288 + + + + pointTag + hintRef0005 + stems + + hstem 0 45.2375 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 745.301 -20 + vstem 5.206 229.177 id - 598fa5698308cf0bf4633b8df8d19e6225dc530bbb5112f87ce4a1b3fdb0a79aaaf3c8941c9a82a5842575d22f3b14ee0e4233b88c408caf44691e561debde8f + 47ad0ff3fd1dff1af978f57190a214a58d9f8497a2f0af1fc55046c8d4b3306a0b07788177ae63e5aaaaef7338e86e8388d8b3a1e4608a2a46ec8e5766992fa5 diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif index 1c5eacb4f..a05f0f1cf 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif @@ -4,55 +4,55 @@ - - - + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + @@ -63,72 +63,46 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 744.11 109.73 - vstem 161.97 114.94 - vstem 385.54 114.93 + hstem 0 46.544 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 744.108 109.727 + vstem 5.206 229.177 + vstem 385.535 114.933 pointTag - hintSet0003 + hintRef0001 stems - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 744.11 109.73 - vstem 5.21 229.17 - vstem 385.54 114.93 + hstem 0 45.2375 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 744.108 109.727 + vstem 5.206 229.177 + vstem 385.535 114.933 pointTag - hintSet0013 + hintRef0002 stems - hstem 0 45.24 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 744.11 109.73 - vstem 161.97 114.94 - vstem 385.54 114.93 - - - - pointTag - hintSet0017 - stems - - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 744.11 109.73 - vstem 5.21 229.17 - vstem 385.54 114.93 - - - - pointTag - hintSet0019 - stems - - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 744.11 109.73 - vstem 161.97 114.94 - vstem 385.54 114.93 + hstem 0 46.544 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 744.108 109.727 + vstem 161.972 114.933 + vstem 385.535 114.933 id - b2dfdbe9d17bcb4ebd988b3074becb070eb139e333337b559f776b50e8f60d4b4ed5f65110b97940b11b36493426c087167decbd4f98af223be8b772446d6bb0 + 5701519685e4356e0e2e8661b491ca7085e6665ac3c9776514fac4951e62e4e2a678be95d025398e7c3742e4ddab802abdaf2272b50586a184c47497e32a6e89 diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif index dc034e063..3a51101a8 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif @@ -4,55 +4,55 @@ - - - + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -63,98 +63,110 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 5 648 + hstem 0 46.544 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 734.136 -20 + hstem 804.408 58.345 + vstem 5.206 229.177 pointTag - hintSet0003 + hintRef0001 stems - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 5.21 229.17 + hstem 0 46.544 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 734.136 -20 + hstem 804.408 58.345 + vstem 5.206 648.288 pointTag - hintSet0013 + hintRef0002 stems - hstem 0 45.24 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 5 648 + hstem 0 46.544 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 734.136 -20 + hstem 804.408 58.345 + vstem 5.206 229.177 pointTag - hintSet0017 + hintRef0003 stems - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 5.21 229.17 + hstem 0 46.544 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 734.136 -20 + hstem 804.408 58.345 + vstem 5.206 648.288 pointTag - hintSet0023 + hintRef0004 stems - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 722.81 58.34 - hstem 804.41 58.34 - vstem 5 648 + hstem 0 45.2375 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 734.136 -20 + hstem 804.408 58.345 + vstem 5.206 648.288 pointTag - hintSet0028 + hintRef0005 stems - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 5 648 + hstem 0 45.2375 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 734.136 -20 + hstem 804.408 58.345 + vstem 5.206 229.177 pointTag - hintSet0029 + hintRef0006 stems - hstem 0 46.55 - hstem 217.4 46.7 - hstem 674.05 -20 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 5.21 229.17 + hstem 0 46.544 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 722.807 58.345 + vstem 5.206 648.288 + + + + pointTag + hintRef0007 + stems + + hstem 0 46.544 + hstem 217.396 46.699 + hstem 674.054 -20 + hstem 734.136 -20 + hstem 804.408 58.345 + vstem 5.206 229.177 id - 3dc41d5c62d20d2d6a613ad55150cfa12f3c9915303039848c8b57226d6976378a1778614a1632fa414a3f89b7238a4c568dcc178b96f2785a1282ee164503f6 + 762aea2390a1185e7fa47c9e76ec74baae49c064d5b1dd55df1b34524d4cb50c01c0c74929d7b34f324493230739d0bfc1720c19c55bad609ae899e512fb588d diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif index 216042700..301cdcf51 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif @@ -4,31 +4,31 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + @@ -39,70 +39,47 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem 0 46.24 - hstem 628.48 40.78 - vstem 270.57 94.45 - vstem 394.23 228.69 + hstem 0 46.2445 + hstem 622.9805 46.2785 + vstem 394.234 228.684 pointTag - hintSet0003 + hintRef0001 stems - hstem 0 46.24 - hstem 622.98 46.28 - vstem 270.57 94.45 + hstem 0 46.2495 + hstem 623.9715 45.2875 + vstem 270.568 94.452 pointTag - hintSet0007 + hintRef0002 stems - hstem 0 46.25 - hstem 623.98 45.28 - vstem 270.57 94.45 + hstem 0 46.2445 + hstem 622.9805 46.2785 + vstem 270.568 94.452 pointTag - hintSet0012 + hintRef0003 stems - hstem 0 46.24 - hstem 622.98 46.28 - vstem 270.57 94.45 - - - - pointTag - hintSet0017 - stems - - hstem 0 46.24 - hstem 628.48 40.78 - vstem 270.57 94.45 - vstem 394.23 228.69 - - - - pointTag - hintSet0019 - stems - - hstem 0 46.24 - hstem 622.98 46.28 - vstem 270.57 94.45 - vstem 394.23 228.69 + hstem 0 46.2445 + hstem 622.9805 46.2785 + vstem 394.234 228.684 id - c2acd946962abdd4405b511377a312a3136ace20e1f5b7d9a33b6a43a87ebc5f04ab54c42ce0c3253988540fc3eda2a415af2f3cd6f933792b3e2a395a2725ad + 3f314cf7d7b9a89c05cb0c0d0bf3306d0b332cb8611865ebb54de8ffaedce58e058bb77e2fcb78e439928152289b4bb6487fd99044f83746dbed81755778de63 diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif index bcbd33645..b21813b7e 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif @@ -4,49 +4,49 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -57,76 +57,51 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem 0 46.24 - hstem 628.48 40.78 - hstem 735.71 -20 - vstem 270.57 94.45 - vstem 394.23 228.69 + hstem 0 46.2445 + hstem 622.9805 46.2785 + hstem 735.712 -20 + vstem 394.234 228.684 pointTag - hintSet0003 + hintRef0001 stems - hstem 0 46.24 - hstem 622.98 46.28 - hstem 735.71 -20 - vstem 270.57 94.45 + hstem 0 46.2495 + hstem 623.9715 45.2875 + hstem 735.712 -20 + vstem 270.568 94.452 pointTag - hintSet0007 + hintRef0002 stems - hstem 0 46.25 - hstem 623.98 45.28 - hstem 735.71 -20 - vstem 270.57 94.45 + hstem 0 46.2445 + hstem 622.9805 46.2785 + hstem 735.712 -20 + vstem 270.568 94.452 pointTag - hintSet0012 + hintRef0003 stems - hstem 0 46.24 - hstem 622.98 46.28 - hstem 735.71 -20 - vstem 270.57 94.45 - - - - pointTag - hintSet0017 - stems - - hstem 0 46.24 - hstem 628.48 40.78 - hstem 735.71 -20 - vstem 270.57 94.45 - vstem 394.23 228.69 - - - - pointTag - hintSet0019 - stems - - hstem 0 46.24 - hstem 622.98 46.28 - hstem 735.71 -20 - vstem 270.57 94.45 - vstem 394.23 228.69 + hstem 0 46.2445 + hstem 622.9805 46.2785 + hstem 735.712 -20 + vstem 394.234 228.684 id - de8c1981a39009741f2454f6052e146ba21fc6c3ecef77a7fc1005597388fa0bf59a4ec84aae3e60c3a484fbf9add16d09433b3926e21e09e4337929236f586e + 4d3ee8c49649f8d48c87b2dafe8c812d6cf3a6ce809abcfc57159574ce55c1efd4c28eb8f41b1ebf2de7a958beacc3b1350d43965e4999c1bbb9c68b44ec7127 diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif index 94343d0d0..475336a3b 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif @@ -4,59 +4,59 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + @@ -67,83 +67,61 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem 0 46.24 - hstem 628.48 40.78 - vstem 270.57 94.45 - vstem 394.23 228.69 + hstem 0 46.2445 + hstem 622.9805 46.2785 + vstem 394.234 228.684 pointTag - hintSet0003 + hintRef0001 stems - hstem 0 46.24 - hstem 622.98 46.28 - vstem 270.57 94.45 + hstem 0 46.2495 + hstem 623.9715 45.2875 + vstem 270.568 94.452 pointTag - hintSet0007 + hintRef0002 stems - hstem 0 46.25 - hstem 623.98 45.28 - vstem 270.57 94.45 + hstem 0 46.2445 + hstem 622.9805 46.2785 + vstem 270.568 94.452 pointTag - hintSet0012 + hintRef0003 stems - hstem 0 46.24 - hstem 622.98 46.28 - vstem 270.57 94.45 + hstem 0 46.2445 + hstem 622.9805 46.2785 + hstem 744.108 109.727 + vstem 177.465 114.934 + vstem 394.234 228.684 pointTag - hintSet0017 + hintRef0004 stems - hstem 0 46.24 - hstem 628.48 40.78 - vstem 270.57 94.45 - vstem 394.23 228.69 - - - - pointTag - hintSet0019 - stems - - hstem 0 46.24 - hstem 622.98 46.28 - hstem 744.11 109.73 - vstem 177.47 114.93 - vstem 394.23 228.69 - - - - pointTag - hintSet0026 - stems - - hstem 0 46.24 - hstem 622.98 46.28 - hstem 744.11 109.73 - vstem 270.57 94.45 - vstem 401.03 114.93 + hstem 0 46.2445 + hstem 622.9805 46.2785 + hstem 744.108 109.727 + vstem 270.568 94.452 + vstem 401.028 114.934 id - b73a908f2aeb9039a6854b4bcf2e41571fb6c4e0644bee80e1a4c0df58def4078426833e93c278f5585873270d2d92cea92497d243de2d3114043e5aa00e0150 + 3077eab171fa7841e5555b274b360b762faf097d6e5bdad3e5e60c6fc0ce81c1aefb66e7fa9983204536b49112af6875acf726a30c46387561dd50c293b22d68 diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif index cdf802492..ea79c5535 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif @@ -4,59 +4,59 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -67,119 +67,78 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem 0 46.24 - hstem 628.48 40.78 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 270.57 94.45 - vstem 394.23 228.69 + hstem 0 46.2445 + hstem 622.9805 46.2785 + hstem 734.136 -20 + hstem 804.408 58.345 + vstem 394.234 228.684 pointTag - hintSet0003 + hintRef0001 stems - hstem 0 46.24 - hstem 622.98 46.28 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 270.57 94.45 + hstem 0 46.2495 + hstem 623.9715 45.2875 + hstem 734.136 -20 + hstem 804.408 58.345 + vstem 270.568 94.452 pointTag - hintSet0007 + hintRef0002 stems - hstem 0 46.25 - hstem 623.98 45.28 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 270.57 94.45 + hstem 0 46.2445 + hstem 622.9805 46.2785 + hstem 734.136 -20 + hstem 804.408 58.345 + vstem 270.568 94.452 pointTag - hintSet0012 + hintRef0003 stems - hstem 0 46.24 - hstem 622.98 46.28 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 270.57 94.45 + hstem 0 46.2445 + hstem 622.9805 46.2785 + hstem 734.136 -20 + hstem 804.408 58.345 + vstem 394.234 228.684 pointTag - hintSet0017 + hintRef0004 stems - hstem 0 46.24 - hstem 628.48 40.78 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 270.57 94.45 - vstem 394.23 228.69 + hstem 0 46.2445 + hstem 622.9805 46.2785 + hstem 722.807 58.345 + vstem 394.234 228.684 pointTag - hintSet0019 + hintRef0005 stems - hstem 0 46.24 - hstem 622.98 46.28 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 270.57 94.45 - vstem 394.23 228.69 - - - - pointTag - hintSet0025 - stems - - hstem 0 46.24 - hstem 622.98 46.28 - hstem 722.81 58.34 - hstem 804.41 58.34 - vstem 270.57 94.45 - - - - pointTag - hintSet0030 - stems - - hstem 0 46.24 - hstem 622.98 46.28 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 270.57 94.45 - - - - pointTag - hintSet0031 - stems - - hstem 0 46.24 - hstem 622.98 46.28 - hstem 734.14 -20 - hstem 804.41 58.34 - vstem 270.57 94.45 - vstem 394.23 228.69 + hstem 0 46.2445 + hstem 622.9805 46.2785 + hstem 734.136 -20 + hstem 804.408 58.345 + vstem 270.568 94.452 id - 145cbaa8e18a7eaa9e30eca3e670aedec7c8eb7970709ae699013cb0d4fffc88c7ad5de190225169c58fb225be3961c78cb1fbdec53c194dfd7928e1bfe28b95 + abb5779527ce18ab2ba4c841d930697bf5b8590e504aff1dab4ba97a71ddb710ae1ddbff3ef47765c873a7455af543c730f00833a1f782b1da4589ae13c1ad31 diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/a.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/a.glif index 514bb2a8d..4ab661750 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/a.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/a.glif @@ -4,67 +4,67 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -75,40 +75,28 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem -13.12 65.89 - hstem 442.29 45.37 - vstem 45.14 88.58 - vstem 323.6 84.28 + hstem -13.123 65.905 + hstem 442.288 45.37 + vstem 45.136 88.579 + vstem 323.601 84.279 pointTag - hintSet0009 + hintRef0001 stems - hstem -10.25 52.16 - hstem 442.29 45.37 - vstem 45.14 88.58 - vstem 323.6 84.28 - - - - pointTag - hintSet0024 - stems - - hstem -13.12 65.89 - hstem 442.29 45.37 - vstem 45.14 88.58 - vstem 323.6 84.28 + hstem -10.247 52.152 + hstem 442.288 45.37 + vstem 323.601 84.279 id - 91c2f00b245fffd5e37c771304e339f676078a7067774a4c42c4dd6d82c02bc00be42ec3943ba9cf0701cdf79dabea3b3951f6f1d0001dea6a7b5c19e19cea9c + b887238eb3e2fd8619587c8825231aab35000b9f92c4448d89cbef18073d8722ce656a83bad5f1b78f2ec8aca036c97d08fdccd418ce2daeb6da88b221963706 diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif index bb179c4be..a57c12061 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif @@ -4,85 +4,85 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -93,40 +93,28 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem -13.12 65.89 - hstem 442.29 45.37 - vstem 45.14 88.58 - vstem 323.6 84.28 + hstem -13.123 65.905 + hstem 442.288 45.37 + vstem 45.136 88.579 + vstem 323.601 84.279 pointTag - hintSet0016 + hintRef0001 stems - hstem -10.25 52.16 - hstem 442.29 45.37 - vstem 45.14 88.58 - vstem 323.6 84.28 - - - - pointTag - hintSet0031 - stems - - hstem -13.12 65.89 - hstem 442.29 45.37 - vstem 45.14 88.58 - vstem 323.6 84.28 + hstem -10.247 52.152 + hstem 442.288 45.37 + vstem 323.601 84.279 id - 65be6738ecdb7a8253cdf45b2d7ad05593d546d76c317ca1a00c7055aec0b946e368aee94bdaac1f91e41ee83def221f74c2d79d6387c87110476427b06302eb + b5f3a7606bd34fa1f1980da9f3cee4e63ccb50ac53a10d971b82f0b53b418930945bbec9fb1bfcb1d7afebd087e0e74feace244d04ea871edd869e4be1b1f034 diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif index a0850df01..379ef5bf2 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif @@ -3,22 +3,22 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -29,16 +29,16 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem 745.3 -20 - vstem -67 194 + hstem 745.3006 -20 + vstem -67.3576 194.7152 id - 94e23d802b136bf9f30e6340aeab47dbaf8d99057c03096578d7998a7e7449c8392be7f53aeb206e6f4e0f594909edfb4a02a22167641962f44cf889f59f82d6 + 0f5c9d8282699b65ec41c50ccb23eac2a9f09c1dad765bf0fe19402aa4c6b3bfd3a21370bf2fd873e015031f0c66940147bc4aec6b0af9e1b3e2329545b37f7b diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif index b20140e7d..df1a78700 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif @@ -4,22 +4,22 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -30,16 +30,16 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem 557 201 - vstem -59 181 + hstem 556.7943 201.3165 + vstem -58.8639 180.8513 id - 3dcc06e623cb83e146836ae5806c65b596344b19e08901555ad407bedba44d46c1eb940a2ea640b9f8b88d01a514381a2c319a94ae198c8908f94b9af2904bfb + 744e2d6087aaf4cdc98e48630b97a1e0f096d2f9f1c177c6ff7c5d355023c129207c5c6f4f1639c2fcde430a90b50bba2ea6a477db6fe5bb07a7118d3eef4c7f diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif index aec01941e..3f5b1ca74 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif @@ -4,95 +4,95 @@ - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -103,91 +103,40 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem -13.12 65.89 - hstem 442.29 45.37 - hstem 595.77 113.89 - vstem 85.89 119.1 - vstem 323.6 84.28 + hstem -13.123 65.905 + hstem 442.288 45.37 + hstem 595.766 113.892 + vstem 85.889 119.098 + vstem 294.741 119.098 pointTag - hintSet0005 + hintRef0001 stems - hstem -13.12 65.89 - hstem 442.29 45.37 - hstem 595.77 113.89 - vstem 45.14 88.58 - vstem 294.74 119.1 + hstem -13.123 65.905 + hstem 442.288 45.37 + vstem 45.136 88.579 + vstem 323.601 84.279 pointTag - hintSet0012 + hintRef0002 stems - hstem -13.12 65.89 - hstem 442.29 45.37 - hstem 595.77 113.89 - vstem 45.14 88.58 - vstem 323.6 84.28 - - - - pointTag - hintSet0015 - stems - - hstem -13.12 65.89 - hstem 442.29 45.37 - hstem 595.77 113.89 - vstem 45.14 88.58 - vstem 294.74 119.1 - - - - pointTag - hintSet0018 - stems - - hstem -13.12 65.89 - hstem 442.29 45.37 - hstem 595.77 113.89 - vstem 85.89 119.1 - vstem 323.6 84.28 - - - - pointTag - hintSet0019 - stems - - hstem -10.25 52.16 - hstem 442.29 45.37 - hstem 595.77 113.89 - vstem 85.89 119.1 - vstem 323.6 84.28 - - - - pointTag - hintSet0034 - stems - - hstem -13.12 65.89 - hstem 442.29 45.37 - hstem 595.77 113.89 - vstem 45.14 88.58 - vstem 294.74 119.1 + hstem -10.247 52.152 + hstem 442.288 45.37 + vstem 323.601 84.279 id - 8b46e158a799fe762633ff3debd5ff80b3a135fdf0c942421316848cb46cca413d0483723e03d7e4c60774680db97e2e2794719574092d45e7f7b3a108e1f86c + 8f498002311fb435904c3dfe0aa516b80ce141156ea9381f5dfa2423e0af0ec92446e867818979034cd64d176d89135c2242ccdac049dc47c78dbfea8b2febf9 diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif index f5b3fa9ab..f75643932 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif @@ -4,95 +4,95 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -103,77 +103,53 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem -13.12 65.89 - hstem 442.29 45.37 - hstem 574.79 58.35 - hstem 656.4 58.34 - vstem 323.6 84.28 + hstem -13.123 65.905 + hstem 442.288 45.37 + hstem 656.396 58.345 + vstem 323.601 84.279 pointTag - hintSet0004 + hintRef0001 stems - hstem -13.12 65.89 - hstem 442.29 45.37 - hstem 574.79 58.35 - vstem 323.6 84.28 + hstem -13.123 65.905 + hstem 442.288 45.37 + hstem 574.794 58.345 + vstem 45.136 88.579 + vstem 323.601 84.279 pointTag - hintSet0009 + hintRef0002 stems - hstem -13.12 65.89 - hstem 442.29 45.37 - hstem 574.79 58.35 - hstem 656.4 58.34 - vstem 323.6 84.28 + hstem -13.123 65.905 + hstem 442.288 45.37 + hstem 656.396 58.345 + vstem 45.136 88.579 + vstem 323.601 84.279 pointTag - hintSet0011 + hintRef0003 stems - hstem -13.12 65.89 - hstem 442.29 45.37 - hstem 574.79 58.35 - vstem 45.14 88.58 - vstem 323.6 84.28 - - - - pointTag - hintSet0020 - stems - - hstem -10.25 52.16 - hstem 442.29 45.37 - hstem 574.79 58.35 - vstem 323.6 84.28 - - - - pointTag - hintSet0035 - stems - - hstem -13.12 65.89 - hstem 442.29 45.37 - hstem 574.79 58.35 - vstem 45.14 88.58 - vstem 323.6 84.28 + hstem -10.247 52.152 + hstem 442.288 45.37 + hstem 574.794 58.345 + vstem 323.601 84.279 id - 5fd8777229a4c54f717549a275f8eae562e298f503cceba0f8a318df8d570b370544f8bb0a5c2e8802f5f0219264f64827c99f6704affa5ae457a67d9e83c48c + 50aea472cea2faf14a98b2293a3a0300067b8b311efeaf03252030aba6c493c6b0167667db89f3db2f159fb33260c55208dfb73227be22010f058a71b9df76bb diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif index cbbcbce9d..9eabb0863 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif @@ -3,32 +3,32 @@ - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + @@ -39,17 +39,17 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem 744.11 109.73 - vstem -169.73 114.94 - vstem 53.84 114.93 + hstem 744.1076 109.7278 + vstem -169.7278 114.9335 + vstem 53.8354 114.9335 id - e515945e06395806a2d2a35c470bb7d3d04f32390e1587a8ac4e3d212d89bdf6ddbcb8d762733abefb5295ffccfb7200ef224d333e2dedc4843333b4d4e8f7fc + d8c631ce034b73a9a93c3249bd0b0ba537a11cf6ae251a76b7f4f66376cd04372ff0e2c6d4f18758f312d87b29d897a8c1cda2d4edc6f53b217827a925a04a74 diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif index b2939a11d..9d4f7cdcc 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif @@ -5,32 +5,32 @@ - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + @@ -41,17 +41,17 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem 595.77 113.89 - vstem -163.97 119.09 - vstem 44.88 119.09 + hstem 595.7658 113.8924 + vstem -163.9747 119.0981 + vstem 44.8766 119.0981 id - 8348b2699028dce324cf8d53e6ee5e07b273000662f6c97e156701e6a4ed992e46555d8536a5f1a2e63abfc0c546aaa6f3795e7f87cc0197c0a1e155bf024983 + 3c0723c734feee053cef6d7e46d5a28ce8d39ed056d6a9705a3a9f2445084fdd9fee517a926513b1d348696f9e89d2334f12ee60f7ffcb22cb7b1e243ecbfdcb diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif index 21037c309..e223b65b5 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif @@ -3,32 +3,32 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -39,37 +39,36 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem 734.14 -20 - hstem 804.41 58.34 - vstem -180 360 + hstem 734.1361 -20 + hstem 804.4082 58.3449 + vstem -180.0823 360.2057 pointTag - hintSet0004 + hintRef0001 stems - hstem 722.81 58.34 - hstem 804.41 58.34 - vstem -180 360 + hstem 722.807 58.3449 + vstem -180.0823 360.2057 pointTag - hintSet0009 + hintRef0002 stems - hstem 734.14 -20 - hstem 804.41 58.34 - vstem -180 360 + hstem 734.1361 -20 + hstem 804.4082 58.3449 + vstem -180.0823 360.2057 id - ad38104a7c257a571b25ab4846a8017528dbcb42d3a63f5f567c4ac2d47b460e62f2d24bfefeabdbf9985153f675398baf9eb425ae871b1613800ef546d7abb4 + b34cfff9a9d2ce2ae071b9a36d182694b3efc6ecc6c2863b76aadbb57ecff206a3388b4f8fbff28cfbf3a18d0e539c89a957e620f727dd7ee27ef42b5fd7eda7 diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif index 17a8d25b7..e2c1bc9fa 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif @@ -4,32 +4,32 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -40,36 +40,34 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem 574.79 58.35 - hstem 656.4 58.34 - vstem -163 326 + hstem 656.3956 58.3449 + vstem -162.8639 325.7278 pointTag - hintSet0004 + hintRef0001 stems - hstem 574.79 58.35 - vstem -163 326 + hstem 574.7943 58.3449 + vstem -162.8639 325.7278 pointTag - hintSet0009 + hintRef0002 stems - hstem 574.79 58.35 - hstem 656.4 58.34 - vstem -163 326 + hstem 656.3956 58.3449 + vstem -162.8639 325.7278 id - 1d53b76ff5e3df2c0909cb4c22fbc620afd82c180596e80d072a310fd38f6e53880308b0dad8be5818ee542d2bc3ca1c24d299687934d4c7b393f337d6ed6484 + 2bc9c54e871cde86cb690cf59dd90a4a4abca040a26b74baa4050e8b967ab689688760626fb1f5df54fb9dcae30d431e5e9fcf959783e90294438bad389c9126 diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/y.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/y.glif index 86572928e..a021a27a6 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/y.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/y.glif @@ -4,37 +4,37 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -45,77 +45,36 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 0 512 + hstem -249.259 109.81 + hstem 432.834 41.701 + vstem 0.041 512.07 pointTag - hintSet0002 + hintRef0001 stems - hstem -249.26 109.81 - hstem 439.04 35.5 - vstem 316.52 195.59 + hstem 432.834 41.701 + vstem 316.522 195.589 pointTag - hintSet0004 + hintRef0002 stems - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 316.52 195.59 - - - - pointTag - hintSet0006 - stems - - hstem -249.26 109.81 - hstem 439.04 35.5 - vstem 316.52 195.59 - - - - pointTag - hintSet0009 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 0 512 - - - - pointTag - hintSet0013 - stems - - hstem -249.26 109.81 - hstem 434.82 39.72 - vstem 0 512 - - - - pointTag - hintSet0021 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 0 512 + hstem -249.259 109.81 + hstem 434.819 39.716 + vstem 0.041 512.07 id - 8b72155e00d7be99bbfc8a89e73654f7d9f64886da28f7dff78841e4fad9bc5e60e89bdfc0d80516977ef3665cfa331e00d25450697744a755016b468ad4a8ba + 02d11302bce454ce957385e0d0265de92382b368cbdd9bd15c2002c91c6c3fc470c2c5dc7b27d45e320bcd019c84db0976f7ed0df3e4df732c09e31cfa3adf6d diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif index 39465d4c3..fa18a5d98 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif @@ -4,55 +4,55 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -63,77 +63,36 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 0 512 + hstem -249.259 109.81 + hstem 432.834 41.701 + vstem 0.041 512.07 pointTag - hintSet0002 + hintRef0001 stems - hstem -249.26 109.81 - hstem 439.04 35.5 - vstem 316.52 195.59 + hstem 432.834 41.701 + vstem 316.522 195.589 pointTag - hintSet0004 + hintRef0002 stems - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 316.52 195.59 - - - - pointTag - hintSet0006 - stems - - hstem -249.26 109.81 - hstem 439.04 35.5 - vstem 316.52 195.59 - - - - pointTag - hintSet0009 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 0 512 - - - - pointTag - hintSet0013 - stems - - hstem -249.26 109.81 - hstem 434.82 39.72 - vstem 0 512 - - - - pointTag - hintSet0021 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 0 512 + hstem -249.259 109.81 + hstem 434.819 39.716 + vstem 0.041 512.07 id - 897ee0f4ac094776107aab40bf79dcba90fa378759721509c3d0662660fe18bd9da81c1d2c36f137157ac2bbdfede46c10b62f71d734ed521b7bcc8f6aefac52 + 7c014929e081615d89976fb1a3d8d47a63758b8c65baf28ff6621f4b58c8d5841f02916f6e2fbc26d07ada4854151d81bdf782e1cd31baa5e294dedf41be32ab diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif index 21d9b7247..7be67d402 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif @@ -4,65 +4,65 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - + @@ -73,96 +73,30 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 119.96 119.1 - vstem 328.81 119.1 + hstem -249.259 109.81 + hstem 432.834 41.701 + vstem 119.959 119.098 + vstem 316.522 195.589 pointTag - hintSet0002 + hintRef0001 stems - hstem -249.26 109.81 - hstem 439.04 35.5 - vstem 119.96 119.1 - vstem 316.52 195.59 - - - - pointTag - hintSet0004 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 119.96 119.1 - vstem 316.52 195.59 - - - - pointTag - hintSet0006 - stems - - hstem -249.26 109.81 - hstem 439.04 35.5 - vstem 119.96 119.1 - vstem 316.52 195.59 - - - - pointTag - hintSet0009 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 119.96 119.1 - vstem 328.81 119.1 - - - - pointTag - hintSet0013 - stems - - hstem -249.26 109.81 - hstem 434.82 39.72 - vstem 119.96 119.1 - vstem 328.81 119.1 - - - - pointTag - hintSet0021 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - vstem 119.96 119.1 - vstem 328.81 119.1 - - - - pointTag - hintSet0022 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - hstem 595.77 113.89 - vstem 119.96 119.1 - vstem 328.81 119.1 + hstem -249.259 109.81 + hstem 434.819 39.716 + hstem 595.766 113.892 + vstem 119.959 119.098 + vstem 328.81 119.098 id - a3a5a7b549beb7ee405863365f3da14b412e3d5c6a69e1074733498e82826ca2f629ae9cd25cefb7df136e02bb43c0a9716aac7a4375f4a07dc28c40300dcb93 + c58af4e399627f9fae095f2c32b5ab2ea1e931090ed5fbce0894b77c211da06c861b394840dc9da360e58e34335463376ad3b353f6cea357bc914b08fe58a2f1 diff --git a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif index c1b999ffa..ada1cff63 100644 --- a/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif +++ b/tests/makeinstancesufo_data/expected_output/regular1.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif @@ -4,65 +4,65 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -73,119 +73,57 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem -249.26 109.81 - hstem 432.84 41.7 - hstem 574.79 58.35 - vstem 0 512 + hstem -249.259 109.81 + hstem 432.834 41.701 + vstem 0.041 512.07 pointTag - hintSet0002 + hintRef0001 stems - hstem -249.26 109.81 - hstem 439.04 35.5 - hstem 574.79 58.35 - vstem 316.52 195.59 + hstem 432.834 41.701 + vstem 316.522 195.589 pointTag - hintSet0004 + hintRef0002 stems - hstem -249.26 109.81 - hstem 432.84 41.7 - hstem 574.79 58.35 - vstem 316.52 195.59 + hstem -249.259 109.81 + hstem 434.819 39.716 + hstem 656.396 58.345 + vstem 0.041 512.07 pointTag - hintSet0006 + hintRef0003 stems - hstem -249.26 109.81 - hstem 439.04 35.5 - hstem 574.79 58.35 - vstem 316.52 195.59 + hstem 432.834 41.701 + hstem 574.794 58.345 + vstem 0.041 512.07 pointTag - hintSet0009 + hintRef0004 stems - hstem -249.26 109.81 - hstem 432.84 41.7 - hstem 574.79 58.35 - vstem 0 512 - - - - pointTag - hintSet0013 - stems - - hstem -249.26 109.81 - hstem 434.82 39.72 - hstem 574.79 58.35 - vstem 0 512 - - - - pointTag - hintSet0021 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - hstem 574.79 58.35 - vstem 0 512 - - - - pointTag - hintSet0022 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - hstem 574.79 58.35 - hstem 656.4 58.34 - vstem 0 512 - - - - pointTag - hintSet0026 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - hstem 574.79 58.35 - vstem 0 512 - - - - pointTag - hintSet0031 - stems - - hstem -249.26 109.81 - hstem 432.84 41.7 - hstem 574.79 58.35 - hstem 656.4 58.34 - vstem 0 512 + hstem 432.834 41.701 + hstem 656.396 58.345 + vstem 0.041 512.07 id - 82983743a88b9de8b641aa8062088646336d7dc82cec5a4623d23ea935d5baf18636dcc70bab7a613d755e2011036522817385c101c787e3aba618a845e747e4 + e27caf0628093b3b64a740c2a2589e6a83a38532d83284268cdddf5e581892d0a48feffb04ef4220931fbd0f551511a3e627fc372475481f06cfbfc0b03dccf6 diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/fontinfo.plist b/tests/makeinstancesufo_data/expected_output/semibold.ufo/fontinfo.plist index bd07e008b..8adb39808 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/fontinfo.plist +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/fontinfo.plist @@ -82,7 +82,7 @@ openTypeOS2WinDescent 335 postscriptBlueFuzz - 2 + 1 postscriptBlueScale 0.048513 postscriptBlueValues diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif index a00fb47b6..f8791f206 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif @@ -4,15 +4,15 @@ - - - - + + + + - + - + @@ -29,7 +29,7 @@ - + @@ -47,7 +47,18 @@ pointTag - hintSet0000 + hintRef0000 + stems + + hstem 0 61 + hstem 205 52 + hstem 667 -20 + vstem 7 222 + + + + pointTag + hintRef0001 stems hstem 0 61 @@ -58,7 +69,7 @@ pointTag - hintSet0001 + hintRef0002 stems hstem 0 61 @@ -69,7 +80,7 @@ pointTag - hintSet0002 + hintRef0003 stems hstem 0 62 @@ -80,15 +91,26 @@ pointTag - hintSet0005 + hintRef0004 stems hstem 0 61 hstem 205 52 - hstem 667 -20 + hstem 593 74 vstem 7 222 + + pointTag + hintRef0005 + stems + + hstem 0 61 + hstem 205 52 + hstem 667 -20 + vstem 7 650 + + id 752b730ee00bccab449b85bec60262ce5ed1c7333666759123d05ec49d9b9cb72379cccd26dc76883c734fefc87a5d094d4bc55c08a227db8752c8b33f024a66 diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif index f77bc165b..de0dc8e40 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif @@ -4,15 +4,15 @@ - - - - + + + + - + - + @@ -29,7 +29,7 @@ - + @@ -62,7 +62,19 @@ pointTag - hintSet0000 + hintRef0000 + stems + + hstem 0 61 + hstem 205 52 + hstem 667 -20 + hstem 740 -20 + vstem 7 222 + + + + pointTag + hintRef0001 stems hstem 0 61 @@ -74,7 +86,7 @@ pointTag - hintSet0001 + hintRef0002 stems hstem 0 61 @@ -86,7 +98,7 @@ pointTag - hintSet0002 + hintRef0003 stems hstem 0 62 @@ -98,16 +110,28 @@ pointTag - hintSet0005 + hintRef0004 stems hstem 0 61 hstem 205 52 - hstem 667 -20 + hstem 593 74 hstem 740 -20 vstem 7 222 + + pointTag + hintRef0005 + stems + + hstem 0 61 + hstem 205 52 + hstem 667 -20 + hstem 740 -20 + vstem 7 650 + + id 13fa84f432b3245bb6196ff150652b3cd5c783afeae11b3b4e3b398d8a756080903271cf02cc950cf75cbd4a912e0c4e89b199728f07316deb56c91c397804f3 diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif index a5ec2d236..c284825a3 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif @@ -4,15 +4,15 @@ - - - - + + + + - + - + @@ -36,8 +36,8 @@ - - + + @@ -72,20 +72,7 @@ pointTag - hintSet0000 - stems - - hstem 0 61 - hstem 205 52 - hstem 667 -20 - hstem 729 124 - vstem 154 130 - vstem 390 130 - - - - pointTag - hintSet0001 + hintRef0000 stems hstem 0 61 @@ -94,7 +81,7 @@ pointTag - hintSet0002 + hintRef0001 stems hstem 0 62 @@ -103,18 +90,18 @@ pointTag - hintSet0005 + hintRef0002 stems hstem 0 61 hstem 205 52 - hstem 667 -20 + hstem 593 74 vstem 7 222 pointTag - hintSet0024 + hintRef0003 stems hstem 729 124 diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif index e4803cb28..f3669cec8 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif @@ -4,15 +4,15 @@ - - - - + + + + - + - + @@ -29,7 +29,7 @@ - + @@ -44,7 +44,7 @@ - + @@ -57,10 +57,10 @@ - + - + @@ -72,7 +72,20 @@ pointTag - hintSet0000 + hintRef0000 + stems + + hstem 0 61 + hstem 205 52 + hstem 667 -20 + hstem 727 -20 + hstem 784 77 + vstem 7 222 + + + + pointTag + hintRef0001 stems hstem 0 61 @@ -85,7 +98,7 @@ pointTag - hintSet0001 + hintRef0002 stems hstem 0 61 @@ -98,7 +111,7 @@ pointTag - hintSet0002 + hintRef0003 stems hstem 0 62 @@ -111,12 +124,12 @@ pointTag - hintSet0005 + hintRef0004 stems hstem 0 61 hstem 205 52 - hstem 667 -20 + hstem 593 74 hstem 727 -20 hstem 784 77 vstem 7 222 @@ -124,32 +137,32 @@ pointTag - hintSet0028 + hintRef0005 stems hstem 0 61 hstem 205 52 hstem 667 -20 - hstem 713 77 + hstem 727 -20 + hstem 784 77 vstem 7 650 pointTag - hintSet0033 + hintRef0006 stems hstem 0 61 hstem 205 52 hstem 667 -20 - hstem 727 -20 - hstem 784 77 + hstem 713 77 vstem 7 650 pointTag - hintSet0034 + hintRef0007 stems hstem 0 61 @@ -157,7 +170,7 @@ hstem 667 -20 hstem 727 -20 hstem 784 77 - vstem 7 222 + vstem 7 650 diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif index 11d7cdac2..eb4a64fdc 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif @@ -4,7 +4,7 @@ - + @@ -14,23 +14,23 @@ - - + + - + - - - + + + - - + + - + - + @@ -38,14 +38,14 @@ - + - + - + @@ -58,111 +58,18 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 0 62 hstem 292 13 hstem 601 62 - vstem 251 130 - - - - pointTag - hintSet0008 - stems - - hstem 0 62 - hstem 292 13 - hstem 616 47 - vstem 251 130 - - - - pointTag - hintSet0009 - stems - - hstem 0 62 - hstem 292 13 - hstem 601 62 - vstem 251 130 - - - - pointTag - hintSet0011 - stems - - hstem 0 62 - hstem 292 13 - hstem 616 47 - vstem 251 130 - - - - pointTag - hintSet0012 - stems - - hstem 0 62 - hstem 292 13 - hstem 601 62 - vstem 251 130 - vstem 404 218 - - - - pointTag - hintSet0013 - stems - - hstem 0 62 - hstem 292 13 - hstem 616 47 - vstem 251 130 - vstem 404 218 - - - - pointTag - hintSet0014 - stems - - hstem 0 62 - hstem 292 13 - hstem 601 62 - vstem 251 130 - vstem 404 218 - - - - pointTag - hintSet0016 - stems - - hstem 0 62 - hstem 292 13 - hstem 616 47 - vstem 251 130 - vstem 404 218 - - - - pointTag - hintSet0017 - stems - - hstem 0 62 - hstem 292 13 - hstem 601 62 - vstem 251 130 vstem 404 218 pointTag - hintSet0018 + hintRef0001 stems hstem 0 62 @@ -173,7 +80,7 @@ pointTag - hintSet0023 + hintRef0002 stems hstem 0 62 @@ -184,7 +91,7 @@ pointTag - hintSet0026 + hintRef0003 stems hstem 0 62 @@ -195,7 +102,7 @@ pointTag - hintSet0030 + hintRef0004 stems hstem 0 62 diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif index 53ed24f34..2ff53ffcd 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif @@ -4,7 +4,7 @@ - + @@ -14,23 +14,23 @@ - - + + - + - - - + + + - - + + - + - + @@ -38,14 +38,14 @@ - + - + - + @@ -74,101 +74,26 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 0 62 - hstem 292 13 - hstem 601 62 - hstem 734 -20 - vstem 251 130 - - - - pointTag - hintSet0008 - stems - - hstem 616 47 - vstem 251 130 - - - - pointTag - hintSet0009 - stems - - hstem 601 62 - vstem 251 130 - - - - pointTag - hintSet0011 - stems - - hstem 616 47 - vstem 251 130 - - - - pointTag - hintSet0012 - stems - hstem 601 62 vstem 404 218 pointTag - hintSet0013 + hintRef0001 stems - hstem 616 47 - vstem 404 218 - - - - pointTag - hintSet0014 - stems - - hstem 601 62 - vstem 404 218 - - - - pointTag - hintSet0016 - stems - - hstem 616 47 - vstem 404 218 - - - - pointTag - hintSet0017 - stems - - hstem 601 62 - vstem 404 218 - - - - pointTag - hintSet0018 - stems - - hstem 0 62 hstem 292 13 vstem 251 130 pointTag - hintSet0023 + hintRef0002 stems hstem 220 85 @@ -178,7 +103,7 @@ pointTag - hintSet0026 + hintRef0003 stems hstem 292 13 @@ -188,11 +113,10 @@ pointTag - hintSet0030 + hintRef0004 stems hstem 220 85 - hstem 734 -20 vstem 251 130 diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif index 43282cfd1..600954573 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif @@ -4,7 +4,7 @@ - + @@ -14,23 +14,23 @@ - - + + - + - - - + + + - - + + - + - + @@ -38,18 +38,18 @@ - + - + - + - - + + @@ -84,100 +84,26 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 0 62 - hstem 292 13 - hstem 601 62 - vstem 251 130 - - - - pointTag - hintSet0008 - stems - - hstem 616 47 - vstem 251 130 - - - - pointTag - hintSet0009 - stems - - hstem 601 62 - vstem 251 130 - - - - pointTag - hintSet0011 - stems - - hstem 616 47 - vstem 251 130 - - - - pointTag - hintSet0012 - stems - hstem 601 62 vstem 404 218 pointTag - hintSet0013 + hintRef0001 stems - hstem 616 47 - vstem 404 218 - - - - pointTag - hintSet0014 - stems - - hstem 601 62 - vstem 404 218 - - - - pointTag - hintSet0016 - stems - - hstem 616 47 - vstem 404 218 - - - - pointTag - hintSet0017 - stems - - hstem 601 62 - vstem 404 218 - - - - pointTag - hintSet0018 - stems - - hstem 0 62 hstem 292 13 vstem 251 130 pointTag - hintSet0023 + hintRef0002 stems hstem 220 85 @@ -187,7 +113,7 @@ pointTag - hintSet0026 + hintRef0003 stems hstem 292 13 @@ -197,7 +123,7 @@ pointTag - hintSet0030 + hintRef0004 stems hstem 220 85 @@ -206,7 +132,7 @@ pointTag - hintSet0031 + hintRef0005 stems hstem 729 124 diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif index eec603cff..872e5eb11 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif @@ -4,7 +4,7 @@ - + @@ -14,23 +14,23 @@ - - + + - + - - - + + + - - + + - + - + @@ -38,14 +38,14 @@ - + - + - + @@ -56,7 +56,7 @@ - + @@ -69,10 +69,10 @@ - + - + @@ -84,102 +84,26 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 0 62 - hstem 292 13 - hstem 601 62 - hstem 727 -20 - hstem 784 77 - vstem 251 130 - - - - pointTag - hintSet0008 - stems - - hstem 616 47 - vstem 251 130 - - - - pointTag - hintSet0009 - stems - - hstem 601 62 - vstem 251 130 - - - - pointTag - hintSet0011 - stems - - hstem 616 47 - vstem 251 130 - - - - pointTag - hintSet0012 - stems - - hstem 601 62 - vstem 404 218 - - - - pointTag - hintSet0013 - stems - - hstem 616 47 - vstem 404 218 - - - - pointTag - hintSet0014 - stems - - hstem 601 62 - vstem 404 218 - - - - pointTag - hintSet0016 - stems - - hstem 616 47 - vstem 404 218 - - - - pointTag - hintSet0017 - stems - hstem 601 62 vstem 404 218 pointTag - hintSet0018 + hintRef0001 stems - hstem 0 62 hstem 292 13 vstem 251 130 pointTag - hintSet0023 + hintRef0002 stems hstem 220 85 @@ -189,7 +113,7 @@ pointTag - hintSet0026 + hintRef0003 stems hstem 292 13 @@ -199,18 +123,17 @@ pointTag - hintSet0030 + hintRef0004 stems hstem 220 85 - hstem 727 -20 hstem 784 77 vstem 251 130 pointTag - hintSet0035 + hintRef0005 stems hstem 713 77 @@ -219,24 +142,13 @@ pointTag - hintSet0040 + hintRef0006 stems hstem 784 77 vstem 251 130 - - pointTag - hintSet0041 - stems - - hstem 220 85 - hstem 727 -20 - hstem 784 77 - vstem 251 130 - - id 014b6de6ad518de9eaca394847c659fbc4d0caac08c2944221c230130159fca03455bc2091d5d8a51e8fb0e768018cb3f05ce29430bf680be2bf074451a371af diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/a.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/a.glif index a7aebdaa4..96e7cd14f 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/a.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/a.glif @@ -4,7 +4,7 @@ - + @@ -23,19 +23,19 @@ - + - + - - + + @@ -82,18 +82,7 @@ pointTag - hintSet0000 - stems - - hstem -14 73 - hstem 445 48 - vstem 38 117 - vstem 313 118 - - - - pointTag - hintSet0009 + hintRef0000 stems hstem -14 73 @@ -104,23 +93,11 @@ pointTag - hintSet0012 - stems - - hstem -14 73 - hstem 445 48 - vstem 38 117 - vstem 313 118 - - - - pointTag - hintSet0013 + hintRef0001 stems hstem -12 61 hstem 445 48 - vstem 38 117 vstem 313 118 diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif index 91e70ebf2..f0344502e 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif @@ -4,7 +4,7 @@ - + @@ -23,19 +23,19 @@ - + - + - - + + @@ -97,18 +97,7 @@ pointTag - hintSet0000 - stems - - hstem -14 73 - hstem 445 48 - vstem 38 117 - vstem 313 118 - - - - pointTag - hintSet0009 + hintRef0000 stems hstem -14 73 @@ -119,23 +108,11 @@ pointTag - hintSet0012 - stems - - hstem -14 73 - hstem 445 48 - vstem 38 117 - vstem 313 118 - - - - pointTag - hintSet0013 + hintRef0001 stems hstem -12 61 hstem 445 48 - vstem 38 117 vstem 313 118 diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif index 563aeec54..decf14fa4 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif @@ -2,7 +2,7 @@ - + @@ -29,7 +29,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 740 -20 diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif index 9007a6009..6baa9d82d 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif @@ -3,7 +3,7 @@ - + @@ -30,7 +30,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 555 212 diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif index a38274676..83fd3a3d7 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif @@ -4,7 +4,7 @@ - + @@ -23,19 +23,19 @@ - + - + - - + + @@ -71,8 +71,8 @@ - - + + @@ -107,19 +107,7 @@ pointTag - hintSet0000 - stems - - hstem -14 73 - hstem 445 48 - hstem 586 129 - vstem 38 117 - vstem 313 118 - - - - pointTag - hintSet0009 + hintRef0000 stems hstem -14 73 @@ -131,31 +119,18 @@ pointTag - hintSet0012 - stems - - hstem -14 73 - hstem 445 48 - hstem 586 129 - vstem 38 117 - vstem 313 118 - - - - pointTag - hintSet0013 + hintRef0001 stems hstem -12 61 hstem 445 48 hstem 586 129 - vstem 38 117 vstem 313 118 pointTag - hintSet0029 + hintRef0002 stems hstem -14 73 diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif index 0d3e45bbb..dea5290ff 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif @@ -4,7 +4,7 @@ - + @@ -23,19 +23,19 @@ - + - + - - + + @@ -79,7 +79,7 @@ - + @@ -92,10 +92,10 @@ - + - + @@ -107,67 +107,41 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -14 73 hstem 445 48 - hstem 644 77 - vstem 38 117 - vstem 313 118 - - - - pointTag - hintSet0009 - stems - - hstem -14 73 - hstem 445 48 - hstem 644 77 + hstem 573 77 vstem 38 117 vstem 313 62 pointTag - hintSet0012 - stems - - hstem -14 73 - hstem 445 48 - hstem 644 77 - vstem 38 117 - vstem 313 118 - - - - pointTag - hintSet0013 + hintRef0001 stems hstem -12 61 hstem 445 48 hstem 644 77 - vstem 38 117 vstem 313 118 pointTag - hintSet0033 + hintRef0002 stems hstem -14 73 hstem 445 48 hstem 573 77 - vstem 38 117 vstem 313 118 pointTag - hintSet0038 + hintRef0003 stems hstem -14 73 @@ -177,18 +151,6 @@ vstem 313 118 - - pointTag - hintSet0039 - stems - - hstem -12 61 - hstem 445 48 - hstem 644 77 - vstem 38 117 - vstem 313 118 - - id 771723cd247475c85116175b922e209f51039db98dfad6bbb154f5d60d5e0f84a7c22a785135f667dca16f9840b18fb0f3861161d9394e669862251914b34a36 diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif index 7e91aed25..cbc6c34df 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif @@ -2,7 +2,7 @@ - + @@ -39,7 +39,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 729 124 diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif index 83270b3e8..3fd48c2ed 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif @@ -3,7 +3,7 @@ - + @@ -41,7 +41,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 586 129 diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif index 52e3e1ff1..a77ecbbbf 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif @@ -2,7 +2,7 @@ - + @@ -10,7 +10,7 @@ - + @@ -23,7 +23,7 @@ - + @@ -39,7 +39,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 727 -20 @@ -49,7 +49,7 @@ pointTag - hintSet0004 + hintRef0001 stems hstem 713 77 @@ -58,7 +58,7 @@ pointTag - hintSet0009 + hintRef0002 stems hstem 727 -20 diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif index a5ea9a85a..5dd0c6b5f 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif @@ -3,7 +3,7 @@ - + @@ -11,7 +11,7 @@ - + @@ -24,7 +24,7 @@ - + @@ -40,7 +40,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 644 77 @@ -49,7 +49,7 @@ pointTag - hintSet0004 + hintRef0001 stems hstem 573 77 @@ -58,7 +58,7 @@ pointTag - hintSet0009 + hintRef0002 stems hstem 644 77 diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/y.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/y.glif index 81d6608e0..faa3d5649 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/y.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/y.glif @@ -4,20 +4,20 @@ - - - + + + - - + + - - + + - - + + @@ -39,14 +39,14 @@ - - + + - + @@ -60,97 +60,27 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -243 44 hstem 424 55 - vstem 329 192 - - - - pointTag - hintSet0001 - stems - - hstem -243 44 - hstem 439 40 - vstem 329 192 - - - - pointTag - hintSet0002 - stems - - hstem -243 44 - hstem 424 55 - vstem 329 192 - - - - pointTag - hintSet0004 - stems - - hstem -243 44 - hstem 439 40 - vstem 329 192 - - - - pointTag - hintSet0005 - stems - - hstem -243 44 - hstem 424 55 - vstem 329 192 - - - - pointTag - hintSet0007 - stems - - hstem -243 44 - hstem 439 40 vstem 0 521 pointTag - hintSet0008 + hintRef0001 stems hstem -243 44 hstem 424 55 - vstem 0 521 - - - - pointTag - hintSet0010 - stems - - hstem -243 44 - hstem 439 40 - vstem 0 521 - - - - pointTag - hintSet0011 - stems - - hstem -243 44 - hstem 424 55 - vstem 0 521 + vstem 329 192 pointTag - hintSet0025 + hintRef0002 stems hstem -243 124 @@ -158,16 +88,6 @@ vstem 0 521 - - pointTag - hintSet0028 - stems - - hstem -243 44 - hstem 424 55 - vstem 0 521 - - id 05a190d278479f20f196dc04433ac2d457da750672202bdc5b6eac0abb4a6ff3a376d5a68a40890330d910b49a41bf36dfa9e9c0ca71dc46f414f94713ca9165 diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif index 184ef8d69..18ec6a412 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif @@ -4,20 +4,20 @@ - - - + + + - - + + - - + + - - + + @@ -39,14 +39,14 @@ - - + + - + @@ -76,97 +76,27 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -243 44 hstem 424 55 - vstem 329 192 - - - - pointTag - hintSet0001 - stems - - hstem -243 44 - hstem 439 40 - vstem 329 192 - - - - pointTag - hintSet0002 - stems - - hstem -243 44 - hstem 424 55 - vstem 329 192 - - - - pointTag - hintSet0004 - stems - - hstem -243 44 - hstem 439 40 - vstem 329 192 - - - - pointTag - hintSet0005 - stems - - hstem -243 44 - hstem 424 55 - vstem 329 192 - - - - pointTag - hintSet0007 - stems - - hstem -243 44 - hstem 439 40 vstem 0 521 pointTag - hintSet0008 + hintRef0001 stems hstem -243 44 hstem 424 55 - vstem 0 521 - - - - pointTag - hintSet0010 - stems - - hstem -243 44 - hstem 439 40 - vstem 0 521 - - - - pointTag - hintSet0011 - stems - - hstem -243 44 - hstem 424 55 - vstem 0 521 + vstem 329 192 pointTag - hintSet0025 + hintRef0002 stems hstem -243 124 @@ -174,16 +104,6 @@ vstem 0 521 - - pointTag - hintSet0028 - stems - - hstem -243 44 - hstem 424 55 - vstem 0 521 - - id 9762988a3d54eedf4e76f12651b881e7e8a09ac592c8202020457d1777834d608bdee82e2d215d8f659c172c698962b86786999f9744dc7eb6f5a0a36a045925 diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif index 8925920a5..6e1998f0e 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif @@ -4,20 +4,20 @@ - - - + + + - - + + - - + + - - + + @@ -39,18 +39,18 @@ - - + + - + - + @@ -86,110 +86,20 @@ pointTag - hintSet0000 - stems - - hstem 424 55 - vstem 329 192 - - - - pointTag - hintSet0001 - stems - - hstem 439 40 - vstem 329 192 - - - - pointTag - hintSet0002 - stems - - hstem 424 55 - vstem 329 192 - - - - pointTag - hintSet0004 - stems - - hstem 439 40 - vstem 329 192 - - - - pointTag - hintSet0005 - stems - - hstem 424 55 - vstem 329 192 - - - - pointTag - hintSet0007 - stems - - hstem 439 40 - vstem 119 136 - - - - pointTag - hintSet0008 - stems - - hstem 424 55 - vstem 119 136 - - - - pointTag - hintSet0010 - stems - - hstem 439 40 - vstem 119 136 - - - - pointTag - hintSet0011 + hintRef0000 stems hstem -243 44 hstem 424 55 - vstem 119 136 + vstem 329 192 pointTag - hintSet0025 + hintRef0001 stems hstem -243 124 - vstem 119 136 - - - - pointTag - hintSet0028 - stems - - hstem -243 44 - hstem 424 55 - vstem 343 136 - - - - pointTag - hintSet0029 - stems - hstem 586 129 vstem 119 136 vstem 343 136 diff --git a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif index 60c4f9629..5cf28c4d6 100644 --- a/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif +++ b/tests/makeinstancesufo_data/expected_output/semibold.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif @@ -4,20 +4,20 @@ - - - + + + - - + + - - + + - - + + @@ -39,14 +39,14 @@ - - + + - + @@ -58,7 +58,7 @@ - + @@ -71,7 +71,7 @@ - + @@ -86,106 +86,29 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -243 44 hstem 424 55 - hstem 644 77 - vstem 329 192 - - - - pointTag - hintSet0001 - stems - - hstem -243 44 - hstem 439 40 - hstem 644 77 - vstem 329 192 - - - - pointTag - hintSet0002 - stems - - hstem -243 44 - hstem 424 55 - hstem 644 77 - vstem 329 192 - - - - pointTag - hintSet0004 - stems - - hstem -243 44 - hstem 439 40 - hstem 644 77 - vstem 329 192 - - - - pointTag - hintSet0005 - stems - - hstem -243 44 - hstem 424 55 - hstem 644 77 - vstem 329 192 - - - - pointTag - hintSet0007 - stems - - hstem -243 44 - hstem 439 40 - hstem 644 77 - vstem 0 521 - - - - pointTag - hintSet0008 - stems - - hstem -243 44 - hstem 424 55 - hstem 644 77 - vstem 0 521 - - - - pointTag - hintSet0010 - stems - - hstem -243 44 - hstem 439 40 - hstem 644 77 + hstem 573 77 vstem 0 521 pointTag - hintSet0011 + hintRef0001 stems hstem -243 44 hstem 424 55 - hstem 644 77 - vstem 0 521 + hstem 573 77 + vstem 329 192 pointTag - hintSet0025 + hintRef0002 stems hstem -243 124 @@ -196,18 +119,7 @@ pointTag - hintSet0028 - stems - - hstem -243 44 - hstem 424 55 - hstem 644 77 - vstem 0 521 - - - - pointTag - hintSet0033 + hintRef0003 stems hstem -243 44 @@ -218,7 +130,7 @@ pointTag - hintSet0038 + hintRef0004 stems hstem -243 44 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif index 60429ae2e..62687a987 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif @@ -4,22 +4,22 @@ - - - + + + - + - + - - + + @@ -35,29 +35,29 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 0 37.5 hstem 221 37 hstem 671 -20 - vstem 11 646 + vstem 11 203 pointTag - hintSet0001 + hintRef0001 stems hstem 0 37.5 hstem 221 37 hstem 671 -20 - vstem 11 203 + vstem 11 646 pointTag - hintSet0002 + hintRef0002 stems hstem 0 39.5 @@ -68,7 +68,7 @@ pointTag - hintSet0006 + hintRef0003 stems hstem 0 38 @@ -79,7 +79,7 @@ pointTag - hintSet0008 + hintRef0004 stems hstem 0 37.5 @@ -90,7 +90,18 @@ pointTag - hintSet0014 + hintRef0005 + stems + + hstem 0 39.5 + hstem 221 37 + hstem 671 -20 + vstem 11 646 + + + + pointTag + hintRef0006 stems hstem 0 39.5 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif index a6d932d90..f8c51adc7 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/A_acute.glif @@ -4,27 +4,27 @@ - + - - - + + + - + - + - - + + @@ -53,31 +53,31 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 0 37.5 hstem 221 37 hstem 671 -20 hstem 736 -20 - vstem 11 646 + vstem 11 203 pointTag - hintSet0003 + hintRef0001 stems hstem 0 37.5 hstem 221 37 hstem 671 -20 hstem 736 -20 - vstem 11 203 + vstem 11 646 pointTag - hintSet0005 + hintRef0002 stems hstem 0 39.5 @@ -89,7 +89,7 @@ pointTag - hintSet0009 + hintRef0003 stems hstem 0 38 @@ -101,7 +101,7 @@ pointTag - hintSet0011 + hintRef0004 stems hstem 0 37.5 @@ -113,7 +113,19 @@ pointTag - hintSet0017 + hintRef0005 + stems + + hstem 0 39.5 + hstem 221 37 + hstem 671 -20 + hstem 736 -20 + vstem 11 646 + + + + pointTag + hintRef0006 stems hstem 0 39.5 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif index b4caacac8..4ec6ecbba 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/A_dieresis.glif @@ -4,21 +4,21 @@ - - - + + + - + - + - + @@ -27,8 +27,8 @@ - - + + @@ -63,20 +63,7 @@ pointTag - hintSet0000 - stems - - hstem 0 37.5 - hstem 221 37 - hstem 671 -20 - hstem 734 98 - vstem 161 102 - vstem 389 102 - - - - pointTag - hintSet0001 + hintRef0000 stems hstem 0 37.5 @@ -89,7 +76,7 @@ pointTag - hintSet0002 + hintRef0001 stems hstem 0 39.5 @@ -102,7 +89,7 @@ pointTag - hintSet0006 + hintRef0002 stems hstem 0 38 @@ -115,20 +102,20 @@ pointTag - hintSet0008 + hintRef0003 stems hstem 0 37.5 hstem 221 37 hstem 671 -20 hstem 734 98 - vstem 161 102 + vstem 11 203 vstem 389 102 pointTag - hintSet0014 + hintRef0004 stems hstem 0 39.5 @@ -141,7 +128,7 @@ pointTag - hintSet0019 + hintRef0005 stems hstem 0 37.5 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif index e0e47f269..58df5f6da 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/A_tilde.glif @@ -4,22 +4,22 @@ - - - + + + - + - + - - + + @@ -35,7 +35,7 @@ - + @@ -48,10 +48,10 @@ - + - + @@ -63,7 +63,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 0 37.5 @@ -71,12 +71,12 @@ hstem 671 -20 hstem 738 -20 hstem 791 59 - vstem 11 646 + vstem 11 203 pointTag - hintSet0001 + hintRef0001 stems hstem 0 37.5 @@ -84,12 +84,12 @@ hstem 671 -20 hstem 738 -20 hstem 791 59 - vstem 11 203 + vstem 11 646 pointTag - hintSet0002 + hintRef0002 stems hstem 0 39.5 @@ -102,7 +102,7 @@ pointTag - hintSet0006 + hintRef0003 stems hstem 0 38 @@ -115,7 +115,7 @@ pointTag - hintSet0008 + hintRef0004 stems hstem 0 37.5 @@ -128,7 +128,7 @@ pointTag - hintSet0014 + hintRef0005 stems hstem 0 39.5 @@ -136,41 +136,40 @@ hstem 671 -20 hstem 738 -20 hstem 791 59 - vstem 11 203 + vstem 11 646 pointTag - hintSet0023 + hintRef0006 stems - hstem 0 37.5 + hstem 0 39.5 hstem 221 37 hstem 671 -20 - hstem 723 58 + hstem 738 -20 hstem 791 59 - vstem 11 646 + vstem 11 203 pointTag - hintSet0028 + hintRef0007 stems hstem 0 37.5 hstem 221 37 hstem 671 -20 - hstem 738 -20 - hstem 791 59 + hstem 723 58 vstem 11 646 pointTag - hintSet0029 + hintRef0008 stems - hstem 0 39.5 + hstem 0 37.5 hstem 221 37 hstem 671 -20 hstem 738 -20 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif index 63a725781..5eb714168 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif @@ -4,14 +4,14 @@ - + - + - + - + @@ -25,7 +25,7 @@ - + @@ -39,7 +39,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 0 39 @@ -50,40 +50,37 @@ pointTag - hintSet0003 + hintRef0001 stems hstem 0 39 hstem 628 39 vstem 268 96 - vstem 401 213 pointTag - hintSet0005 + hintRef0002 stems hstem 0 39 hstem 627.5 39.5 vstem 268 96 - vstem 401 213 pointTag - hintSet0007 + hintRef0003 stems hstem 0 39 hstem 629 38 vstem 268 96 - vstem 401 213 pointTag - hintSet0017 + hintRef0004 stems hstem 0 39 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif index efa631802..8b73f5f62 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_acute.glif @@ -4,14 +4,14 @@ - + - + - + - + @@ -25,7 +25,7 @@ - + @@ -57,18 +57,19 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 0 39 hstem 627.5 39.5 hstem 736 -20 vstem 268 96 + vstem 401 213 pointTag - hintSet0003 + hintRef0001 stems hstem 0 39 @@ -79,7 +80,7 @@ pointTag - hintSet0005 + hintRef0002 stems hstem 0 39 @@ -90,7 +91,7 @@ pointTag - hintSet0007 + hintRef0003 stems hstem 0 39 @@ -101,7 +102,7 @@ pointTag - hintSet0017 + hintRef0004 stems hstem 0 39 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif index e92e957f7..a94f966b9 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_dieresis.glif @@ -4,14 +4,14 @@ - + - + - + - + @@ -25,7 +25,7 @@ - + @@ -45,8 +45,8 @@ - - + + @@ -67,7 +67,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 0 39 @@ -78,40 +78,37 @@ pointTag - hintSet0003 + hintRef0001 stems hstem 0 39 hstem 628 39 vstem 268 96 - vstem 401 213 pointTag - hintSet0005 + hintRef0002 stems hstem 0 39 hstem 627.5 39.5 - vstem 268 96 - vstem 401 213 + vstem 183 102 pointTag - hintSet0007 + hintRef0003 stems hstem 0 39 hstem 629 38 vstem 268 96 - vstem 401 213 pointTag - hintSet0017 + hintRef0004 stems hstem 0 39 @@ -123,7 +120,7 @@ pointTag - hintSet0026 + hintRef0005 stems hstem 0 39 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif index 5f69ef2a8..835c5c321 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/Y_tilde.glif @@ -4,14 +4,14 @@ - + - + - + - + @@ -25,7 +25,7 @@ - + @@ -39,7 +39,7 @@ - + @@ -52,7 +52,7 @@ - + @@ -67,7 +67,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 0 39 @@ -80,7 +80,7 @@ pointTag - hintSet0003 + hintRef0001 stems hstem 0 39 @@ -88,12 +88,11 @@ hstem 738 -20 hstem 791 59 vstem 268 96 - vstem 401 213 pointTag - hintSet0005 + hintRef0002 stems hstem 0 39 @@ -101,12 +100,11 @@ hstem 738 -20 hstem 791 59 vstem 268 96 - vstem 401 213 pointTag - hintSet0007 + hintRef0003 stems hstem 0 39 @@ -114,12 +112,11 @@ hstem 738 -20 hstem 791 59 vstem 268 96 - vstem 401 213 pointTag - hintSet0017 + hintRef0004 stems hstem 0 39 @@ -132,20 +129,19 @@ pointTag - hintSet0025 + hintRef0005 stems hstem 0 39 hstem 627.5 39.5 hstem 723 58 - hstem 791 59 vstem 268 96 vstem 401 213 pointTag - hintSet0030 + hintRef0006 stems hstem 0 39 @@ -153,7 +149,6 @@ hstem 738 -20 hstem 791 59 vstem 268 96 - vstem 401 213 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/a.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/a.glif index 413dd8b5d..e1b1a2f3d 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/a.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/a.glif @@ -4,7 +4,7 @@ - + @@ -75,7 +75,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -14 50 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif index 14969f4ed..5b2c5fb39 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/aacute.glif @@ -4,7 +4,7 @@ - + @@ -93,7 +93,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -14 50 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif index 1a379d45a..89ab99c4e 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.cap.glif @@ -2,7 +2,7 @@ - + @@ -29,7 +29,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 736 -20 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif index d65bd65a2..2237ac9a0 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/acutecmb.glif @@ -3,7 +3,7 @@ - + @@ -30,7 +30,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 559 197 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif index 623da442f..02590dbbb 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/adieresis.glif @@ -4,7 +4,7 @@ - + @@ -52,8 +52,8 @@ - - + + @@ -80,8 +80,8 @@ - - + + @@ -103,7 +103,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -14 50 @@ -115,7 +115,7 @@ pointTag - hintSet0019 + hintRef0001 stems hstem -14 50 @@ -127,7 +127,7 @@ pointTag - hintSet0029 + hintRef0002 stems hstem -14 50 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif index 29c004815..49b7d3fa8 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/atilde.glif @@ -4,7 +4,7 @@ - + @@ -52,7 +52,7 @@ - + @@ -60,7 +60,7 @@ - + @@ -73,14 +73,14 @@ - + - + @@ -103,24 +103,11 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -14 50 hstem 457 34 - hstem 581 58 - vstem 44 86 - vstem 330 89 - - - - pointTag - hintSet0019 - stems - - hstem -14 50 - hstem 457 34 - hstem 581 58 hstem 649 59 vstem 44 86 vstem 330 89 @@ -128,7 +115,7 @@ pointTag - hintSet0023 + hintRef0001 stems hstem -14 50 @@ -140,29 +127,16 @@ pointTag - hintSet0028 + hintRef0002 stems hstem -14 50 hstem 457 34 - hstem 581 58 hstem 649 59 vstem 44 86 vstem 330 89 - - pointTag - hintSet0030 - stems - - hstem -14 50 - hstem 457 34 - hstem 581 58 - vstem 44 86 - vstem 330 89 - - id 33d74c750b5ca498486a381c56138087067e57b67a13ff10fac3f6ace058e1d38c165ca5970fa9ebb54612bf795d5c38d6261a2e236a1a2049d8dc00c263a457 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif index f3cde7814..3e7c2b172 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.cap.glif @@ -2,7 +2,7 @@ - + @@ -39,7 +39,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 734 98 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif index ee3d68fbf..96f3515ea 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/dieresiscmb.glif @@ -3,7 +3,7 @@ - + @@ -41,7 +41,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 614 98 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif index 43ef66290..76c8601cd 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.cap.glif @@ -2,7 +2,7 @@ - + @@ -10,7 +10,7 @@ - + @@ -23,7 +23,7 @@ - + @@ -39,7 +39,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem 738 -20 @@ -49,17 +49,16 @@ pointTag - hintSet0004 + hintRef0001 stems hstem 723 58 - hstem 791 59 vstem -171 342 pointTag - hintSet0009 + hintRef0002 stems hstem 738 -20 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif index 0abf41ac6..8b4eaf016 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/tildecmb.glif @@ -3,7 +3,7 @@ - + @@ -11,7 +11,7 @@ - + @@ -24,7 +24,7 @@ - + @@ -40,17 +40,16 @@ pointTag - hintSet0000 + hintRef0000 stems - hstem 581 58 hstem 649 59 vstem -162 324 pointTag - hintSet0004 + hintRef0001 stems hstem 581 58 @@ -59,10 +58,9 @@ pointTag - hintSet0009 + hintRef0002 stems - hstem 581 58 hstem 649 59 vstem -162 324 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/y.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/y.glif index cdc30020b..84cf7fc07 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/y.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/y.glif @@ -4,20 +4,20 @@ - + - + - + - - + + - + - + @@ -45,7 +45,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -246 90 @@ -55,7 +55,7 @@ pointTag - hintSet0002 + hintRef0001 stems hstem -246 90 @@ -65,17 +65,7 @@ pointTag - hintSet0006 - stems - - hstem -246 90 - hstem 446 31 - vstem 327 184 - - - - pointTag - hintSet0007 + hintRef0002 stems hstem -246 90 @@ -85,7 +75,7 @@ pointTag - hintSet0009 + hintRef0003 stems hstem -246 90 @@ -95,7 +85,7 @@ pointTag - hintSet0011 + hintRef0004 stems hstem -246 90 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif index d4c7f0c4b..be747bbb8 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/yacute.glif @@ -4,20 +4,20 @@ - + - + - + - - + + - + - + @@ -63,7 +63,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -246 90 @@ -73,7 +73,7 @@ pointTag - hintSet0002 + hintRef0001 stems hstem -246 90 @@ -83,17 +83,7 @@ pointTag - hintSet0006 - stems - - hstem -246 90 - hstem 446 31 - vstem 327 184 - - - - pointTag - hintSet0007 + hintRef0002 stems hstem -246 90 @@ -103,7 +93,7 @@ pointTag - hintSet0009 + hintRef0003 stems hstem -246 90 @@ -113,7 +103,7 @@ pointTag - hintSet0011 + hintRef0004 stems hstem -246 90 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif index 6b9882f4e..d2df41aab 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/ydieresis.glif @@ -4,20 +4,20 @@ - + - + - - + + - + - + @@ -73,43 +73,19 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -246 90 hstem 442.5 34.5 hstem 614 98 vstem 128 101 - vstem 341 101 - - - - pointTag - hintSet0002 - stems - - hstem -246 90 - hstem 442.5 34.5 - hstem 614 98 - vstem 128 101 - vstem 327 184 - - - - pointTag - hintSet0006 - stems - - hstem -246 90 - hstem 446 31 - hstem 614 98 - vstem 128 101 vstem 327 184 pointTag - hintSet0007 + hintRef0001 stems hstem -246 90 @@ -121,7 +97,7 @@ pointTag - hintSet0009 + hintRef0002 stems hstem -246 90 @@ -133,7 +109,7 @@ pointTag - hintSet0011 + hintRef0003 stems hstem -246 90 diff --git a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif index fb0049dc2..0effadc0b 100644 --- a/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif +++ b/tests/makeinstancesufo_data/expected_output/ufo3regular.ufo/glyphs.com.adobe.type.processedglyphs/ytilde.glif @@ -4,20 +4,20 @@ - + - + - + - - + + - + - + @@ -37,7 +37,7 @@ - + @@ -45,7 +45,7 @@ - + @@ -58,7 +58,7 @@ - + @@ -73,7 +73,7 @@ pointTag - hintSet0000 + hintRef0000 stems hstem -246 90 @@ -84,7 +84,7 @@ pointTag - hintSet0002 + hintRef0001 stems hstem -246 90 @@ -95,18 +95,7 @@ pointTag - hintSet0006 - stems - - hstem -246 90 - hstem 446 31 - hstem 581 58 - vstem 327 184 - - - - pointTag - hintSet0007 + hintRef0002 stems hstem -246 90 @@ -117,7 +106,7 @@ pointTag - hintSet0009 + hintRef0003 stems hstem -246 90 @@ -128,30 +117,18 @@ pointTag - hintSet0011 + hintRef0004 stems hstem -246 90 hstem 442.5 34.5 - hstem 581 58 - vstem -11 522 - - - - pointTag - hintSet0022 - stems - - hstem -246 90 - hstem 442.5 34.5 - hstem 581 58 hstem 649 59 vstem -11 522 pointTag - hintSet0026 + hintRef0005 stems hstem -246 90 @@ -162,12 +139,11 @@ pointTag - hintSet0031 + hintRef0006 stems hstem -246 90 hstem 442.5 34.5 - hstem 581 58 hstem 649 59 vstem -11 522 diff --git a/tests/makeinstancesufo_data/input/master2.ufo/fontinfo.plist b/tests/makeinstancesufo_data/input/master2.ufo/fontinfo.plist index 7cd81fc09..a46d9124c 100644 --- a/tests/makeinstancesufo_data/input/master2.ufo/fontinfo.plist +++ b/tests/makeinstancesufo_data/input/master2.ufo/fontinfo.plist @@ -15,7 +15,7 @@ italicAngle 2 postscriptBlueFuzz - 5 + 3 postscriptBlueScale 0.0675 postscriptBlueValues diff --git a/tests/makeinstancesufo_test.py b/tests/makeinstancesufo_test.py index 51b772da7..0c4775e67 100644 --- a/tests/makeinstancesufo_test.py +++ b/tests/makeinstancesufo_test.py @@ -35,7 +35,7 @@ def teardown_module(): """ teardown the temporary UFOs or the directory that holds them """ - rmtree(os.path.join(TEMP_DIR), True) +# rmtree(os.path.join(TEMP_DIR), True) rmtree(os.path.join(DATA_DIR, 'input', 'same_dir.ufo'), True) diff --git a/tests/otfautohint_data/expected_output/basic_shapes.otf b/tests/otfautohint_data/expected_output/basic_shapes.otf new file mode 100644 index 0000000000000000000000000000000000000000..d849c0e78efc48e961b1071c74c5b436b8411bbf GIT binary patch literal 1308 zcmb7EO=uHQ5dPloCT(pk_DC1o*!5lO4PK+Rc? zU>`y1idYw`2msP`={fBiwNre+pkO`;ftKGq=KZryUO09h%hf8oRjb38@+x|@-56Rb zAD0ovqu=#AT$k(T-ii)im(YZWugmDhUSC%lVghKxaUTzoImw9$#qF&J7kyn|2UdMu zV%-P6E+c`bzOFRH1X%Tlj|b5sy5jl5qM1phOKNYjPmO7V!~I9~VkSAB)(b{)%t*~< zbu*FAl@fU~WvGYL1~084EqXBOvL+0(n91i=X<9>6)K7vq@+e>tCNfANjS_FG z7fJN-j6uU7hS86s&{1SW661`~$uMY-aZh0uSt2IiEsq@e?r9P?nBfp*b8gKy#0pUy zq||FokY{?e+-xfSZV&stQ~O7*=wF?$Jg9g|l07cFRteaw8RcUGTeyp{9UR+E41a-mRqggv7N)>-^Bf2_z!*ot8g#p literal 0 HcmV?d00001 diff --git a/tests/otfautohint_data/input/basic_shapes.otf b/tests/otfautohint_data/input/basic_shapes.otf new file mode 100644 index 0000000000000000000000000000000000000000..28f9795dfc8ef536263cda67485c7120adb8e885 GIT binary patch literal 1216 zcmah|O-K}B7=FH)+1=D-wfwNc zMZ9<_D1w4IL{PW71VPX_=-MUd&?$_aT4Q@=cC;mozK{2PpZEWp@BL^mCdFSO(1%`+z)`RMa6pyHJ@u}l33B-_fx9LF*zr7(suNvnQ9)wv(Rb9jjr zu`9OW0i-+9YwDX-DL!FPu$}}@-9aAf{#ldP&MsiBQsHUU$_VD1j!thohMLN4X9V!< zpntRNvi;-@Xm+s#AA&BH(TQ#sD>X45G~%3V_cC*q6BCMkwjNw}u|ONPT`aNhV;9Sa z;-!m~nivne{&ekL^oaIIHn(afSS9v&<8AB9f{U!d)H=SU=$G-D~F z%EJXSsb}ITBfq$$n=TI@GIOB{iiS z + + + + ascender + 800 + capHeight + 500 + copyright + Copyright (c) 2018, + descender + -200 + familyName + BasicShapes + italicAngle + 0.0 + openTypeHeadCreated + 2018/07/28 15:32:59 + openTypeHeadFlags + + 0 + 1 + 3 + + openTypeHeadLowestRecPPEM + 8 + openTypeHheaAscender + 500 + openTypeHheaCaretOffset + 0 + openTypeHheaCaretSlopeRise + 1 + openTypeHheaCaretSlopeRun + 0 + openTypeHheaDescender + 0 + openTypeHheaLineGap + 90 + openTypeNameUniqueID + FontForge : BasicShapes : 30-7-2018 + openTypeNameVersion + Version 001.000 + openTypeOS2CodePageRanges + + 0 + + openTypeOS2Panose + + 2 + 0 + 5 + 9 + 0 + 0 + 0 + 0 + 0 + 0 + + openTypeOS2Selection + + openTypeOS2StrikeoutPosition + 258 + openTypeOS2StrikeoutSize + 49 + openTypeOS2SubscriptXOffset + 0 + openTypeOS2SubscriptXSize + 650 + openTypeOS2SubscriptYOffset + 140 + openTypeOS2SubscriptYSize + 700 + openTypeOS2SuperscriptXOffset + 0 + openTypeOS2SuperscriptXSize + 650 + openTypeOS2SuperscriptYOffset + 480 + openTypeOS2SuperscriptYSize + 700 + openTypeOS2Type + + openTypeOS2TypoAscender + 800 + openTypeOS2TypoDescender + -200 + openTypeOS2TypoLineGap + 90 + openTypeOS2UnicodeRanges + + 0 + + openTypeOS2VendorID + PfEd + openTypeOS2WeightClass + 400 + openTypeOS2WidthClass + 5 + openTypeOS2WinAscent + 500 + openTypeOS2WinDescent + 0 + postscriptBlueShift + 0 + postscriptBlueValues + + -20 + 0 + 500 + 500 + + postscriptDefaultWidthX + 620 + postscriptFamilyBlues + + postscriptFamilyOtherBlues + + postscriptFontName + BasicShapes-Regular + postscriptForceBold + + postscriptFullName + BasicShapes + postscriptIsFixedPitch + + postscriptNominalWidthX + 0 + postscriptOtherBlues + + postscriptStemSnapH + + 10 + + postscriptStemSnapV + + 10 + + postscriptUnderlinePosition + -125 + postscriptUnderlineThickness + 50 + postscriptWeightName + Regular + styleMapFamilyName + BasicShapes + styleMapStyleName + regular + styleName + Regular + unitsPerEm + 1000 + versionMajor + 1 + versionMinor + 0 + xHeight + 0 + + diff --git a/tests/otfautohint_data/input/basic_shapes.ufo/glyphs/_notdef.glif b/tests/otfautohint_data/input/basic_shapes.ufo/glyphs/_notdef.glif new file mode 100644 index 000000000..cefce2c7e --- /dev/null +++ b/tests/otfautohint_data/input/basic_shapes.ufo/glyphs/_notdef.glif @@ -0,0 +1,6 @@ + + + + + + diff --git a/tests/otfautohint_data/input/basic_shapes.ufo/glyphs/circle.glif b/tests/otfautohint_data/input/basic_shapes.ufo/glyphs/circle.glif new file mode 100644 index 000000000..e2176ef75 --- /dev/null +++ b/tests/otfautohint_data/input/basic_shapes.ufo/glyphs/circle.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/basic_shapes.ufo/glyphs/circle2.glif b/tests/otfautohint_data/input/basic_shapes.ufo/glyphs/circle2.glif new file mode 100644 index 000000000..d3054abad --- /dev/null +++ b/tests/otfautohint_data/input/basic_shapes.ufo/glyphs/circle2.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/basic_shapes.ufo/glyphs/contents.plist b/tests/otfautohint_data/input/basic_shapes.ufo/glyphs/contents.plist new file mode 100644 index 000000000..efd4d136f --- /dev/null +++ b/tests/otfautohint_data/input/basic_shapes.ufo/glyphs/contents.plist @@ -0,0 +1,18 @@ + + + + + .notdef + _notdef.glif + circle + circle.glif + circle2 + circle2.glif + square + square.glif + square2 + square2.glif + triangle + triangle.glif + + diff --git a/tests/otfautohint_data/input/basic_shapes.ufo/glyphs/square.glif b/tests/otfautohint_data/input/basic_shapes.ufo/glyphs/square.glif new file mode 100644 index 000000000..d155c3264 --- /dev/null +++ b/tests/otfautohint_data/input/basic_shapes.ufo/glyphs/square.glif @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/basic_shapes.ufo/glyphs/square2.glif b/tests/otfautohint_data/input/basic_shapes.ufo/glyphs/square2.glif new file mode 100644 index 000000000..0f2f8342e --- /dev/null +++ b/tests/otfautohint_data/input/basic_shapes.ufo/glyphs/square2.glif @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/basic_shapes.ufo/glyphs/triangle.glif b/tests/otfautohint_data/input/basic_shapes.ufo/glyphs/triangle.glif new file mode 100644 index 000000000..06d8cbd9d --- /dev/null +++ b/tests/otfautohint_data/input/basic_shapes.ufo/glyphs/triangle.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/basic_shapes.ufo/lib.plist b/tests/otfautohint_data/input/basic_shapes.ufo/lib.plist new file mode 100644 index 000000000..92dc94a78 --- /dev/null +++ b/tests/otfautohint_data/input/basic_shapes.ufo/lib.plist @@ -0,0 +1,15 @@ + + + + + public.glyphOrder + + .notdef + circle + circle2 + triangle + square + square2 + + + diff --git a/tests/otfautohint_data/input/basic_shapes.ufo/metainfo.plist b/tests/otfautohint_data/input/basic_shapes.ufo/metainfo.plist new file mode 100644 index 000000000..58145b5a1 --- /dev/null +++ b/tests/otfautohint_data/input/basic_shapes.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + org.robofab.ufoLib + formatVersion + 2 + + diff --git a/tests/otfautohint_data/input/fontinfo/bad_base_token b/tests/otfautohint_data/input/fontinfo/bad_base_token new file mode 100644 index 000000000..e4e25c05e --- /dev/null +++ b/tests/otfautohint_data/input/fontinfo/bad_base_token @@ -0,0 +1,6 @@ +IsItalicStyle false +IsBoldStyle false +IsOS/2OBLIQUE false +UseOldNameID4 false +LicenseCode ADOBE +BaselineOvershoot -12 diff --git a/tests/otfautohint_data/input/fontinfo/bad_begin b/tests/otfautohint_data/input/fontinfo/bad_begin new file mode 100644 index 000000000..08f071037 --- /dev/null +++ b/tests/otfautohint_data/input/fontinfo/bad_begin @@ -0,0 +1,15 @@ +IsItalicStyle false +IsBoldStyle false +IsOS/2OBLIQUE false +UseOldNameID4 false +LicenseCode ADOBE + +begin FOO + BaselineYCoord 0 + BaselineOvershoot -12 + CapHeight 656 + CapOvershoot 12 + DominantV [86] + DominantH [68] + FlexOK false +end FOO diff --git a/tests/otfautohint_data/input/fontinfo/bad_end_fddict b/tests/otfautohint_data/input/fontinfo/bad_end_fddict new file mode 100644 index 000000000..997f433e1 --- /dev/null +++ b/tests/otfautohint_data/input/fontinfo/bad_end_fddict @@ -0,0 +1,15 @@ +IsItalicStyle false +IsBoldStyle false +IsOS/2OBLIQUE false +UseOldNameID4 false +LicenseCode ADOBE + +begin FDDict UPPERCASE + BaselineYCoord 0 + BaselineOvershoot -12 + CapHeight 656 + CapOvershoot 12 + DominantV [86] + DominantH [68] + FlexOK false +end FDDict LOWERCASE diff --git a/tests/otfautohint_data/input/fontinfo/bad_end_glyphset b/tests/otfautohint_data/input/fontinfo/bad_end_glyphset new file mode 100644 index 000000000..3f056dad8 --- /dev/null +++ b/tests/otfautohint_data/input/fontinfo/bad_end_glyphset @@ -0,0 +1,10 @@ +IsItalicStyle false +IsBoldStyle false +IsOS/2OBLIQUE false +UseOldNameID4 false +LicenseCode ADOBE + +begin GlyphSet UPPERCASE + ^([A-Z]|AE|OE|Germandbls|Eth|Thorn|Schwa|Eng|IJ)(acute|grave|circumflex|tilde|dieresis|macron|breve|ring|ringacute|caron|ogonek|dotbelow|hoi|stroke|linebelow|cedilla|dotaccent|croat|commaaccent|hook|brevebelow|bar|dotbelowmacron|slash|hungarumlaut|horn|cat|dot)?(acute|grave|hoi|tilde|dotbelow|macron|caron|.a)?$ +end GlyphSet LOWERCASE + diff --git a/tests/otfautohint_data/input/fontinfo/bad_fddict_key b/tests/otfautohint_data/input/fontinfo/bad_fddict_key new file mode 100644 index 000000000..5d127e342 --- /dev/null +++ b/tests/otfautohint_data/input/fontinfo/bad_fddict_key @@ -0,0 +1,16 @@ +IsItalicStyle false +IsBoldStyle false +IsOS/2OBLIQUE false +UseOldNameID4 false +LicenseCode ADOBE + +begin FDDict UPPERCASE + BaselineYCoord 0 + BaselineOvershoot -12 + CapHeight 656 + CapOvershoot 12 + DominantV [86] + DominantH [68] + FlexOK false + FOO 1 +end FDDict UPPERCASE diff --git a/tests/otfautohint_data/input/fontinfo/base_token_list b/tests/otfautohint_data/input/fontinfo/base_token_list new file mode 100644 index 000000000..8c0e51b80 --- /dev/null +++ b/tests/otfautohint_data/input/fontinfo/base_token_list @@ -0,0 +1,5 @@ +IsItalicStyle [ false ] +IsBoldStyle ( false ) +IsOS/2OBLIQUE false +UseOldNameID4 false +LicenseCode ADOBE diff --git a/tests/otfautohint_data/input/fontinfo/bluefuzz_fontname b/tests/otfautohint_data/input/fontinfo/bluefuzz_fontname new file mode 100644 index 000000000..65dae74a4 --- /dev/null +++ b/tests/otfautohint_data/input/fontinfo/bluefuzz_fontname @@ -0,0 +1,21 @@ +IsItalicStyle false +IsBoldStyle false +IsOS/2OBLIQUE false +UseOldNameID4 false +LicenseCode ADOBE + +begin FDDict UPPERCASE + FontName Bar + BaselineYCoord 0 + BaselineOvershoot -12 + CapHeight 656 + CapOvershoot 12 + DominantV [86] + DominantH [68] + FlexOK false + BlueFuzz 10 +end FDDict UPPERCASE + +begin GlyphSet UPPERCASE + ^([A-Z]|AE|OE|Germandbls|Eth|Thorn|Schwa|Eng|IJ)(acute|grave|circumflex|tilde|dieresis|macron|breve|ring|ringacute|caron|ogonek|dotbelow|hoi|stroke|linebelow|cedilla|dotaccent|croat|commaaccent|hook|brevebelow|bar|dotbelowmacron|slash|hungarumlaut|horn|cat|dot)?(acute|grave|hoi|tilde|dotbelow|macron|caron|.a)?$ +end GlyphSet UPPERCASE diff --git a/tests/otfautohint_data/input/fontinfo/finalfont b/tests/otfautohint_data/input/fontinfo/finalfont new file mode 100644 index 000000000..ec0dbd60f --- /dev/null +++ b/tests/otfautohint_data/input/fontinfo/finalfont @@ -0,0 +1,15 @@ +IsItalicStyle false +IsBoldStyle false +IsOS/2OBLIQUE false +UseOldNameID4 false +LicenseCode ADOBE + +begin FDDict FinalFont + BaselineYCoord 0 + BaselineOvershoot -12 + CapHeight 656 + CapOvershoot 12 + DominantV [86] + DominantH [68] + FlexOK false +end FDDict FinalFont diff --git a/tests/otfautohint_data/input/fontinfo/no_dominant_h_v b/tests/otfautohint_data/input/fontinfo/no_dominant_h_v new file mode 100644 index 000000000..c1768cb42 --- /dev/null +++ b/tests/otfautohint_data/input/fontinfo/no_dominant_h_v @@ -0,0 +1,13 @@ +IsItalicStyle false +IsBoldStyle false +IsOS/2OBLIQUE false +UseOldNameID4 false +LicenseCode ADOBE + +begin FDDict UPPERCASE + BaselineYCoord 0 + BaselineOvershoot -12 + CapHeight 656 + CapOvershoot 12 + FlexOK false +end FDDict UPPERCASE diff --git a/tests/otfautohint_test.py b/tests/otfautohint_test.py new file mode 100644 index 000000000..48f5207ba --- /dev/null +++ b/tests/otfautohint_test.py @@ -0,0 +1,103 @@ +import glob +import pytest + +from runner import main as runner +from differ import main as differ +from test_utils import get_input_path, get_expected_path, get_temp_file_path +from afdko.otfautohint.fdTools import (mergeFDDicts, parseFontInfoFile, + FDDict, FontInfoParseError) + + +def parse(path, glyphs=None): + with open(path) as fp: + data = fp.read() + if glyphs is None: + glyphs = [] + fddict = FDDict(0) + fddict.setInfo("BlueFuzz", 0) + dl = {0: fddict} + sm, fd = parseFontInfoFile(dl, data, glyphs, 2000, -1000, "Foo") + return sm, dl, fd + + +# ------------- +# fdTools tests +# ------------- + + +def test_finalfont(): + path = get_input_path("fontinfo/finalfont") + _, _, final_dict = parse(path) + assert final_dict is not None + + +def test_base_token_value_is_a_list(): + path = get_input_path("fontinfo/base_token_list") + _, font_dicts, _ = parse(path) + assert len(font_dicts) > 0 + + +# def test_no_dominant_h_or_v(caplog): +def test_no_dominant_h_or_v(): + path = get_input_path("fontinfo/no_dominant_h_v") + _, font_dicts, _ = parse(path) + assert len(font_dicts) > 0 + # msgs = [r.getMessage() for r in caplog.records] + # assert "The FDDict 'UPPERCASE' in fontinfo has no DominantH value" in msgs + # assert "The FDDict 'UPPERCASE' in fontinfo has no DominantV value" in msgs + + +def test_bluefuzz_and_fontname(): + path = get_input_path("fontinfo/bluefuzz_fontname") + _, font_dicts, _ = parse(path, ["A", "B", "C", "D"]) + assert len(font_dicts) > 1 + assert font_dicts[1].BlueFuzz == 10 + assert font_dicts[1].FontName == "Bar" + + +@pytest.mark.parametrize('path', glob.glob(get_input_path("fontinfo/bad_*"))) +def test_bad_fontinfo(path): + with pytest.raises(FontInfoParseError): + parse(path) + + +@pytest.mark.parametrize("attributes", [ + {"CapOvershoot": 5, "CapHeight": 5, + "AscenderOvershoot": 0, "AscenderHeight": 8}, + {"BaselineOvershoot": None}, + {"BaselineOvershoot": 10}, + {"CapOvershoot": 0}, + {"AscenderHeight": -10, "AscenderOvershoot": 0}, + {"AscenderHeight": 0, "AscenderOvershoot": -10}, + {"Baseline5Overshoot": 10, "Baseline5": 0}, +]) +def test_fddict_bad_zone(attributes): + fddict = FDDict(0) + fddict.setInfo("BlueFuzz", 0) + fddict.setInfo("BaselineYCoord", 0) + fddict.setInfo("BaselineOvershoot", -10) + + for key in attributes: + setattr(fddict, key, attributes[key]) + + with pytest.raises(FontInfoParseError): + fddict.buildBlueLists() + + +def test_merge_empty_fddicts(): + mergeFDDicts([FDDict(0), FDDict(1)]) + + +@pytest.mark.parametrize("stemdict", ["DominantH", "DominantV"]) +def test_merge_fddicts_with_stemdicts(stemdict): + fddict1 = FDDict(1) + fddict2 = FDDict(2) + + for i, fddict in enumerate([fddict1, fddict2]): + fddict.setInfo("BlueFuzz", 0) + fddict.setInfo("BaselineYCoord", 0) + fddict.setInfo("BaselineOvershoot", -10) + fddict.setInfo(stemdict, [str(i * 10), str(i * 20)]) + fddict.buildBlueLists() + + mergeFDDicts([fddict1, fddict2]) From c5accfa631ccd0e17e6b94c5ef49e12914765174 Mon Sep 17 00:00:00 2001 From: Skef Iterum Date: Fri, 24 Mar 2023 03:00:14 -0700 Subject: [PATCH 02/13] Add doc link Remove Python dependency on psautohint package Fix up more references to otfautohint --- docs/AFDKO-Overview.md | 16 ++++++++-------- docs/CommandLineHowTo.md | 14 +++++++------- docs/README.md | 1 + requirements.txt | 1 - 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/AFDKO-Overview.md b/docs/AFDKO-Overview.md index b2fce09ff..d2e545750 100644 --- a/docs/AFDKO-Overview.md +++ b/docs/AFDKO-Overview.md @@ -17,9 +17,9 @@ The tools fall into several different functional groups. ## 2.1 Making/editing fonts -### `psautohint` +### `otfautohint` -This program is the Adobe auto-hinter and lives in [its own project repo](https://github.com/adobe-type-tools/psautohint). It is used by several AFDKO tools and is installed automatically via AFDKO's project requirements. +This program is the Adobe auto-hinter. It is used by several AFDKO tools. It can be applied to both OpenType/CFF and Type 1 fonts. Works with Type 1 and OpenType/CFF fonts only. @@ -63,14 +63,14 @@ This tool will rotate and translate glyphs in a font, including the hints. Howev This allows you to cut and paste the entire binary block of a font table from one font to another. You do this by first using it on a source font with the `-x` option to copy a table from the source font to a separate file, and then using it with the `-a` option to add that table to a target font. It can also be used to simply delete a table, and to fix the font table checksums. -### `psstemhist` +### `otfstemhist` -This program is actually the same tool as `psautohint` but with a different -face. It provides reports which help in selecting the global hint data and -alignment zones for Type 1 hinting. You should look at the reports from this +This program is actually the same tool as `otfautohint` but with a different +"face". It provides reports which help in selecting the global hint data and +alignment zones for CFF hinting. You should look at the reports from this tool in order to select the most common stem widths, and then use a program such as FontLab or RoboFont to set the values in the font. This should be done before -hinting the font. Works with Type 1 and OpenType/CFF fonts only. +hinting the font. ### `ttfcomponentizer` @@ -130,7 +130,7 @@ Note that the tools ending in “plot” are all simply small command-file scrip ## 2.3 Validation -### `psautohint` +### `otfautohint` The auto-hinting program will report at length about hinting issues. Some of these you can ignore, such as reports about near misses when a stem could be controlled by a hint-zone but is just a little too wide or too narrow. By adjusting either the stem widths or the hint-zones according to these reports, you can include more stems in the set that are controlled by hints, but you can also reasonably decide that is not worth the effort. However, many complaints do need fixing, such not having nodes at vertical or horizontal extremes of a curve. diff --git a/docs/CommandLineHowTo.md b/docs/CommandLineHowTo.md index bd97dcf25..d984dfd33 100644 --- a/docs/CommandLineHowTo.md +++ b/docs/CommandLineHowTo.md @@ -90,7 +90,7 @@ Commands which operate on files require that you specify the directory path of t ``` open /Users/rroberts/.bash_profile # Mac start C:\adobe\FDK\FDKReleaseNotes.txt # Windows -psautohint -a MyFont.pfa # any system +otfautohint -a MyFont.pfa # any system ``` The easiest way to get a file path into the command line is to drag its icon from a *Finder/Explorer* window onto the *Terminal/Command Prompt* window. When you do this, the absolute path — the complete path from the computer’s root directory — is copied. However, a command window always has a “current” directory. If the file is in the current directory, then you only need to type the file’s name, as in the third example above. To see the absolute path of the current directory, type the following command: @@ -107,13 +107,13 @@ If you leave off the initial slash (/), then the path is assumed to be relative Some commands produce a lot of text output, so much that it would be more convenient to look at the output in a text editor with good search functions. To send the output of a command to a file, add a greater-than sign (`>`) followed by a file path, to the command line. For example: ``` -psautohint -a MyFont.pfa +otfautohint -a MyFont.pfa ``` is likely to produce several hundred lines of output. To browse this more easily, enter: ``` -psautohint -a MyFont.pfa > MyFont_autohint.txt +otfautohint -a MyFont.pfa > MyFont_autohint.txt ``` -This will “re-direct” the output of the psautohint command into the file `MyFont_autohint.txt`. You +This will “re-direct” the output of the otfautohint command into the file `MyFont_autohint.txt`. You can then open this file in your favorite text editor, and search for interesting notes. ## **Favorite AFDKO (Adobe® Font Development Kit for OpenType®) commands** @@ -131,13 +131,13 @@ Run `checkOutlines` QA tool on the font MinionPro-Bold.otf present in the Bold s ``` checkOutlines Bold/MinionPro-Bold.otf ``` -Autohint only unhinted glyphs in a font: (This allows you to manually hint some glyphs in FontLab without overwriting that work when using the psautohint program) +Autohint only unhinted glyphs in a font: (This allows you to manually hint some glyphs in FontLab without overwriting that work when using the otfautohint program) ``` -psautohint font.pfa +otfautohint font.pfa ``` Autohint all glyphs in a font: (This will remove any hints that existed before) ``` -psautohint -a font.pfa +otfautohint -a font.pfa ``` Build and OpenType CFF font in release mode, assuming that all the input files (font.pfa, features, fontinfo, FontMenuNameDB and GlyphOrderAndAliasDB) have default names, and default locations relative to the current directory: (The resulting OpenType font file, will be named according to the font’s PostScript® name) ``` diff --git a/docs/README.md b/docs/README.md index d51e4b1d4..5a806dcc1 100644 --- a/docs/README.md +++ b/docs/README.md @@ -7,6 +7,7 @@ --- ##### • [Issues with OpenType/CFF and TrueType fonts in MS Font Validator](./MSFontValidatorIssues.md) ##### • [Practical issues in weight setting and style linking (Windows only)](./WinWeights.md) +##### • [A few notes on otfautohint](./otfautohint_Notes.md) --- ##### • [FDK Build Notes](./FDK_Build_Notes.md) ##### • [MakeOTFEXE Feature File Parser Notes](./Feature_Parser_Notes.md) diff --git a/requirements.txt b/requirements.txt index 4afb06e55..2188916c0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,7 +7,6 @@ booleanOperations==0.9.0 defcon[lxml,pens]==0.10.2 fontMath==0.9.3 fontTools[unicode,woff,lxml,ufo]==4.39.4 -psautohint==2.4.0 tqdm==4.65.0 ufonormalizer==0.6.1 ufoProcessor==1.9.0 From 9d7c9161c8470e5593ae47933c14a9418e14ac54 Mon Sep 17 00:00:00 2001 From: Skef Iterum Date: Fri, 24 Mar 2023 03:16:17 -0700 Subject: [PATCH 03/13] flake8 Restore proper version file --- python/afdko/otfautohint/__main__.py | 2 +- python/afdko/otfautohint/_version.py | 7 ++-- python/afdko/otfautohint/fdTools.py | 2 +- python/afdko/otfautohint/glyphData.py | 44 ++++++++++++------------ python/afdko/otfautohint/hinter.py | 17 +++++---- python/afdko/otfautohint/splitpsdicts.py | 2 +- tests/otfautohint_test.py | 10 +++--- 7 files changed, 41 insertions(+), 43 deletions(-) diff --git a/python/afdko/otfautohint/__main__.py b/python/afdko/otfautohint/__main__.py index e02ffc7e0..9b11883a5 100644 --- a/python/afdko/otfautohint/__main__.py +++ b/python/afdko/otfautohint/__main__.py @@ -416,7 +416,7 @@ def _check_save_path(path_str): open(check_path, 'a').close() if del_test_file: os.remove(check_path) - except (IOError, OSError): + except (OSError): raise argparse.ArgumentTypeError( f"{test_path} is not a valid path to write to.") return test_path diff --git a/python/afdko/otfautohint/_version.py b/python/afdko/otfautohint/_version.py index 34faabe04..fcf8b049c 100644 --- a/python/afdko/otfautohint/_version.py +++ b/python/afdko/otfautohint/_version.py @@ -1,4 +1,3 @@ -# file generated by setuptools_scm -# don't change, don't track in version control -__version__ = version = '3.9.4.dev67+g0fda11a1.d20230324' -__version_tuple__ = version_tuple = (3, 9, 4, 'dev67', 'g0fda11a1.d20230324') +from setuptools_scm import get_version + +version = get_version(root='../..', relative_to=__file__) diff --git a/python/afdko/otfautohint/fdTools.py b/python/afdko/otfautohint/fdTools.py index 6db257b18..ed314b771 100644 --- a/python/afdko/otfautohint/fdTools.py +++ b/python/afdko/otfautohint/fdTools.py @@ -739,7 +739,7 @@ def __init__(self, options, fontInstances, glyphList, isVF=False): if options.printFDDictList or options.printAllFDDict: # Print the user defined FontDicts, and exit. print("Private Dictionaries:\n") - for model, fda in self.dictRecord.items(): + for _model, fda in self.dictRecord.items(): for fdIndex, fdl in fda.items(): for fontDict in fdl: if fontDict is None: diff --git a/python/afdko/otfautohint/glyphData.py b/python/afdko/otfautohint/glyphData.py index e6895d634..9a15103be 100644 --- a/python/afdko/otfautohint/glyphData.py +++ b/python/afdko/otfautohint/glyphData.py @@ -48,7 +48,7 @@ class pt(tuple): tl.align = None @classmethod - def setAlign(_cls, vertical=False): + def setAlign(cls, vertical=False): """ Class-level method to control the value of properties a and o @@ -62,19 +62,19 @@ def setAlign(_cls, vertical=False): Note that the internal align variable is thread-specific """ if vertical: - _cls.tl.align = 2 + cls.tl.align = 2 else: - _cls.tl.align = 1 + cls.tl.align = 1 @classmethod - def clearAlign(_cls): + def clearAlign(cls): """ Class-level method to unset the internal align variable so that accessing properties a or o will result in an error """ - _cls.tl.align = None + cls.tl.align = None - def __new__(_cls, x=0, y=0, roundCoords=False): + def __new__(cls, x=0, y=0, roundCoords=False): """ Creates a new pt object initialied with x and y. @@ -86,7 +86,7 @@ def __new__(_cls, x=0, y=0, roundCoords=False): if roundCoords: x = round(x) y = round(y) - return _tuple.__new__(_cls, (x, y)) + return _tuple.__new__(cls, (x, y)) @property def x(self): @@ -254,10 +254,10 @@ class stem(tuple): BandMargin = 30 __slots__ = () - def __new__(_cls, lb=0, rt=0): + def __new__(cls, lb=0, rt=0): if isinstance(lb, tuple): - return _tuple.__new__(_cls, lb) - return _tuple.__new__(_cls, (lb, rt)) + return _tuple.__new__(cls, lb) + return _tuple.__new__(cls, (lb, rt)) @property def lb(self): @@ -289,13 +289,13 @@ def isGhost(self, doBool=False): return "low" if not doBool else True return False - def ghostCompat(a, b): - if a.isGhost(True) == b.isGhost(True): + def ghostCompat(self, other): + if self.isGhost(True) == other.isGhost(True): return False - if a.isGhost() == 'high' or b.isGhost() == 'high': - return a.lb == b.rt + if self.isGhost() == 'high' or other.isGhost() == 'high': + return self.lb == other.rt else: - return a.lb == b.lb + return self.lb == other.lb def isBad(self): """Returns True if the stem is malformed""" @@ -625,19 +625,19 @@ def getAssocFactor(self): l = approximateCubicArcLength(self.s, self.cs, self.ce, self.e) return l / self.assocMatchFactor - def containsPoint(s, p, factor, returnT=False): - if s.is_line: + def containsPoint(self, p, factor, returnT=False): + if self.is_line: # We sometimes want t anyway, so why not? - ds = sqrt(s.s.distsq(s.e)) - d1 = sqrt(s.s.distsq(p)) - d2 = sqrt(s.e.distsq(p)) + ds = sqrt(self.s.distsq(s.e)) + d1 = sqrt(self.s.distsq(p)) + d2 = sqrt(self.e.distsq(p)) iseq = feq(ds, d1 + d2, factor) if not returnT: return iseq else: return iseq, d1 / ds - a, b, c, d = s.cubicParameters() - if abs(s.s.x - s.e.x) > abs(s.s.y - s.e.y): + a, b, c, d = self.cubicParameters() + if abs(self.s.x - s.e.x) > abs(self.s.y - self.e.y): i, j = 0, 1 else: i, j = 1, 0 diff --git a/python/afdko/otfautohint/hinter.py b/python/afdko/otfautohint/hinter.py index 6e71399c6..bb413f2d4 100644 --- a/python/afdko/otfautohint/hinter.py +++ b/python/afdko/otfautohint/hinter.py @@ -1279,7 +1279,7 @@ def closeSegs(self, s1, s2): # subpath and are connected by a route that stays within CloseMerge # So we trace around the s1.pe's subpath looking for pe2 in each # direction and give up once we've iterated the length of the subpath. - for cnt in range(len(self.glyph.subpaths[n.position[0]])): + for _cnt in range(len(self.glyph.subpaths[n.position[0]])): if not ngood and not pgood: return False assert n and p @@ -1896,7 +1896,6 @@ def bestLocation(self, sidx, ul, iSSl, hs0): loc = iSSl[seg.hintval.idx][ul].bestLocation(ul == 0) if loc is not None: return loc - assert False log.warning("No data for %s location of stem %d" % ('lower' if ul == 0 else 'upper', sidx)) return hs0.stems[0][sidx][ul] @@ -2258,19 +2257,19 @@ class glyphHinter: impl = None @classmethod - def initialize(_cls, options, dictRecord, logQueue=None): - _cls.impl = _cls(options, dictRecord) + def initialize(cls, options, dictRecord, logQueue=None): + cls.impl = cls(options, dictRecord) if logQueue is not None: logging_reconfig(logQueue, options.verbose) @classmethod - def hint(_cls, name, glyphTuple=None, fdKey=None): - if _cls.impl is None: + def hint(cls, name, glyphTuple=None, fdKey=None): + if cls.impl is None: raise RuntimeError("glyphHinter implementation not initialized") if isinstance(name, tuple): - return _cls.impl._hint(*name) + return cls.impl._hint(*name) else: - return _cls.impl._hint(name, glyphTuple, fdKey) + return cls.impl._hint(name, glyphTuple, fdKey) def __init__(self, options, dictRecord): self.options = options @@ -2423,7 +2422,7 @@ def compatiblePaths(self, gllist, fddicts): # XXX decide on warning message for these if (gpl == dpl + 1 and gp[-1].isClose() and not dp[-1].isClose()): - for gi in range(i + 1): + for _gi in range(i + 1): gllist[i].addNullClose(si) continue if (dpl == gpl + 1 and dp[-1].isClose() and diff --git a/python/afdko/otfautohint/splitpsdicts.py b/python/afdko/otfautohint/splitpsdicts.py index 4fcd603da..05e446ffa 100644 --- a/python/afdko/otfautohint/splitpsdicts.py +++ b/python/afdko/otfautohint/splitpsdicts.py @@ -120,7 +120,7 @@ def remapDicts(fpath, dictmap): j = 0 indexMap = [] newdictmap = [] - for i, dictspec in enumerate(dictmap): + for dictspec in dictmap: if dictspec.foundGlyph: newdictmap.append(dictspec) indexMap.append(j) diff --git a/tests/otfautohint_test.py b/tests/otfautohint_test.py index 48f5207ba..9d2e9f6b6 100644 --- a/tests/otfautohint_test.py +++ b/tests/otfautohint_test.py @@ -1,9 +1,9 @@ import glob import pytest -from runner import main as runner -from differ import main as differ -from test_utils import get_input_path, get_expected_path, get_temp_file_path +# from runner import main as runner +# from differ import main as differ +from test_utils import get_input_path # get_expected_path, get_temp_file_path from afdko.otfautohint.fdTools import (mergeFDDicts, parseFontInfoFile, FDDict, FontInfoParseError) @@ -43,8 +43,8 @@ def test_no_dominant_h_or_v(): _, font_dicts, _ = parse(path) assert len(font_dicts) > 0 # msgs = [r.getMessage() for r in caplog.records] - # assert "The FDDict 'UPPERCASE' in fontinfo has no DominantH value" in msgs - # assert "The FDDict 'UPPERCASE' in fontinfo has no DominantV value" in msgs + # assert "The FDDict UPPERCASE in fontinfo has no DominantH value" in msgs + # assert "The FDDict UPPERCASE in fontinfo has no DominantV value" in msgs def test_bluefuzz_and_fontname(): From db0152769c2dc5363116251ddc1516f65df8c223 Mon Sep 17 00:00:00 2001 From: Skef Iterum Date: Fri, 24 Mar 2023 03:24:41 -0700 Subject: [PATCH 04/13] Fix bad flake8 correction --- python/afdko/otfautohint/glyphData.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/afdko/otfautohint/glyphData.py b/python/afdko/otfautohint/glyphData.py index 9a15103be..e6bb8301e 100644 --- a/python/afdko/otfautohint/glyphData.py +++ b/python/afdko/otfautohint/glyphData.py @@ -628,7 +628,7 @@ def getAssocFactor(self): def containsPoint(self, p, factor, returnT=False): if self.is_line: # We sometimes want t anyway, so why not? - ds = sqrt(self.s.distsq(s.e)) + ds = sqrt(self.s.distsq(self.e)) d1 = sqrt(self.s.distsq(p)) d2 = sqrt(self.e.distsq(p)) iseq = feq(ds, d1 + d2, factor) @@ -637,7 +637,7 @@ def containsPoint(self, p, factor, returnT=False): else: return iseq, d1 / ds a, b, c, d = self.cubicParameters() - if abs(self.s.x - s.e.x) > abs(self.s.y - self.e.y): + if abs(self.s.x - self.e.x) > abs(self.s.y - self.e.y): i, j = 0, 1 else: i, j = 1, 0 From 6a1c02b70eaa2fd9ce7fcbc20933f7b3213eca58 Mon Sep 17 00:00:00 2001 From: Skef Iterum Date: Wed, 29 Mar 2023 11:43:46 -0700 Subject: [PATCH 05/13] A couple flake8-related typo fixes Port the "non-bulk" tests into the repository --- .../dummy/font.otf.a-z,A-Z,zero-nine.hstm.txt | 17 + .../dummy/font.otf.a-z,A-Z,zero-nine.vstm.txt | 15 + .../dummy/font.otf.all.hstm.txt | 40 + .../dummy/font.otf.all.vstm.txt | 37 + .../expected_output/dummy/font.otf.bot.txt | 79 + .../expected_output/dummy/font.otf.hstm.txt | 22 + .../expected_output/dummy/font.otf.top.txt | 77 + .../expected_output/dummy/font.otf.vstm.txt | 22 + .../data/com.adobe.type.processedHashMap | 6 + .../fontinfo.plist | 39 + .../glyphs/a.glif | 33 + .../glyphs/after.glif | 33 + .../glyphs/before.glif | 33 + .../glyphs/contents.plist | 12 + .../layercontents.plist | 10 + .../hashmap_dflt_layer_hinted.ufo/lib.plist | 12 + .../metainfo.plist | 10 + .../data/com.adobe.type.processedHashMap | 6 + .../fontinfo.plist | 39 + .../glyphs/a.glif | 33 + .../glyphs/after.glif | 33 + .../glyphs/before.glif | 33 + .../glyphs/contents.plist | 12 + .../layercontents.plist | 10 + .../hashmap_dflt_layer_rehinted.ufo/lib.plist | 12 + .../metainfo.plist | 10 + .../dummy/print_dflt_fddict_expected.txt | 23 + .../sparse_masters/MasterSet_Kanji-w0.00.otf | Bin 0 -> 6232 bytes .../MasterSet_Kanji-w439.00.otf | Bin 0 -> 2552 bytes .../MasterSet_Kanji-w599.00.otf | Bin 0 -> 2624 bytes tests/otfautohint_data/input/CID/font.otf | Bin 0 -> 234920 bytes .../otfautohint_data/input/dummy/bad_font.pfa | 413 ++ .../otfautohint_data/input/dummy/bad_font.pfb | Bin 0 -> 13599 bytes .../otfautohint_data/input/dummy/bad_font.ps | Bin 0 -> 219047 bytes .../dummy/bad_privatedict_bluevalues.otf | Bin 0 -> 1616 bytes .../fontinfo.plist | 81 + .../glyphs/A_.glif | 44 + .../glyphs/contents.plist | 8 + .../groups.plist | 122 + .../layercontents.plist | 10 + .../metainfo.plist | 10 + .../input/dummy/bad_privatedict_hstems.otf | Bin 0 -> 1620 bytes .../bad_privatedict_hstems.ufo/fontinfo.plist | 86 + .../bad_privatedict_hstems.ufo/glyphs/A_.glif | 44 + .../glyphs/contents.plist | 8 + .../bad_privatedict_hstems.ufo/groups.plist | 122 + .../layercontents.plist | 10 + .../bad_privatedict_hstems.ufo/metainfo.plist | 10 + .../input/dummy/bad_privatedict_vstems.otf | Bin 0 -> 1620 bytes .../bad_privatedict_vstems.ufo/fontinfo.plist | 86 + .../bad_privatedict_vstems.ufo/glyphs/A_.glif | 44 + .../glyphs/contents.plist | 8 + .../bad_privatedict_vstems.ufo/groups.plist | 122 + .../layercontents.plist | 10 + .../bad_privatedict_vstems.ufo/metainfo.plist | 10 + .../data/com.adobe.type.processedHashMap | 4 + .../input/dummy/big_glyph.ufo/fontinfo.plist | 79 + .../big.glif | 2396 +++++++ .../contents.plist | 8 + .../input/dummy/big_glyph.ufo/glyphs/big.glif | 2067 ++++++ .../dummy/big_glyph.ufo/glyphs/contents.plist | 8 + .../dummy/big_glyph.ufo/layercontents.plist | 14 + .../input/dummy/big_glyph.ufo/metainfo.plist | 10 + .../otfautohint_data/input/dummy/decimals.otf | Bin 0 -> 24964 bytes .../data/com.adobe.type.processedHashMap | 95 + .../input/dummy/decimals.ufo/fontinfo.plist | 167 + .../A_.glif | 54 + .../B_.glif | 97 + .../C_.glif | 60 + .../D_.glif | 54 + .../E_.glif | 47 + .../F_.glif | 44 + .../G_.glif | 89 + .../H_.glif | 46 + .../I_.glif | 37 + .../J_.glif | 48 + .../K_.glif | 45 + .../L_.glif | 38 + .../M_.glif | 65 + .../N_.glif | 65 + .../O_.glif | 62 + .../P_.glif | 57 + .../Q_.glif | 100 + .../R_.glif | 63 + .../S_.glif | 75 + .../T_.glif | 42 + .../U_.glif | 53 + .../V_.glif | 46 + .../W_.glif | 67 + .../X_.glif | 58 + .../Y_.glif | 48 + .../Z_.glif | 43 + .../a.glif | 106 + .../ampersand.glif | 104 + .../asciicircum.glif | 40 + .../asciitilde.glif | 59 + .../asterisk.glif | 45 + .../at.glif | 150 + .../b.glif | 101 + .../backslash.glif | 34 + .../bar.glif | 34 + .../braceleft.glif | 120 + .../braceright.glif | 131 + .../bracketleft.glif | 39 + .../bracketright.glif | 39 + .../c.glif | 60 + .../colon.glif | 67 + .../comma.glif | 78 + .../contents.plist | 188 + .../d.glif | 101 + .../dollar.glif | 101 + .../e.glif | 80 + .../eight.glif | 130 + .../exclam.glif | 68 + .../f.glif | 90 + .../five.glif | 64 + .../four.glif | 67 + .../g.glif | 194 + .../greater.glif | 40 + .../h.glif | 55 + .../hyphen.glif | 34 + .../i.glif | 62 + .../j.glif | 73 + .../k.glif | 45 + .../l.glif | 48 + .../less.glif | 40 + .../m.glif | 95 + .../n.glif | 77 + .../nine.glif | 71 + .../numbersign.glif | 66 + .../o.glif | 62 + .../one.glif | 74 + .../p.glif | 90 + .../parenleft.glif | 44 + .../parenright.glif | 44 + .../period.glif | 51 + .../plus.glif | 42 + .../q.glif | 90 + .../question.glif | 77 + .../quotedbl.glif | 45 + .../quotesingle.glif | 36 + .../r.glif | 72 + .../s.glif | 73 + .../semicolon.glif | 106 + .../seven.glif | 42 + .../six.glif | 71 + .../slash.glif | 34 + .../t.glif | 108 + .../three.glif | 96 + .../two.glif | 57 + .../u.glif | 86 + .../underscore.glif | 34 + .../v.glif | 46 + .../w.glif | 67 + .../x.glif | 58 + .../y.glif | 59 + .../z.glif | 43 + .../zero.glif | 58 + .../input/dummy/decimals.ufo/glyphs/A_.glif | 32 + .../input/dummy/decimals.ufo/glyphs/B_.glif | 49 + .../input/dummy/decimals.ufo/glyphs/C_.glif | 38 + .../input/dummy/decimals.ufo/glyphs/D_.glif | 31 + .../input/dummy/decimals.ufo/glyphs/E_.glif | 24 + .../input/dummy/decimals.ufo/glyphs/F_.glif | 21 + .../input/dummy/decimals.ufo/glyphs/G_.glif | 41 + .../input/dummy/decimals.ufo/glyphs/H_.glif | 23 + .../input/dummy/decimals.ufo/glyphs/I_.glif | 16 + .../input/dummy/decimals.ufo/glyphs/J_.glif | 27 + .../input/dummy/decimals.ufo/glyphs/K_.glif | 24 + .../input/dummy/decimals.ufo/glyphs/L_.glif | 17 + .../input/dummy/decimals.ufo/glyphs/M_.glif | 41 + .../input/dummy/decimals.ufo/glyphs/N_.glif | 31 + .../input/dummy/decimals.ufo/glyphs/O_.glif | 39 + .../input/dummy/decimals.ufo/glyphs/P_.glif | 33 + .../input/dummy/decimals.ufo/glyphs/Q_.glif | 52 + .../input/dummy/decimals.ufo/glyphs/R_.glif | 39 + .../input/dummy/decimals.ufo/glyphs/S_.glif | 52 + .../input/dummy/decimals.ufo/glyphs/T_.glif | 20 + .../input/dummy/decimals.ufo/glyphs/U_.glif | 31 + .../input/dummy/decimals.ufo/glyphs/V_.glif | 25 + .../input/dummy/decimals.ufo/glyphs/W_.glif | 45 + .../input/dummy/decimals.ufo/glyphs/X_.glif | 37 + .../input/dummy/decimals.ufo/glyphs/Y_.glif | 27 + .../input/dummy/decimals.ufo/glyphs/Z_.glif | 21 + .../input/dummy/decimals.ufo/glyphs/a.glif | 50 + .../dummy/decimals.ufo/glyphs/ampersand.glif | 59 + .../decimals.ufo/glyphs/asciicircum.glif | 19 + .../dummy/decimals.ufo/glyphs/asciitilde.glif | 29 + .../dummy/decimals.ufo/glyphs/asterisk.glif | 24 + .../input/dummy/decimals.ufo/glyphs/at.glif | 78 + .../input/dummy/decimals.ufo/glyphs/b.glif | 45 + .../dummy/decimals.ufo/glyphs/backslash.glif | 13 + .../input/dummy/decimals.ufo/glyphs/bar.glif | 13 + .../dummy/decimals.ufo/glyphs/braceleft.glif | 53 + .../dummy/decimals.ufo/glyphs/braceright.glif | 53 + .../decimals.ufo/glyphs/bracketleft.glif | 17 + .../decimals.ufo/glyphs/bracketright.glif | 17 + .../input/dummy/decimals.ufo/glyphs/c.glif | 38 + .../dummy/decimals.ufo/glyphs/colon.glif | 9 + .../dummy/decimals.ufo/glyphs/comma.glif | 30 + .../dummy/decimals.ufo/glyphs/contents.plist | 190 + .../input/dummy/decimals.ufo/glyphs/d.glif | 45 + .../dummy/decimals.ufo/glyphs/dollar.glif | 53 + .../input/dummy/decimals.ufo/glyphs/e.glif | 44 + .../dummy/decimals.ufo/glyphs/eight.glif | 63 + .../dummy/decimals.ufo/glyphs/exclam.glif | 29 + .../input/dummy/decimals.ufo/glyphs/f.glif | 34 + .../input/dummy/decimals.ufo/glyphs/five.glif | 40 + .../input/dummy/decimals.ufo/glyphs/four.glif | 26 + .../input/dummy/decimals.ufo/glyphs/g.glif | 91 + .../dummy/decimals.ufo/glyphs/greater.glif | 19 + .../input/dummy/decimals.ufo/glyphs/h.glif | 32 + .../dummy/decimals.ufo/glyphs/hyphen.glif | 13 + .../input/dummy/decimals.ufo/glyphs/i.glif | 30 + .../input/dummy/decimals.ufo/glyphs/j.glif | 41 + .../input/dummy/decimals.ufo/glyphs/k.glif | 24 + .../input/dummy/decimals.ufo/glyphs/l.glif | 27 + .../dummy/decimals.ufo/glyphs/layerinfo.plist | 5 + .../input/dummy/decimals.ufo/glyphs/less.glif | 19 + .../input/dummy/decimals.ufo/glyphs/m.glif | 47 + .../input/dummy/decimals.ufo/glyphs/n.glif | 32 + .../input/dummy/decimals.ufo/glyphs/nine.glif | 47 + .../dummy/decimals.ufo/glyphs/numbersign.glif | 43 + .../input/dummy/decimals.ufo/glyphs/o.glif | 39 + .../input/dummy/decimals.ufo/glyphs/one.glif | 22 + .../input/dummy/decimals.ufo/glyphs/p.glif | 45 + .../dummy/decimals.ufo/glyphs/parenleft.glif | 23 + .../dummy/decimals.ufo/glyphs/parenright.glif | 23 + .../dummy/decimals.ufo/glyphs/period.glif | 21 + .../input/dummy/decimals.ufo/glyphs/plus.glif | 21 + .../input/dummy/decimals.ufo/glyphs/q.glif | 45 + .../dummy/decimals.ufo/glyphs/question.glif | 43 + .../dummy/decimals.ufo/glyphs/quotedbl.glif | 9 + .../decimals.ufo/glyphs/quotesingle.glif | 15 + .../input/dummy/decimals.ufo/glyphs/r.glif | 30 + .../input/dummy/decimals.ufo/glyphs/s.glif | 50 + .../dummy/decimals.ufo/glyphs/semicolon.glif | 9 + .../dummy/decimals.ufo/glyphs/seven.glif | 20 + .../input/dummy/decimals.ufo/glyphs/six.glif | 47 + .../dummy/decimals.ufo/glyphs/slash.glif | 13 + .../dummy/decimals.ufo/glyphs/space.glif | 5 + .../input/dummy/decimals.ufo/glyphs/t.glif | 36 + .../dummy/decimals.ufo/glyphs/three.glif | 49 + .../input/dummy/decimals.ufo/glyphs/two.glif | 35 + .../input/dummy/decimals.ufo/glyphs/u.glif | 34 + .../dummy/decimals.ufo/glyphs/underscore.glif | 13 + .../input/dummy/decimals.ufo/glyphs/v.glif | 25 + .../input/dummy/decimals.ufo/glyphs/w.glif | 45 + .../input/dummy/decimals.ufo/glyphs/x.glif | 37 + .../input/dummy/decimals.ufo/glyphs/y.glif | 38 + .../input/dummy/decimals.ufo/glyphs/z.glif | 21 + .../input/dummy/decimals.ufo/glyphs/zero.glif | 35 + .../dummy/decimals.ufo/layercontents.plist | 14 + .../input/dummy/decimals.ufo/metainfo.plist | 10 + .../data/com.adobe.type.processedHashMap | 98 + .../dummy/defaultlayer.ufo/fontinfo.plist | 90 + .../dummy/defaultlayer.ufo/glyphs/A_.glif | 52 + .../dummy/defaultlayer.ufo/glyphs/B_.glif | 95 + .../dummy/defaultlayer.ufo/glyphs/C_.glif | 57 + .../dummy/defaultlayer.ufo/glyphs/D_.glif | 52 + .../dummy/defaultlayer.ufo/glyphs/E_.glif | 44 + .../dummy/defaultlayer.ufo/glyphs/F_.glif | 42 + .../dummy/defaultlayer.ufo/glyphs/G_.glif | 63 + .../dummy/defaultlayer.ufo/glyphs/H_.glif | 45 + .../dummy/defaultlayer.ufo/glyphs/I_.glif | 43 + .../dummy/defaultlayer.ufo/glyphs/J_.glif | 49 + .../dummy/defaultlayer.ufo/glyphs/K_.glif | 46 + .../dummy/defaultlayer.ufo/glyphs/L_.glif | 37 + .../dummy/defaultlayer.ufo/glyphs/M_.glif | 71 + .../dummy/defaultlayer.ufo/glyphs/N_.glif | 63 + .../dummy/defaultlayer.ufo/glyphs/O_.glif | 58 + .../dummy/defaultlayer.ufo/glyphs/P_.glif | 55 + .../dummy/defaultlayer.ufo/glyphs/Q_.glif | 111 + .../dummy/defaultlayer.ufo/glyphs/R_.glif | 61 + .../dummy/defaultlayer.ufo/glyphs/S_.glif | 72 + .../dummy/defaultlayer.ufo/glyphs/T_.glif | 39 + .../dummy/defaultlayer.ufo/glyphs/U_.glif | 50 + .../dummy/defaultlayer.ufo/glyphs/V_.glif | 45 + .../dummy/defaultlayer.ufo/glyphs/W_.glif | 66 + .../dummy/defaultlayer.ufo/glyphs/X_.glif | 57 + .../dummy/defaultlayer.ufo/glyphs/Y_.glif | 47 + .../dummy/defaultlayer.ufo/glyphs/Z_.glif | 41 + .../dummy/defaultlayer.ufo/glyphs/a.glif | 103 + .../defaultlayer.ufo/glyphs/ampersand.glif | 104 + .../defaultlayer.ufo/glyphs/asciicircum.glif | 40 + .../defaultlayer.ufo/glyphs/asciitilde.glif | 59 + .../defaultlayer.ufo/glyphs/asterisk.glif | 45 + .../dummy/defaultlayer.ufo/glyphs/at.glif | 111 + .../dummy/defaultlayer.ufo/glyphs/b.glif | 104 + .../defaultlayer.ufo/glyphs/backslash.glif | 34 + .../dummy/defaultlayer.ufo/glyphs/bar.glif | 34 + .../defaultlayer.ufo/glyphs/braceleft.glif | 142 + .../defaultlayer.ufo/glyphs/braceright.glif | 142 + .../defaultlayer.ufo/glyphs/bracketleft.glif | 39 + .../defaultlayer.ufo/glyphs/bracketright.glif | 39 + .../dummy/defaultlayer.ufo/glyphs/c.glif | 57 + .../dummy/defaultlayer.ufo/glyphs/colon.glif | 57 + .../dummy/defaultlayer.ufo/glyphs/comma.glif | 62 + .../defaultlayer.ufo/glyphs/contents.plist | 196 + .../dummy/defaultlayer.ufo/glyphs/d.glif | 104 + .../dummy/defaultlayer.ufo/glyphs/dollar.glif | 89 + .../dummy/defaultlayer.ufo/glyphs/e.glif | 77 + .../dummy/defaultlayer.ufo/glyphs/eight.glif | 130 + .../dummy/defaultlayer.ufo/glyphs/equal.glif | 41 + .../dummy/defaultlayer.ufo/glyphs/exclam.glif | 68 + .../dummy/defaultlayer.ufo/glyphs/f.glif | 55 + .../dummy/defaultlayer.ufo/glyphs/five.glif | 63 + .../dummy/defaultlayer.ufo/glyphs/four.glif | 68 + .../dummy/defaultlayer.ufo/glyphs/g.glif | 205 + .../dummy/defaultlayer.ufo/glyphs/grave.glif | 34 + .../defaultlayer.ufo/glyphs/greater.glif | 38 + .../dummy/defaultlayer.ufo/glyphs/h.glif | 55 + .../dummy/defaultlayer.ufo/glyphs/hyphen.glif | 34 + .../dummy/defaultlayer.ufo/glyphs/i.glif | 63 + .../dummy/defaultlayer.ufo/glyphs/j.glif | 75 + .../dummy/defaultlayer.ufo/glyphs/k.glif | 47 + .../dummy/defaultlayer.ufo/glyphs/l.glif | 49 + .../dummy/defaultlayer.ufo/glyphs/less.glif | 38 + .../dummy/defaultlayer.ufo/glyphs/m.glif | 77 + .../dummy/defaultlayer.ufo/glyphs/n.glif | 86 + .../dummy/defaultlayer.ufo/glyphs/nine.glif | 71 + .../defaultlayer.ufo/glyphs/numbersign.glif | 63 + .../dummy/defaultlayer.ufo/glyphs/o.glif | 58 + .../dummy/defaultlayer.ufo/glyphs/one.glif | 44 + .../dummy/defaultlayer.ufo/glyphs/p.glif | 116 + .../defaultlayer.ufo/glyphs/parenleft.glif | 44 + .../defaultlayer.ufo/glyphs/parenright.glif | 44 + .../defaultlayer.ufo/glyphs/percent.glif | 111 + .../dummy/defaultlayer.ufo/glyphs/period.glif | 42 + .../dummy/defaultlayer.ufo/glyphs/plus.glif | 42 + .../dummy/defaultlayer.ufo/glyphs/q.glif | 92 + .../defaultlayer.ufo/glyphs/question.glif | 77 + .../defaultlayer.ufo/glyphs/quotedbl.glif | 45 + .../defaultlayer.ufo/glyphs/quotesingle.glif | 36 + .../dummy/defaultlayer.ufo/glyphs/r.glif | 80 + .../dummy/defaultlayer.ufo/glyphs/s.glif | 70 + .../defaultlayer.ufo/glyphs/semicolon.glif | 89 + .../dummy/defaultlayer.ufo/glyphs/seven.glif | 42 + .../dummy/defaultlayer.ufo/glyphs/six.glif | 71 + .../dummy/defaultlayer.ufo/glyphs/slash.glif | 34 + .../dummy/defaultlayer.ufo/glyphs/space.glif | 5 + .../dummy/defaultlayer.ufo/glyphs/t.glif | 75 + .../dummy/defaultlayer.ufo/glyphs/three.glif | 96 + .../dummy/defaultlayer.ufo/glyphs/two.glif | 57 + .../dummy/defaultlayer.ufo/glyphs/u.glif | 86 + .../defaultlayer.ufo/glyphs/underscore.glif | 34 + .../dummy/defaultlayer.ufo/glyphs/v.glif | 45 + .../dummy/defaultlayer.ufo/glyphs/w.glif | 95 + .../dummy/defaultlayer.ufo/glyphs/x.glif | 57 + .../dummy/defaultlayer.ufo/glyphs/y.glif | 58 + .../dummy/defaultlayer.ufo/glyphs/z.glif | 41 + .../dummy/defaultlayer.ufo/glyphs/zero.glif | 74 + .../input/dummy/defaultlayer.ufo/groups.plist | 122 + .../defaultlayer.ufo/layercontents.plist | 10 + .../input/dummy/defaultlayer.ufo/lib.plist | 104 + .../dummy/defaultlayer.ufo/metainfo.plist | 10 + .../dummy/empty_metainfo.ufo/metainfo.plist | 4 + tests/otfautohint_data/input/dummy/font.cff | Bin 0 -> 9018 bytes tests/otfautohint_data/input/dummy/font.otf | Bin 0 -> 16628 bytes tests/otfautohint_data/input/dummy/font.pfa | 401 ++ tests/otfautohint_data/input/dummy/font.pfb | Bin 0 -> 13256 bytes tests/otfautohint_data/input/dummy/font.ps | Bin 0 -> 205449 bytes .../data/com.adobe.type.processedHashMap | 98 + .../input/dummy/font.ufo/fontinfo.plist | 90 + .../A_.glif | 52 + .../B_.glif | 95 + .../C_.glif | 57 + .../D_.glif | 52 + .../E_.glif | 44 + .../F_.glif | 42 + .../G_.glif | 63 + .../H_.glif | 45 + .../I_.glif | 43 + .../J_.glif | 49 + .../K_.glif | 46 + .../L_.glif | 37 + .../M_.glif | 59 + .../N_.glif | 74 + .../O_.glif | 58 + .../P_.glif | 55 + .../Q_.glif | 123 + .../R_.glif | 73 + .../S_.glif | 72 + .../T_.glif | 39 + .../U_.glif | 50 + .../V_.glif | 45 + .../W_.glif | 66 + .../X_.glif | 57 + .../Y_.glif | 47 + .../Z_.glif | 41 + .../a.glif | 114 + .../ampersand.glif | 104 + .../asciicircum.glif | 40 + .../asciitilde.glif | 70 + .../asterisk.glif | 45 + .../at.glif | 124 + .../b.glif | 116 + .../backslash.glif | 34 + .../bar.glif | 34 + .../braceleft.glif | 99 + .../braceright.glif | 99 + .../bracketleft.glif | 39 + .../bracketright.glif | 39 + .../c.glif | 57 + .../colon.glif | 57 + .../comma.glif | 52 + .../contents.plist | 194 + .../d.glif | 116 + .../dollar.glif | 89 + .../e.glif | 101 + .../eight.glif | 130 + .../equal.glif | 41 + .../exclam.glif | 77 + .../f.glif | 55 + .../five.glif | 63 + .../four.glif | 68 + .../g.glif | 231 + .../grave.glif | 34 + .../greater.glif | 38 + .../h.glif | 55 + .../hyphen.glif | 34 + .../i.glif | 63 + .../j.glif | 75 + .../k.glif | 47 + .../l.glif | 49 + .../less.glif | 38 + .../m.glif | 77 + .../n.glif | 86 + .../nine.glif | 71 + .../numbersign.glif | 63 + .../o.glif | 58 + .../one.glif | 44 + .../p.glif | 128 + .../parenleft.glif | 44 + .../parenright.glif | 44 + .../percent.glif | 127 + .../period.glif | 42 + .../plus.glif | 42 + .../q.glif | 116 + .../question.glif | 88 + .../quotedbl.glif | 45 + .../quotesingle.glif | 36 + .../r.glif | 90 + .../s.glif | 70 + .../semicolon.glif | 78 + .../seven.glif | 42 + .../six.glif | 71 + .../slash.glif | 34 + .../t.glif | 75 + .../three.glif | 97 + .../two.glif | 57 + .../u.glif | 97 + .../underscore.glif | 34 + .../v.glif | 45 + .../w.glif | 107 + .../x.glif | 57 + .../y.glif | 58 + .../z.glif | 41 + .../zero.glif | 74 + .../input/dummy/font.ufo/glyphs/A_.glif | 44 + .../input/dummy/font.ufo/glyphs/B_.glif | 53 + .../input/dummy/font.ufo/glyphs/C_.glif | 44 + .../input/dummy/font.ufo/glyphs/D_.glif | 38 + .../input/dummy/font.ufo/glyphs/E_.glif | 36 + .../input/dummy/font.ufo/glyphs/F_.glif | 28 + .../input/dummy/font.ufo/glyphs/G_.glif | 45 + .../input/dummy/font.ufo/glyphs/H_.glif | 30 + .../input/dummy/font.ufo/glyphs/I_.glif | 33 + .../input/dummy/font.ufo/glyphs/J_.glif | 33 + .../input/dummy/font.ufo/glyphs/K_.glif | 30 + .../input/dummy/font.ufo/glyphs/L_.glif | 27 + .../input/dummy/font.ufo/glyphs/M_.glif | 44 + .../input/dummy/font.ufo/glyphs/N_.glif | 38 + .../input/dummy/font.ufo/glyphs/O_.glif | 50 + .../input/dummy/font.ufo/glyphs/P_.glif | 37 + .../input/dummy/font.ufo/glyphs/Q_.glif | 54 + .../input/dummy/font.ufo/glyphs/R_.glif | 46 + .../input/dummy/font.ufo/glyphs/S_.glif | 58 + .../input/dummy/font.ufo/glyphs/T_.glif | 26 + .../input/dummy/font.ufo/glyphs/U_.glif | 42 + .../input/dummy/font.ufo/glyphs/V_.glif | 29 + .../input/dummy/font.ufo/glyphs/W_.glif | 49 + .../input/dummy/font.ufo/glyphs/X_.glif | 44 + .../input/dummy/font.ufo/glyphs/Y_.glif | 34 + .../input/dummy/font.ufo/glyphs/Z_.glif | 28 + .../input/dummy/font.ufo/glyphs/a.glif | 62 + .../dummy/font.ufo/glyphs/ampersand.glif | 59 + .../dummy/font.ufo/glyphs/asciicircum.glif | 19 + .../dummy/font.ufo/glyphs/asciitilde.glif | 29 + .../input/dummy/font.ufo/glyphs/asterisk.glif | 24 + .../input/dummy/font.ufo/glyphs/at.glif | 60 + .../input/dummy/font.ufo/glyphs/b.glif | 50 + .../dummy/font.ufo/glyphs/backslash.glif | 13 + .../input/dummy/font.ufo/glyphs/bar.glif | 13 + .../dummy/font.ufo/glyphs/braceleft.glif | 53 + .../dummy/font.ufo/glyphs/braceright.glif | 53 + .../dummy/font.ufo/glyphs/bracketleft.glif | 17 + .../dummy/font.ufo/glyphs/bracketright.glif | 17 + .../input/dummy/font.ufo/glyphs/c.glif | 44 + .../input/dummy/font.ufo/glyphs/colon.glif | 35 + .../input/dummy/font.ufo/glyphs/comma.glif | 30 + .../dummy/font.ufo/glyphs/contents.plist | 196 + .../input/dummy/font.ufo/glyphs/d.glif | 53 + .../input/dummy/font.ufo/glyphs/dollar.glif | 53 + .../input/dummy/font.ufo/glyphs/e.glif | 53 + .../input/dummy/font.ufo/glyphs/eight.glif | 63 + .../input/dummy/font.ufo/glyphs/equal.glif | 19 + .../input/dummy/font.ufo/glyphs/exclam.glif | 29 + .../input/dummy/font.ufo/glyphs/f.glif | 41 + .../input/dummy/font.ufo/glyphs/five.glif | 40 + .../input/dummy/font.ufo/glyphs/four.glif | 26 + .../input/dummy/font.ufo/glyphs/g.glif | 95 + .../input/dummy/font.ufo/glyphs/grave.glif | 13 + .../input/dummy/font.ufo/glyphs/greater.glif | 17 + .../input/dummy/font.ufo/glyphs/h.glif | 40 + .../input/dummy/font.ufo/glyphs/hyphen.glif | 13 + .../input/dummy/font.ufo/glyphs/i.glif | 41 + .../input/dummy/font.ufo/glyphs/j.glif | 47 + .../input/dummy/font.ufo/glyphs/k.glif | 30 + .../input/dummy/font.ufo/glyphs/l.glif | 39 + .../input/dummy/font.ufo/glyphs/less.glif | 17 + .../input/dummy/font.ufo/glyphs/m.glif | 54 + .../input/dummy/font.ufo/glyphs/n.glif | 39 + .../input/dummy/font.ufo/glyphs/nine.glif | 47 + .../dummy/font.ufo/glyphs/numbersign.glif | 31 + .../input/dummy/font.ufo/glyphs/o.glif | 50 + .../input/dummy/font.ufo/glyphs/one.glif | 22 + .../input/dummy/font.ufo/glyphs/p.glif | 50 + .../dummy/font.ufo/glyphs/parenleft.glif | 23 + .../dummy/font.ufo/glyphs/parenright.glif | 23 + .../input/dummy/font.ufo/glyphs/percent.glif | 75 + .../input/dummy/font.ufo/glyphs/period.glif | 21 + .../input/dummy/font.ufo/glyphs/plus.glif | 21 + .../input/dummy/font.ufo/glyphs/q.glif | 50 + .../input/dummy/font.ufo/glyphs/question.glif | 43 + .../input/dummy/font.ufo/glyphs/quotedbl.glif | 23 + .../dummy/font.ufo/glyphs/quotesingle.glif | 15 + .../input/dummy/font.ufo/glyphs/r.glif | 37 + .../input/dummy/font.ufo/glyphs/s.glif | 56 + .../dummy/font.ufo/glyphs/semicolon.glif | 44 + .../input/dummy/font.ufo/glyphs/seven.glif | 20 + .../input/dummy/font.ufo/glyphs/six.glif | 47 + .../input/dummy/font.ufo/glyphs/slash.glif | 13 + .../input/dummy/font.ufo/glyphs/space.glif | 5 + .../input/dummy/font.ufo/glyphs/t.glif | 42 + .../input/dummy/font.ufo/glyphs/three.glif | 49 + .../input/dummy/font.ufo/glyphs/two.glif | 35 + .../input/dummy/font.ufo/glyphs/u.glif | 45 + .../dummy/font.ufo/glyphs/underscore.glif | 13 + .../input/dummy/font.ufo/glyphs/v.glif | 29 + .../input/dummy/font.ufo/glyphs/w.glif | 49 + .../input/dummy/font.ufo/glyphs/x.glif | 44 + .../input/dummy/font.ufo/glyphs/y.glif | 45 + .../input/dummy/font.ufo/glyphs/z.glif | 28 + .../input/dummy/font.ufo/glyphs/zero.glif | 49 + .../input/dummy/font.ufo/groups.plist | 122 + .../input/dummy/font.ufo/layercontents.plist | 14 + .../input/dummy/font.ufo/lib.plist | 104 + .../input/dummy/font.ufo/metainfo.plist | 10 + tests/otfautohint_data/input/dummy/fontinfo | 112 + .../otfautohint_data/input/dummy/fontinfo_fdd | 111 + tests/otfautohint_data/input/dummy/glyphs.txt | 1 + .../data/com.adobe.type.processedHashMap | 12 + .../dummy/hashmap_advance.ufo/fontinfo.plist | 39 + .../contents.plist | 24 + .../no_width-no_height.glif | 32 + .../no_width-some_height.glif | 33 + .../no_width-zero_height.glif | 32 + .../some_width-no_height.glif | 33 + .../some_width-some_height.glif | 33 + .../some_width-zero_height.glif | 33 + .../zero_width-no_height.glif | 32 + .../zero_width-some_height.glif | 33 + .../zero_width-zero_height.glif | 32 + .../hashmap_advance.ufo/glyphs/contents.plist | 24 + .../glyphs/no_width-no_height.glif | 11 + .../glyphs/no_width-some_height.glif | 12 + .../glyphs/no_width-zero_height.glif | 12 + .../glyphs/some_width-no_height.glif | 12 + .../glyphs/some_width-some_height.glif | 12 + .../glyphs/some_width-zero_height.glif | 12 + .../glyphs/zero_width-no_height.glif | 12 + .../glyphs/zero_width-some_height.glif | 12 + .../glyphs/zero_width-zero_height.glif | 12 + .../hashmap_advance.ufo/layercontents.plist | 14 + .../input/dummy/hashmap_advance.ufo/lib.plist | 18 + .../dummy/hashmap_advance.ufo/metainfo.plist | 10 + .../hashmap_dflt_layer.ufo/fontinfo.plist | 39 + .../hashmap_dflt_layer.ufo/glyphs/a.glif | 12 + .../hashmap_dflt_layer.ufo/glyphs/after.glif | 7 + .../hashmap_dflt_layer.ufo/glyphs/before.glif | 7 + .../glyphs/contents.plist | 12 + .../layercontents.plist | 10 + .../dummy/hashmap_dflt_layer.ufo/lib.plist | 12 + .../hashmap_dflt_layer.ufo/metainfo.plist | 10 + .../data/com.adobe.type.processedHashMap | 4 + .../hashmap_glyph_changed.ufo/fontinfo.plist | 90 + .../a.glif | 114 + .../contents.plist | 8 + .../hashmap_glyph_changed.ufo/glyphs/a.glif | 62 + .../glyphs/contents.plist | 8 + .../layercontents.plist | 14 + .../hashmap_glyph_changed.ufo/metainfo.plist | 10 + .../data/com.adobe.type.processedHashMap | 4 + .../hashmap_new_version.ufo/fontinfo.plist | 90 + .../a.glif | 114 + .../contents.plist | 8 + .../hashmap_new_version.ufo/glyphs/a.glif | 62 + .../glyphs/contents.plist | 8 + .../layercontents.plist | 14 + .../hashmap_new_version.ufo/metainfo.plist | 10 + .../data/com.adobe.type.processedHashMap | 3 + .../hashmap_no_version.ufo/fontinfo.plist | 90 + .../a.glif | 114 + .../contents.plist | 8 + .../hashmap_no_version.ufo/glyphs/a.glif | 62 + .../glyphs/contents.plist | 8 + .../layercontents.plist | 14 + .../hashmap_no_version.ufo/metainfo.plist | 10 + .../data/com.adobe.type.processedHashMap | 4 + .../hashmap_old_version.ufo/fontinfo.plist | 90 + .../a.glif | 114 + .../contents.plist | 8 + .../hashmap_old_version.ufo/glyphs/a.glif | 62 + .../glyphs/contents.plist | 8 + .../layercontents.plist | 14 + .../hashmap_old_version.ufo/metainfo.plist | 10 + .../data/com.adobe.type.processedHashMap | 4 + .../fontinfo.plist | 90 + .../a.glif | 114 + .../contents.plist | 8 + .../glyphs/a.glif | 62 + .../glyphs/contents.plist | 8 + .../layercontents.plist | 14 + .../metainfo.plist | 10 + .../data/com.adobe.type.processedHashMap | 6 + .../hashmap_transform.ufo/fontinfo.plist | 39 + .../a.glif | 33 + .../after.glif | 33 + .../before.glif | 33 + .../contents.plist | 12 + .../dummy/hashmap_transform.ufo/glyphs/a.glif | 12 + .../hashmap_transform.ufo/glyphs/after.glif | 7 + .../hashmap_transform.ufo/glyphs/before.glif | 7 + .../glyphs/contents.plist | 12 + .../hashmap_transform.ufo/layercontents.plist | 14 + .../dummy/hashmap_transform.ufo/lib.plist | 12 + .../hashmap_transform.ufo/metainfo.plist | 10 + .../data/com.adobe.type.processedHashMap | 5 + .../fontinfo.plist | 90 + .../contents.plist | 10 + .../exclam.glif | 39 + .../exclamdown.glif | 39 + .../glyphs/contents.plist | 10 + .../glyphs/exclam.glif | 18 + .../glyphs/exclamdown.glif | 7 + .../layercontents.plist | 14 + .../hashmap_unnormalized_floats.ufo/lib.plist | 11 + .../metainfo.plist | 10 + .../incomplete_glyphorder.ufo/fontinfo.plist | 90 + .../incomplete_glyphorder.ufo/glyphs/A_.glif | 44 + .../incomplete_glyphorder.ufo/glyphs/B_.glif | 53 + .../incomplete_glyphorder.ufo/glyphs/C_.glif | 44 + .../incomplete_glyphorder.ufo/glyphs/D_.glif | 38 + .../incomplete_glyphorder.ufo/glyphs/E_.glif | 36 + .../incomplete_glyphorder.ufo/glyphs/F_.glif | 28 + .../incomplete_glyphorder.ufo/glyphs/G_.glif | 45 + .../incomplete_glyphorder.ufo/glyphs/H_.glif | 30 + .../incomplete_glyphorder.ufo/glyphs/I_.glif | 33 + .../incomplete_glyphorder.ufo/glyphs/J_.glif | 33 + .../incomplete_glyphorder.ufo/glyphs/K_.glif | 30 + .../incomplete_glyphorder.ufo/glyphs/L_.glif | 27 + .../incomplete_glyphorder.ufo/glyphs/M_.glif | 44 + .../incomplete_glyphorder.ufo/glyphs/N_.glif | 38 + .../incomplete_glyphorder.ufo/glyphs/O_.glif | 50 + .../incomplete_glyphorder.ufo/glyphs/P_.glif | 37 + .../incomplete_glyphorder.ufo/glyphs/Q_.glif | 54 + .../incomplete_glyphorder.ufo/glyphs/R_.glif | 46 + .../incomplete_glyphorder.ufo/glyphs/S_.glif | 58 + .../incomplete_glyphorder.ufo/glyphs/T_.glif | 26 + .../incomplete_glyphorder.ufo/glyphs/U_.glif | 42 + .../incomplete_glyphorder.ufo/glyphs/V_.glif | 29 + .../incomplete_glyphorder.ufo/glyphs/W_.glif | 49 + .../incomplete_glyphorder.ufo/glyphs/X_.glif | 44 + .../incomplete_glyphorder.ufo/glyphs/Y_.glif | 34 + .../incomplete_glyphorder.ufo/glyphs/Z_.glif | 28 + .../incomplete_glyphorder.ufo/glyphs/a.glif | 62 + .../glyphs/ampersand.glif | 59 + .../glyphs/asciicircum.glif | 19 + .../glyphs/asciitilde.glif | 29 + .../glyphs/asterisk.glif | 24 + .../incomplete_glyphorder.ufo/glyphs/at.glif | 60 + .../incomplete_glyphorder.ufo/glyphs/b.glif | 50 + .../glyphs/backslash.glif | 13 + .../incomplete_glyphorder.ufo/glyphs/bar.glif | 13 + .../glyphs/braceleft.glif | 53 + .../glyphs/braceright.glif | 53 + .../glyphs/bracketleft.glif | 17 + .../glyphs/bracketright.glif | 17 + .../incomplete_glyphorder.ufo/glyphs/c.glif | 44 + .../glyphs/colon.glif | 35 + .../glyphs/comma.glif | 30 + .../glyphs/contents.plist | 196 + .../incomplete_glyphorder.ufo/glyphs/d.glif | 53 + .../glyphs/dollar.glif | 53 + .../incomplete_glyphorder.ufo/glyphs/e.glif | 53 + .../glyphs/eight.glif | 63 + .../glyphs/equal.glif | 19 + .../glyphs/exclam.glif | 29 + .../incomplete_glyphorder.ufo/glyphs/f.glif | 41 + .../glyphs/five.glif | 40 + .../glyphs/four.glif | 26 + .../incomplete_glyphorder.ufo/glyphs/g.glif | 95 + .../glyphs/grave.glif | 13 + .../glyphs/greater.glif | 17 + .../incomplete_glyphorder.ufo/glyphs/h.glif | 40 + .../glyphs/hyphen.glif | 13 + .../incomplete_glyphorder.ufo/glyphs/i.glif | 41 + .../incomplete_glyphorder.ufo/glyphs/j.glif | 47 + .../incomplete_glyphorder.ufo/glyphs/k.glif | 30 + .../incomplete_glyphorder.ufo/glyphs/l.glif | 39 + .../glyphs/less.glif | 17 + .../incomplete_glyphorder.ufo/glyphs/m.glif | 54 + .../incomplete_glyphorder.ufo/glyphs/n.glif | 39 + .../glyphs/nine.glif | 47 + .../glyphs/numbersign.glif | 31 + .../incomplete_glyphorder.ufo/glyphs/o.glif | 50 + .../incomplete_glyphorder.ufo/glyphs/one.glif | 22 + .../incomplete_glyphorder.ufo/glyphs/p.glif | 50 + .../glyphs/parenleft.glif | 23 + .../glyphs/parenright.glif | 23 + .../glyphs/percent.glif | 75 + .../glyphs/period.glif | 21 + .../glyphs/plus.glif | 21 + .../incomplete_glyphorder.ufo/glyphs/q.glif | 50 + .../glyphs/question.glif | 43 + .../glyphs/quotedbl.glif | 23 + .../glyphs/quotesingle.glif | 15 + .../incomplete_glyphorder.ufo/glyphs/r.glif | 37 + .../incomplete_glyphorder.ufo/glyphs/s.glif | 56 + .../glyphs/semicolon.glif | 44 + .../glyphs/seven.glif | 20 + .../incomplete_glyphorder.ufo/glyphs/six.glif | 47 + .../glyphs/slash.glif | 13 + .../glyphs/space.glif | 5 + .../incomplete_glyphorder.ufo/glyphs/t.glif | 42 + .../glyphs/three.glif | 49 + .../incomplete_glyphorder.ufo/glyphs/two.glif | 35 + .../incomplete_glyphorder.ufo/glyphs/u.glif | 45 + .../glyphs/underscore.glif | 13 + .../incomplete_glyphorder.ufo/glyphs/v.glif | 29 + .../incomplete_glyphorder.ufo/glyphs/w.glif | 49 + .../incomplete_glyphorder.ufo/glyphs/x.glif | 44 + .../incomplete_glyphorder.ufo/glyphs/y.glif | 45 + .../incomplete_glyphorder.ufo/glyphs/z.glif | 28 + .../glyphs/zero.glif | 49 + .../incomplete_glyphorder.ufo/groups.plist | 122 + .../layercontents.plist | 10 + .../dummy/incomplete_glyphorder.ufo/lib.plist | 62 + .../incomplete_glyphorder.ufo/metainfo.plist | 10 + .../incomplete_metainfo.ufo/metainfo.plist | 8 + .../data/com.adobe.type.processedHashMap | 4 + .../input/dummy/layers.ufo/fontinfo.plist | 37 + .../glyphs.background/contents.plist | 5 + .../glyphs.background/layerinfo.plist | 8 + .../a.glif | 42 + .../contents.plist | 8 + .../dummy/layers.ufo/glyphs.condensed/a.glif | 13 + .../glyphs.condensed/contents.plist | 8 + .../glyphs.condensed/layerinfo.plist | 8 + .../layers.ufo/glyphs.other layer/a.glif | 13 + .../glyphs.other layer/contents.plist | 8 + .../glyphs.other layer/layerinfo.plist | 8 + .../input/dummy/layers.ufo/glyphs/a.glif | 21 + .../dummy/layers.ufo/glyphs/contents.plist | 8 + .../dummy/layers.ufo/glyphs/layerinfo.plist | 8 + .../dummy/layers.ufo/layercontents.plist | 26 + .../input/dummy/layers.ufo/lib.plist | 266 + .../input/dummy/layers.ufo/metainfo.plist | 10 + .../input/dummy/mm0/font0.otf | Bin 0 -> 116492 bytes .../input/dummy/mm0/font0.ufo/fontinfo.plist | 94 + .../dummy/mm0/font0.ufo/glyphs/A_E_.glif | 89 + .../dummy/mm0/font0.ufo/glyphs/A_acute.glif | 67 + .../dummy/mm0/font0.ufo/glyphs/A_breve.glif | 65 + .../mm0/font0.ufo/glyphs/A_breveacute.glif | 79 + .../mm0/font0.ufo/glyphs/A_brevecyr.glif | 83 + .../mm0/font0.ufo/glyphs/A_brevedotbelow.glif | 79 + .../mm0/font0.ufo/glyphs/A_brevegrave.glif | 79 + .../mm0/font0.ufo/glyphs/A_brevehoi.glif | 81 + .../mm0/font0.ufo/glyphs/A_brevetilde.glif | 93 + .../dummy/mm0/font0.ufo/glyphs/A_caron.glif | 59 + .../mm0/font0.ufo/glyphs/A_circumflex.glif | 59 + .../font0.ufo/glyphs/A_circumflexacute.glif | 73 + .../glyphs/A_circumflexdotbelow.glif | 73 + .../font0.ufo/glyphs/A_circumflexgrave.glif | 73 + .../mm0/font0.ufo/glyphs/A_circumflexhoi.glif | 75 + .../font0.ufo/glyphs/A_circumflextilde.glif | 87 + .../dummy/mm0/font0.ufo/glyphs/A_cyr.glif | 52 + .../mm0/font0.ufo/glyphs/A_dieresis.glif | 77 + .../mm0/font0.ufo/glyphs/A_dotbelow.glif | 63 + .../dummy/mm0/font0.ufo/glyphs/A_grave.glif | 67 + .../dummy/mm0/font0.ufo/glyphs/A_hoi.glif | 65 + .../dummy/mm0/font0.ufo/glyphs/A_ie.glif | 97 + .../dummy/mm0/font0.ufo/glyphs/A_lpha.glif | 49 + .../mm0/font0.ufo/glyphs/A_lphatonos.glif | 67 + .../dummy/mm0/font0.ufo/glyphs/A_macron.glif | 55 + .../dummy/mm0/font0.ufo/glyphs/A_ogonek.glif | 74 + .../dummy/mm0/font0.ufo/glyphs/A_ring.glif | 77 + .../dummy/mm0/font0.ufo/glyphs/A_tilde.glif | 77 + .../input/dummy/mm0/font0.ufo/glyphs/B_e.glif | 72 + .../dummy/mm0/font0.ufo/glyphs/B_eta.glif | 86 + .../dummy/mm0/font0.ufo/glyphs/C_acute.glif | 72 + .../dummy/mm0/font0.ufo/glyphs/C_caron.glif | 64 + .../dummy/mm0/font0.ufo/glyphs/C_cedilla.glif | 79 + .../mm0/font0.ufo/glyphs/C_circumflex.glif | 64 + .../mm0/font0.ufo/glyphs/C_dotaccent.glif | 68 + .../dummy/mm0/font0.ufo/glyphs/C_he.glif | 72 + .../mm0/font0.ufo/glyphs/C_hedescender.glif | 78 + .../dummy/mm0/font0.ufo/glyphs/C_hi.glif | 68 + .../dummy/mm0/font0.ufo/glyphs/D_caron.glif | 80 + .../dummy/mm0/font0.ufo/glyphs/D_croat.glif | 76 + .../mm0/font0.ufo/glyphs/D_dotbelow.glif | 84 + .../input/dummy/mm0/font0.ufo/glyphs/D_e.glif | 67 + .../dummy/mm0/font0.ufo/glyphs/D_elta.glif | 25 + .../dummy/mm0/font0.ufo/glyphs/D_je.glif | 66 + .../mm0/font0.ufo/glyphs/D_linebelow.glif | 76 + .../dummy/mm0/font0.ufo/glyphs/D_ze.glif | 68 + .../dummy/mm0/font0.ufo/glyphs/D_zhe.glif | 85 + .../dummy/mm0/font0.ufo/glyphs/E_acute.glif | 98 + .../dummy/mm0/font0.ufo/glyphs/E_breve.glif | 96 + .../dummy/mm0/font0.ufo/glyphs/E_caron.glif | 90 + .../mm0/font0.ufo/glyphs/E_circumflex.glif | 90 + .../font0.ufo/glyphs/E_circumflexacute.glif | 104 + .../glyphs/E_circumflexdotbelow.glif | 104 + .../font0.ufo/glyphs/E_circumflexgrave.glif | 104 + .../mm0/font0.ufo/glyphs/E_circumflexhoi.glif | 106 + .../font0.ufo/glyphs/E_circumflextilde.glif | 118 + .../dummy/mm0/font0.ufo/glyphs/E_cyr.glif | 60 + .../mm0/font0.ufo/glyphs/E_dieresis.glif | 108 + .../mm0/font0.ufo/glyphs/E_dotaccent.glif | 94 + .../mm0/font0.ufo/glyphs/E_dotbelow.glif | 94 + .../input/dummy/mm0/font0.ufo/glyphs/E_f.glif | 81 + .../dummy/mm0/font0.ufo/glyphs/E_grave.glif | 98 + .../dummy/mm0/font0.ufo/glyphs/E_hoi.glif | 96 + .../input/dummy/mm0/font0.ufo/glyphs/E_l.glif | 78 + .../input/dummy/mm0/font0.ufo/glyphs/E_m.glif | 80 + .../dummy/mm0/font0.ufo/glyphs/E_macron.glif | 86 + .../input/dummy/mm0/font0.ufo/glyphs/E_n.glif | 92 + .../mm0/font0.ufo/glyphs/E_ndescender.glif | 90 + .../dummy/mm0/font0.ufo/glyphs/E_ng.glif | 65 + .../dummy/mm0/font0.ufo/glyphs/E_ogonek.glif | 105 + .../dummy/mm0/font0.ufo/glyphs/E_psilon.glif | 80 + .../mm0/font0.ufo/glyphs/E_psilontonos.glif | 98 + .../input/dummy/mm0/font0.ufo/glyphs/E_r.glif | 71 + .../input/dummy/mm0/font0.ufo/glyphs/E_s.glif | 54 + .../mm0/font0.ufo/glyphs/E_sdescender.glif | 76 + .../dummy/mm0/font0.ufo/glyphs/E_ta.glif | 92 + .../dummy/mm0/font0.ufo/glyphs/E_tatonos.glif | 110 + .../dummy/mm0/font0.ufo/glyphs/E_th.glif | 65 + .../dummy/mm0/font0.ufo/glyphs/E_tilde.glif | 108 + .../dummy/mm0/font0.ufo/glyphs/E_uro.glif | 61 + .../dummy/mm0/font0.ufo/glyphs/F_ita.glif | 44 + .../dummy/mm0/font0.ufo/glyphs/G_amma.glif | 49 + .../dummy/mm0/font0.ufo/glyphs/G_breve.glif | 83 + .../dummy/mm0/font0.ufo/glyphs/G_caron.glif | 77 + .../mm0/font0.ufo/glyphs/G_circumflex.glif | 77 + .../mm0/font0.ufo/glyphs/G_commaaccent.glif | 89 + .../mm0/font0.ufo/glyphs/G_dotaccent.glif | 81 + .../mm0/font0.ufo/glyphs/G_ermandbls.glif | 75 + .../dummy/mm0/font0.ufo/glyphs/G_he.glif | 63 + .../mm0/font0.ufo/glyphs/G_hestroke.glif | 55 + .../dummy/mm0/font0.ufo/glyphs/G_heup.glif | 49 + .../dummy/mm0/font0.ufo/glyphs/G_je.glif | 78 + .../dummy/mm0/font0.ufo/glyphs/G_macron.glif | 73 + .../input/dummy/mm0/font0.ufo/glyphs/H_a.glif | 68 + .../mm0/font0.ufo/glyphs/H_adescender.glif | 66 + .../dummy/mm0/font0.ufo/glyphs/H_ard.glif | 72 + .../dummy/mm0/font0.ufo/glyphs/H_bar.glif | 87 + .../mm0/font0.ufo/glyphs/H_brevebelow.glif | 108 + .../mm0/font0.ufo/glyphs/H_circumflex.glif | 102 + .../mm0/font0.ufo/glyphs/H_dotbelow.glif | 106 + .../dummy/mm0/font0.ufo/glyphs/I_J_.glif | 81 + .../dummy/mm0/font0.ufo/glyphs/I_acute.glif | 70 + .../dummy/mm0/font0.ufo/glyphs/I_caron.glif | 62 + .../mm0/font0.ufo/glyphs/I_circumflex.glif | 62 + .../dummy/mm0/font0.ufo/glyphs/I_cyr.glif | 78 + .../mm0/font0.ufo/glyphs/I_dieresis.glif | 80 + .../mm0/font0.ufo/glyphs/I_dotaccent.glif | 66 + .../mm0/font0.ufo/glyphs/I_dotbelow.glif | 66 + .../input/dummy/mm0/font0.ufo/glyphs/I_e.glif | 83 + .../dummy/mm0/font0.ufo/glyphs/I_ebreve.glif | 114 + .../dummy/mm0/font0.ufo/glyphs/I_egrave.glif | 98 + .../dummy/mm0/font0.ufo/glyphs/I_eukran.glif | 57 + .../dummy/mm0/font0.ufo/glyphs/I_grave.glif | 70 + .../mm0/font0.ufo/glyphs/I_gravecyr.glif | 104 + .../dummy/mm0/font0.ufo/glyphs/I_hoi.glif | 68 + .../dummy/mm0/font0.ufo/glyphs/I_macron.glif | 58 + .../mm0/font0.ufo/glyphs/I_macroncyr.glif | 92 + .../input/dummy/mm0/font0.ufo/glyphs/I_o.glif | 108 + .../dummy/mm0/font0.ufo/glyphs/I_ogonek.glif | 77 + .../dummy/mm0/font0.ufo/glyphs/I_ota.glif | 52 + .../mm0/font0.ufo/glyphs/I_otadieresis.glif | 80 + .../mm0/font0.ufo/glyphs/I_otatonos.glif | 70 + .../dummy/mm0/font0.ufo/glyphs/I_short.glif | 120 + .../dummy/mm0/font0.ufo/glyphs/I_tilde.glif | 80 + .../dummy/mm0/font0.ufo/glyphs/I_ukran.glif | 52 + .../dummy/mm0/font0.ufo/glyphs/I_zhitsa.glif | 40 + .../mm0/font0.ufo/glyphs/J_circumflex.glif | 68 + .../input/dummy/mm0/font0.ufo/glyphs/J_e.glif | 58 + .../input/dummy/mm0/font0.ufo/glyphs/K_a.glif | 89 + .../mm0/font0.ufo/glyphs/K_abashkir.glif | 94 + .../mm0/font0.ufo/glyphs/K_adescender.glif | 95 + .../dummy/mm0/font0.ufo/glyphs/K_appa.glif | 80 + .../mm0/font0.ufo/glyphs/K_commaaccent.glif | 102 + .../dummy/mm0/font0.ufo/glyphs/K_je.glif | 115 + .../dummy/mm0/font0.ufo/glyphs/L_acute.glif | 77 + .../dummy/mm0/font0.ufo/glyphs/L_ambda.glif | 33 + .../dummy/mm0/font0.ufo/glyphs/L_caron.glif | 73 + .../mm0/font0.ufo/glyphs/L_commaaccent.glif | 81 + .../dummy/mm0/font0.ufo/glyphs/L_dot.glif | 73 + .../mm0/font0.ufo/glyphs/L_dotbelow.glif | 73 + .../font0.ufo/glyphs/L_dotbelowmacron.glif | 79 + .../dummy/mm0/font0.ufo/glyphs/L_je.glif | 101 + .../mm0/font0.ufo/glyphs/L_linebelow.glif | 65 + .../dummy/mm0/font0.ufo/glyphs/L_slash.glif | 60 + .../dummy/mm0/font0.ufo/glyphs/M_acute.glif | 98 + .../mm0/font0.ufo/glyphs/M_dotbelow.glif | 94 + .../input/dummy/mm0/font0.ufo/glyphs/M_u.glif | 80 + .../dummy/mm0/font0.ufo/glyphs/N_acute.glif | 69 + .../dummy/mm0/font0.ufo/glyphs/N_caron.glif | 61 + .../mm0/font0.ufo/glyphs/N_commaaccent.glif | 73 + .../mm0/font0.ufo/glyphs/N_dotaccent.glif | 65 + .../mm0/font0.ufo/glyphs/N_dotbelow.glif | 65 + .../dummy/mm0/font0.ufo/glyphs/N_grave.glif | 69 + .../dummy/mm0/font0.ufo/glyphs/N_je.glif | 104 + .../mm0/font0.ufo/glyphs/N_linebelow.glif | 57 + .../dummy/mm0/font0.ufo/glyphs/N_tilde.glif | 79 + .../input/dummy/mm0/font0.ufo/glyphs/N_u.glif | 51 + .../dummy/mm0/font0.ufo/glyphs/O_E_.glif | 86 + .../dummy/mm0/font0.ufo/glyphs/O_acute.glif | 64 + .../dummy/mm0/font0.ufo/glyphs/O_barcyr.glif | 55 + .../dummy/mm0/font0.ufo/glyphs/O_breve.glif | 62 + .../dummy/mm0/font0.ufo/glyphs/O_caron.glif | 56 + .../mm0/font0.ufo/glyphs/O_circumflex.glif | 56 + .../font0.ufo/glyphs/O_circumflexacute.glif | 70 + .../glyphs/O_circumflexdotbelow.glif | 70 + .../font0.ufo/glyphs/O_circumflexgrave.glif | 70 + .../mm0/font0.ufo/glyphs/O_circumflexhoi.glif | 72 + .../font0.ufo/glyphs/O_circumflextilde.glif | 84 + .../dummy/mm0/font0.ufo/glyphs/O_cyr.glif | 49 + .../mm0/font0.ufo/glyphs/O_dieresis.glif | 74 + .../mm0/font0.ufo/glyphs/O_dieresiscyr.glif | 74 + .../mm0/font0.ufo/glyphs/O_dotbelow.glif | 60 + .../dummy/mm0/font0.ufo/glyphs/O_grave.glif | 64 + .../dummy/mm0/font0.ufo/glyphs/O_hoi.glif | 62 + .../dummy/mm0/font0.ufo/glyphs/O_horn.glif | 73 + .../mm0/font0.ufo/glyphs/O_hornacute.glif | 85 + .../mm0/font0.ufo/glyphs/O_horndotbelow.glif | 81 + .../mm0/font0.ufo/glyphs/O_horngrave.glif | 85 + .../dummy/mm0/font0.ufo/glyphs/O_hornhoi.glif | 83 + .../mm0/font0.ufo/glyphs/O_horntilde.glif | 95 + .../mm0/font0.ufo/glyphs/O_hungarumlaut.glif | 74 + .../dummy/mm0/font0.ufo/glyphs/O_macron.glif | 52 + .../dummy/mm0/font0.ufo/glyphs/O_mega.glif | 59 + .../mm0/font0.ufo/glyphs/O_megatonos.glif | 88 + .../dummy/mm0/font0.ufo/glyphs/O_micron.glif | 46 + .../mm0/font0.ufo/glyphs/O_microntonos.glif | 64 + .../dummy/mm0/font0.ufo/glyphs/O_slash.glif | 44 + .../dummy/mm0/font0.ufo/glyphs/O_tilde.glif | 74 + .../dummy/mm0/font0.ufo/glyphs/P_alochka.glif | 52 + .../input/dummy/mm0/font0.ufo/glyphs/P_e.glif | 79 + .../dummy/mm0/font0.ufo/glyphs/P_hi.glif | 81 + .../input/dummy/mm0/font0.ufo/glyphs/P_i.glif | 79 + .../dummy/mm0/font0.ufo/glyphs/P_si.glif | 77 + .../dummy/mm0/font0.ufo/glyphs/R_acute.glif | 107 + .../dummy/mm0/font0.ufo/glyphs/R_caron.glif | 99 + .../mm0/font0.ufo/glyphs/R_commaaccent.glif | 111 + .../mm0/font0.ufo/glyphs/R_dotbelow.glif | 103 + .../font0.ufo/glyphs/R_dotbelowmacron.glif | 109 + .../dummy/mm0/font0.ufo/glyphs/R_ho.glif | 71 + .../mm0/font0.ufo/glyphs/R_linebelow.glif | 95 + .../dummy/mm0/font0.ufo/glyphs/S_acute.glif | 86 + .../dummy/mm0/font0.ufo/glyphs/S_caron.glif | 78 + .../dummy/mm0/font0.ufo/glyphs/S_cedilla.glif | 93 + .../dummy/mm0/font0.ufo/glyphs/S_chwa.glif | 49 + .../dummy/mm0/font0.ufo/glyphs/S_chwacyr.glif | 46 + .../mm0/font0.ufo/glyphs/S_circumflex.glif | 78 + .../mm0/font0.ufo/glyphs/S_commaaccent.glif | 90 + .../mm0/font0.ufo/glyphs/S_dotaccent.glif | 82 + .../mm0/font0.ufo/glyphs/S_dotbelow.glif | 82 + .../dummy/mm0/font0.ufo/glyphs/S_ha.glif | 105 + .../dummy/mm0/font0.ufo/glyphs/S_hcha.glif | 101 + .../dummy/mm0/font0.ufo/glyphs/S_hha.glif | 69 + .../dummy/mm0/font0.ufo/glyphs/S_igma.glif | 33 + .../dummy/mm0/font0.ufo/glyphs/S_oft.glif | 64 + .../dummy/mm0/font0.ufo/glyphs/T_au.glif | 56 + .../dummy/mm0/font0.ufo/glyphs/T_bar.glif | 51 + .../dummy/mm0/font0.ufo/glyphs/T_caron.glif | 66 + .../dummy/mm0/font0.ufo/glyphs/T_cedilla.glif | 81 + .../mm0/font0.ufo/glyphs/T_commaaccent.glif | 78 + .../mm0/font0.ufo/glyphs/T_dotbelow.glif | 70 + .../input/dummy/mm0/font0.ufo/glyphs/T_e.glif | 56 + .../dummy/mm0/font0.ufo/glyphs/T_heta.glif | 57 + .../dummy/mm0/font0.ufo/glyphs/T_horn.glif | 61 + .../mm0/font0.ufo/glyphs/T_linebelow.glif | 62 + .../dummy/mm0/font0.ufo/glyphs/T_se.glif | 78 + .../dummy/mm0/font0.ufo/glyphs/T_she.glif | 72 + .../dummy/mm0/font0.ufo/glyphs/U_acute.glif | 78 + .../mm0/font0.ufo/glyphs/U_acutedblcyr.glif | 90 + .../dummy/mm0/font0.ufo/glyphs/U_breve.glif | 76 + .../dummy/mm0/font0.ufo/glyphs/U_caron.glif | 70 + .../mm0/font0.ufo/glyphs/U_circumflex.glif | 70 + .../dummy/mm0/font0.ufo/glyphs/U_cyr.glif | 54 + .../mm0/font0.ufo/glyphs/U_dieresis.glif | 88 + .../mm0/font0.ufo/glyphs/U_dieresisacute.glif | 102 + .../mm0/font0.ufo/glyphs/U_dieresiscaron.glif | 98 + .../mm0/font0.ufo/glyphs/U_dieresisgrave.glif | 102 + .../font0.ufo/glyphs/U_dieresismacron.glif | 94 + .../mm0/font0.ufo/glyphs/U_dotbelow.glif | 74 + .../dummy/mm0/font0.ufo/glyphs/U_grave.glif | 78 + .../dummy/mm0/font0.ufo/glyphs/U_hoi.glif | 76 + .../dummy/mm0/font0.ufo/glyphs/U_horn.glif | 75 + .../mm0/font0.ufo/glyphs/U_hornacute.glif | 98 + .../mm0/font0.ufo/glyphs/U_horndotbelow.glif | 94 + .../mm0/font0.ufo/glyphs/U_horngrave.glif | 98 + .../dummy/mm0/font0.ufo/glyphs/U_hornhoi.glif | 96 + .../mm0/font0.ufo/glyphs/U_horntilde.glif | 108 + .../mm0/font0.ufo/glyphs/U_hungarumlaut.glif | 88 + .../dummy/mm0/font0.ufo/glyphs/U_macron.glif | 66 + .../mm0/font0.ufo/glyphs/U_macroncyr.glif | 68 + .../dummy/mm0/font0.ufo/glyphs/U_ogonek.glif | 75 + .../dummy/mm0/font0.ufo/glyphs/U_psilon.glif | 62 + .../font0.ufo/glyphs/U_psilondieresis.glif | 90 + .../mm0/font0.ufo/glyphs/U_psilontonos.glif | 80 + .../dummy/mm0/font0.ufo/glyphs/U_ring.glif | 88 + .../dummy/mm0/font0.ufo/glyphs/U_short.glif | 96 + .../mm0/font0.ufo/glyphs/U_straight.glif | 65 + .../font0.ufo/glyphs/U_straightstroke.glif | 60 + .../dummy/mm0/font0.ufo/glyphs/U_tilde.glif | 88 + .../input/dummy/mm0/font0.ufo/glyphs/V_e.glif | 86 + .../dummy/mm0/font0.ufo/glyphs/W_acute.glif | 75 + .../mm0/font0.ufo/glyphs/W_circumflex.glif | 67 + .../mm0/font0.ufo/glyphs/W_dieresis.glif | 85 + .../dummy/mm0/font0.ufo/glyphs/W_grave.glif | 75 + .../input/dummy/mm0/font0.ufo/glyphs/X_i.glif | 53 + .../input/dummy/mm0/font0.ufo/glyphs/Y_a.glif | 81 + .../dummy/mm0/font0.ufo/glyphs/Y_acute.glif | 80 + .../dummy/mm0/font0.ufo/glyphs/Y_at.glif | 76 + .../mm0/font0.ufo/glyphs/Y_circumflex.glif | 72 + .../mm0/font0.ufo/glyphs/Y_dieresis.glif | 90 + .../mm0/font0.ufo/glyphs/Y_dotaccent.glif | 76 + .../mm0/font0.ufo/glyphs/Y_dotbelow.glif | 76 + .../dummy/mm0/font0.ufo/glyphs/Y_eru.glif | 101 + .../dummy/mm0/font0.ufo/glyphs/Y_grave.glif | 80 + .../dummy/mm0/font0.ufo/glyphs/Y_hoi.glif | 78 + .../input/dummy/mm0/font0.ufo/glyphs/Y_i.glif | 80 + .../dummy/mm0/font0.ufo/glyphs/Y_tilde.glif | 90 + .../input/dummy/mm0/font0.ufo/glyphs/Y_u.glif | 78 + .../dummy/mm0/font0.ufo/glyphs/Z_acute.glif | 52 + .../dummy/mm0/font0.ufo/glyphs/Z_caron.glif | 44 + .../mm0/font0.ufo/glyphs/Z_dotaccent.glif | 48 + .../mm0/font0.ufo/glyphs/Z_dotbelow.glif | 48 + .../input/dummy/mm0/font0.ufo/glyphs/Z_e.glif | 62 + .../mm0/font0.ufo/glyphs/Z_edescender.glif | 95 + .../dummy/mm0/font0.ufo/glyphs/Z_eta.glif | 34 + .../dummy/mm0/font0.ufo/glyphs/Z_he.glif | 134 + .../dummy/mm0/font0.ufo/glyphs/Z_hebreve.glif | 176 + .../mm0/font0.ufo/glyphs/Z_hedescender.glif | 140 + .../dummy/mm0/font0.ufo/glyphs/a.sups.glif | 74 + .../dummy/mm0/font0.ufo/glyphs/aacute.glif | 103 + .../dummy/mm0/font0.ufo/glyphs/abreve.glif | 101 + .../mm0/font0.ufo/glyphs/abreveacute.glif | 115 + .../dummy/mm0/font0.ufo/glyphs/abrevecyr.glif | 119 + .../mm0/font0.ufo/glyphs/abrevedotbelow.glif | 115 + .../mm0/font0.ufo/glyphs/abrevegrave.glif | 115 + .../dummy/mm0/font0.ufo/glyphs/abrevehoi.glif | 117 + .../mm0/font0.ufo/glyphs/abrevetilde.glif | 129 + .../dummy/mm0/font0.ufo/glyphs/acaron.glif | 95 + .../mm0/font0.ufo/glyphs/acircumflex.glif | 95 + .../font0.ufo/glyphs/acircumflexacute.glif | 109 + .../font0.ufo/glyphs/acircumflexdotbelow.glif | 109 + .../font0.ufo/glyphs/acircumflexgrave.glif | 109 + .../mm0/font0.ufo/glyphs/acircumflexhoi.glif | 111 + .../font0.ufo/glyphs/acircumflextilde.glif | 123 + .../dummy/mm0/font0.ufo/glyphs/acute.glif | 39 + .../dummy/mm0/font0.ufo/glyphs/acutecmb.glif | 27 + .../dummy/mm0/font0.ufo/glyphs/acyr.glif | 88 + .../dummy/mm0/font0.ufo/glyphs/adieresis.glif | 113 + .../dummy/mm0/font0.ufo/glyphs/adotbelow.glif | 99 + .../input/dummy/mm0/font0.ufo/glyphs/ae.glif | 106 + .../dummy/mm0/font0.ufo/glyphs/agrave.glif | 103 + .../dummy/mm0/font0.ufo/glyphs/ahoi.glif | 101 + .../input/dummy/mm0/font0.ufo/glyphs/aie.glif | 111 + .../dummy/mm0/font0.ufo/glyphs/alpha.glif | 61 + .../mm0/font0.ufo/glyphs/alphalatin.glif | 62 + .../mm0/font0.ufo/glyphs/alphatonos.glif | 84 + .../dummy/mm0/font0.ufo/glyphs/amacron.glif | 91 + .../dummy/mm0/font0.ufo/glyphs/anoteleia.glif | 32 + .../dummy/mm0/font0.ufo/glyphs/aogonek.glif | 97 + .../mm0/font0.ufo/glyphs/approxequal.glif | 74 + .../dummy/mm0/font0.ufo/glyphs/aring.glif | 113 + .../dummy/mm0/font0.ufo/glyphs/arrowdown.glif | 21 + .../mm0/font0.ufo/glyphs/arrowdownleft.glif | 21 + .../mm0/font0.ufo/glyphs/arrowdownright.glif | 21 + .../dummy/mm0/font0.ufo/glyphs/arrowleft.glif | 21 + .../mm0/font0.ufo/glyphs/arrowright.glif | 21 + .../dummy/mm0/font0.ufo/glyphs/arrowup.glif | 21 + .../mm0/font0.ufo/glyphs/arrowupleft.glif | 21 + .../mm0/font0.ufo/glyphs/arrowupright.glif | 21 + .../dummy/mm0/font0.ufo/glyphs/atilde.glif | 113 + .../dummy/mm0/font0.ufo/glyphs/b.sups.glif | 48 + .../input/dummy/mm0/font0.ufo/glyphs/be.glif | 59 + .../dummy/mm0/font0.ufo/glyphs/beta.glif | 55 + .../dummy/mm0/font0.ufo/glyphs/bitcoin.glif | 99 + .../dummy/mm0/font0.ufo/glyphs/breve.glif | 40 + .../mm0/font0.ufo/glyphs/brevebelowcmb.glif | 36 + .../dummy/mm0/font0.ufo/glyphs/brevecmb.glif | 25 + .../dummy/mm0/font0.ufo/glyphs/brokenbar.glif | 19 + .../dummy/mm0/font0.ufo/glyphs/bullet.glif | 21 + .../mm0/font0.ufo/glyphs/bulletoperator.glif | 32 + .../dummy/mm0/font0.ufo/glyphs/c.sups.glif | 42 + .../dummy/mm0/font0.ufo/glyphs/cacute.glif | 71 + .../dummy/mm0/font0.ufo/glyphs/caron.glif | 31 + .../dummy/mm0/font0.ufo/glyphs/caroncmb.glif | 19 + .../dummy/mm0/font0.ufo/glyphs/ccaron.glif | 63 + .../dummy/mm0/font0.ufo/glyphs/ccedilla.glif | 78 + .../mm0/font0.ufo/glyphs/ccircumflex.glif | 63 + .../mm0/font0.ufo/glyphs/cdotaccent.glif | 67 + .../dummy/mm0/font0.ufo/glyphs/cedi.glif | 55 + .../dummy/mm0/font0.ufo/glyphs/cedilla.glif | 46 + .../mm0/font0.ufo/glyphs/cedillacmb.glif | 34 + .../dummy/mm0/font0.ufo/glyphs/cent.glif | 48 + .../input/dummy/mm0/font0.ufo/glyphs/che.glif | 72 + .../dummy/mm0/font0.ufo/glyphs/check.glif | 25 + .../dummy/mm0/font0.ufo/glyphs/checkbox.glif | 19 + .../mm0/font0.ufo/glyphs/checkedbox.glif | 37 + .../mm0/font0.ufo/glyphs/chedescender.glif | 78 + .../input/dummy/mm0/font0.ufo/glyphs/chi.glif | 53 + .../mm0/font0.ufo/glyphs/circumflex.glif | 34 + .../mm0/font0.ufo/glyphs/circumflexcmb.glif | 22 + .../mm0/font0.ufo/glyphs/colonmonetary.glif | 61 + .../font0.ufo/glyphs/colontriangularmod.glif | 23 + .../mm0/font0.ufo/glyphs/commabelowcmb.glif | 31 + .../mm0/font0.ufo/glyphs/commercemark.glif | 90 + .../dummy/mm0/font0.ufo/glyphs/contents.plist | 1630 +++++ .../dummy/mm0/font0.ufo/glyphs/copyleft.glif | 69 + .../dummy/mm0/font0.ufo/glyphs/copyright.glif | 69 + .../dummy/mm0/font0.ufo/glyphs/currency.glif | 91 + .../dummy/mm0/font0.ufo/glyphs/d.sups.glif | 48 + .../dummy/mm0/font0.ufo/glyphs/dagger.glif | 74 + .../dummy/mm0/font0.ufo/glyphs/daggerdbl.glif | 125 + .../dummy/mm0/font0.ufo/glyphs/dblprime.glif | 50 + .../dummy/mm0/font0.ufo/glyphs/dcaron.glif | 75 + .../dummy/mm0/font0.ufo/glyphs/dcroat.glif | 57 + .../dummy/mm0/font0.ufo/glyphs/ddotbelow.glif | 75 + .../input/dummy/mm0/font0.ufo/glyphs/de.glif | 67 + .../dummy/mm0/font0.ufo/glyphs/degree.glif | 35 + .../dummy/mm0/font0.ufo/glyphs/delta.glif | 62 + .../mm0/font0.ufo/glyphs/deposeemark.glif | 96 + .../mm0/font0.ufo/glyphs/diamondblack.glif | 13 + .../dummy/mm0/font0.ufo/glyphs/dieresis.glif | 49 + .../font0.ufo/glyphs/dieresisbelowcmb.glif | 48 + .../mm0/font0.ufo/glyphs/dieresiscmb.glif | 40 + .../mm0/font0.ufo/glyphs/dieresistonos.glif | 67 + .../dummy/mm0/font0.ufo/glyphs/digamma.glif | 30 + .../dummy/mm0/font0.ufo/glyphs/divide.glif | 41 + .../mm0/font0.ufo/glyphs/divisionslash.glif | 24 + .../input/dummy/mm0/font0.ufo/glyphs/dje.glif | 77 + .../mm0/font0.ufo/glyphs/dlinebelow.glif | 67 + .../mm0/font0.ufo/glyphs/dngb_cross.glif | 19 + .../dummy/mm0/font0.ufo/glyphs/dong.glif | 62 + .../dummy/mm0/font0.ufo/glyphs/dotaccent.glif | 35 + .../mm0/font0.ufo/glyphs/dotaccentcmb.glif | 26 + .../mm0/font0.ufo/glyphs/dotbelowcmb.glif | 34 + .../dummy/mm0/font0.ufo/glyphs/dotlessi.glif | 43 + .../dummy/mm0/font0.ufo/glyphs/dotlessj.glif | 49 + .../input/dummy/mm0/font0.ufo/glyphs/dze.glif | 68 + .../dummy/mm0/font0.ufo/glyphs/dzhe.glif | 85 + .../dummy/mm0/font0.ufo/glyphs/e.sups.glif | 43 + .../dummy/mm0/font0.ufo/glyphs/eacute.glif | 72 + .../dummy/mm0/font0.ufo/glyphs/ebreve.glif | 70 + .../dummy/mm0/font0.ufo/glyphs/ecaron.glif | 64 + .../mm0/font0.ufo/glyphs/ecircumflex.glif | 64 + .../font0.ufo/glyphs/ecircumflexacute.glif | 78 + .../font0.ufo/glyphs/ecircumflexdotbelow.glif | 78 + .../font0.ufo/glyphs/ecircumflexgrave.glif | 78 + .../mm0/font0.ufo/glyphs/ecircumflexhoi.glif | 80 + .../font0.ufo/glyphs/ecircumflextilde.glif | 92 + .../dummy/mm0/font0.ufo/glyphs/ecyr.glif | 54 + .../dummy/mm0/font0.ufo/glyphs/edieresis.glif | 82 + .../mm0/font0.ufo/glyphs/edotaccent.glif | 68 + .../dummy/mm0/font0.ufo/glyphs/edotbelow.glif | 68 + .../input/dummy/mm0/font0.ufo/glyphs/ef.glif | 90 + .../dummy/mm0/font0.ufo/glyphs/egrave.glif | 72 + .../dummy/mm0/font0.ufo/glyphs/ehoi.glif | 70 + .../mm0/font0.ufo/glyphs/eight.subs.glif | 70 + .../mm0/font0.ufo/glyphs/eight.sups.glif | 59 + .../mm0/font0.ufo/glyphs/eighthnote.glif | 45 + .../input/dummy/mm0/font0.ufo/glyphs/el.glif | 78 + .../dummy/mm0/font0.ufo/glyphs/ellipsis.glif | 60 + .../input/dummy/mm0/font0.ufo/glyphs/em.glif | 67 + .../dummy/mm0/font0.ufo/glyphs/emacron.glif | 60 + .../dummy/mm0/font0.ufo/glyphs/emdash.glif | 13 + .../input/dummy/mm0/font0.ufo/glyphs/en.glif | 81 + .../dummy/mm0/font0.ufo/glyphs/endash.glif | 13 + .../mm0/font0.ufo/glyphs/endescender.glif | 90 + .../input/dummy/mm0/font0.ufo/glyphs/eng.glif | 77 + .../dummy/mm0/font0.ufo/glyphs/eogonek.glif | 69 + .../dummy/mm0/font0.ufo/glyphs/epsilon.glif | 69 + .../mm0/font0.ufo/glyphs/epsilontonos.glif | 92 + .../input/dummy/mm0/font0.ufo/glyphs/er.glif | 76 + .../input/dummy/mm0/font0.ufo/glyphs/es.glif | 53 + .../mm0/font0.ufo/glyphs/esdescender.glif | 75 + .../dummy/mm0/font0.ufo/glyphs/estimated.glif | 62 + .../input/dummy/mm0/font0.ufo/glyphs/eta.glif | 53 + .../dummy/mm0/font0.ufo/glyphs/etatonos.glif | 76 + .../input/dummy/mm0/font0.ufo/glyphs/eth.glif | 49 + .../dummy/mm0/font0.ufo/glyphs/etilde.glif | 82 + .../dummy/mm0/font0.ufo/glyphs/exclamdbl.glif | 69 + .../mm0/font0.ufo/glyphs/exclamdown.glif | 49 + .../mm0/font0.ufo/glyphs/exclamquestion.glif | 88 + .../dummy/mm0/font0.ufo/glyphs/f.sups.glif | 57 + .../input/dummy/mm0/font0.ufo/glyphs/f_f.glif | 115 + .../dummy/mm0/font0.ufo/glyphs/f_f_i.glif | 138 + .../dummy/mm0/font0.ufo/glyphs/f_f_l.glif | 133 + .../input/dummy/mm0/font0.ufo/glyphs/f_i.glif | 86 + .../input/dummy/mm0/font0.ufo/glyphs/f_l.glif | 81 + .../mm0/font0.ufo/glyphs/figuredash.glif | 13 + .../mm0/font0.ufo/glyphs/figurespace.glif | 5 + .../dummy/mm0/font0.ufo/glyphs/fisheye.glif | 49 + .../dummy/mm0/font0.ufo/glyphs/fita.glif | 44 + .../dummy/mm0/font0.ufo/glyphs/five.subs.glif | 61 + .../dummy/mm0/font0.ufo/glyphs/five.sups.glif | 50 + .../mm0/font0.ufo/glyphs/fiveeighths.glif | 119 + .../dummy/mm0/font0.ufo/glyphs/florin.glif | 63 + .../dummy/mm0/font0.ufo/glyphs/four.subs.glif | 32 + .../dummy/mm0/font0.ufo/glyphs/four.sups.glif | 21 + .../dummy/mm0/font0.ufo/glyphs/fraction.glif | 13 + .../dummy/mm0/font0.ufo/glyphs/g.sups.glif | 84 + .../dummy/mm0/font0.ufo/glyphs/gamma.glif | 56 + .../dummy/mm0/font0.ufo/glyphs/gbreve.glif | 115 + .../dummy/mm0/font0.ufo/glyphs/gcaron.glif | 109 + .../mm0/font0.ufo/glyphs/gcircumflex.glif | 109 + .../mm0/font0.ufo/glyphs/gcommaaccent.glif | 121 + .../mm0/font0.ufo/glyphs/gdotaccent.glif | 113 + .../mm0/font0.ufo/glyphs/germandbls.glif | 83 + .../input/dummy/mm0/font0.ufo/glyphs/ghe.glif | 52 + .../dummy/mm0/font0.ufo/glyphs/ghestroke.glif | 55 + .../dummy/mm0/font0.ufo/glyphs/gheup.glif | 49 + .../input/dummy/mm0/font0.ufo/glyphs/gje.glif | 78 + .../dummy/mm0/font0.ufo/glyphs/gmacron.glif | 105 + .../dummy/mm0/font0.ufo/glyphs/gravecmb.glif | 27 + .../mm0/font0.ufo/glyphs/greaterequal.glif | 23 + .../dummy/mm0/font0.ufo/glyphs/gscript.glif | 74 + .../dummy/mm0/font0.ufo/glyphs/guarani.glif | 67 + .../mm0/font0.ufo/glyphs/guillemotleft.glif | 38 + .../mm0/font0.ufo/glyphs/guillemotright.glif | 38 + .../mm0/font0.ufo/glyphs/guilsinglleft.glif | 17 + .../mm0/font0.ufo/glyphs/guilsinglright.glif | 17 + .../dummy/mm0/font0.ufo/glyphs/h.sups.glif | 53 + .../input/dummy/mm0/font0.ufo/glyphs/ha.glif | 70 + .../mm0/font0.ufo/glyphs/hadescender.glif | 68 + .../dummy/mm0/font0.ufo/glyphs/hard.glif | 72 + .../dummy/mm0/font0.ufo/glyphs/hbar.glif | 74 + .../mm0/font0.ufo/glyphs/hbrevebelow.glif | 92 + .../mm0/font0.ufo/glyphs/hcircumflex.glif | 86 + .../dummy/mm0/font0.ufo/glyphs/hdotbelow.glif | 90 + .../dummy/mm0/font0.ufo/glyphs/hoicmb.glif | 25 + .../mm0/font0.ufo/glyphs/horizontalbar.glif | 24 + .../dummy/mm0/font0.ufo/glyphs/horncmb.glif | 30 + .../dummy/mm0/font0.ufo/glyphs/hryvnia.glif | 83 + .../mm0/font0.ufo/glyphs/hungarumlaut.glif | 49 + .../mm0/font0.ufo/glyphs/hungarumlautcmb.glif | 37 + .../dummy/mm0/font0.ufo/glyphs/i.sups.glif | 38 + .../dummy/mm0/font0.ufo/glyphs/iacute.glif | 63 + .../dummy/mm0/font0.ufo/glyphs/icaron.glif | 55 + .../mm0/font0.ufo/glyphs/icircumflex.glif | 55 + .../dummy/mm0/font0.ufo/glyphs/icyr.glif | 72 + .../dummy/mm0/font0.ufo/glyphs/idieresis.glif | 73 + .../dummy/mm0/font0.ufo/glyphs/idotbelow.glif | 73 + .../input/dummy/mm0/font0.ufo/glyphs/ie.glif | 57 + .../dummy/mm0/font0.ufo/glyphs/iebreve.glif | 88 + .../dummy/mm0/font0.ufo/glyphs/iegrave.glif | 72 + .../dummy/mm0/font0.ufo/glyphs/ieukran.glif | 47 + .../dummy/mm0/font0.ufo/glyphs/igrave.glif | 63 + .../dummy/mm0/font0.ufo/glyphs/igravecyr.glif | 98 + .../dummy/mm0/font0.ufo/glyphs/ihoi.glif | 61 + .../input/dummy/mm0/font0.ufo/glyphs/ij.glif | 101 + .../dummy/mm0/font0.ufo/glyphs/imacron.glif | 51 + .../mm0/font0.ufo/glyphs/imacroncyr.glif | 86 + .../dummy/mm0/font0.ufo/glyphs/infinity.glif | 59 + .../dummy/mm0/font0.ufo/glyphs/integral.glif | 49 + .../input/dummy/mm0/font0.ufo/glyphs/io.glif | 82 + .../dummy/mm0/font0.ufo/glyphs/iogonek.glif | 81 + .../dummy/mm0/font0.ufo/glyphs/iota.glif | 31 + .../mm0/font0.ufo/glyphs/iotadieresis.glif | 67 + .../font0.ufo/glyphs/iotadieresistonos.glif | 85 + .../dummy/mm0/font0.ufo/glyphs/iotatonos.glif | 57 + .../dummy/mm0/font0.ufo/glyphs/ishort.glif | 114 + .../dummy/mm0/font0.ufo/glyphs/itilde.glif | 73 + .../dummy/mm0/font0.ufo/glyphs/iukran.glif | 59 + .../dummy/mm0/font0.ufo/glyphs/izhitsa.glif | 43 + .../dummy/mm0/font0.ufo/glyphs/j.sups.glif | 56 + .../mm0/font0.ufo/glyphs/jcircumflex.glif | 67 + .../input/dummy/mm0/font0.ufo/glyphs/je.glif | 71 + .../dummy/mm0/font0.ufo/glyphs/k.sups.glif | 47 + .../input/dummy/mm0/font0.ufo/glyphs/ka.glif | 89 + .../dummy/mm0/font0.ufo/glyphs/kabashkir.glif | 94 + .../mm0/font0.ufo/glyphs/kadescender.glif | 95 + .../input/dummy/mm0/font0.ufo/glyphs/kai.glif | 85 + .../dummy/mm0/font0.ufo/glyphs/kappa.glif | 69 + .../mm0/font0.ufo/glyphs/kcommaaccent.glif | 86 + .../mm0/font0.ufo/glyphs/kgreenlandic.glif | 57 + .../input/dummy/mm0/font0.ufo/glyphs/kje.glif | 115 + .../dummy/mm0/font0.ufo/glyphs/koppa.glif | 45 + .../dummy/mm0/font0.ufo/glyphs/l.sups.glif | 24 + .../dummy/mm0/font0.ufo/glyphs/lacute.glif | 60 + .../dummy/mm0/font0.ufo/glyphs/lambda.glif | 45 + .../dummy/mm0/font0.ufo/glyphs/lcaron.glif | 56 + .../mm0/font0.ufo/glyphs/lcommaaccent.glif | 64 + .../dummy/mm0/font0.ufo/glyphs/ldot.glif | 45 + .../dummy/mm0/font0.ufo/glyphs/ldotbelow.glif | 56 + .../mm0/font0.ufo/glyphs/ldotbelowmacron.glif | 62 + .../dummy/mm0/font0.ufo/glyphs/lessequal.glif | 23 + .../dummy/mm0/font0.ufo/glyphs/lira.glif | 58 + .../mm0/font0.ufo/glyphs/liraturkish.glif | 78 + .../dummy/mm0/font0.ufo/glyphs/litre.glif | 42 + .../input/dummy/mm0/font0.ufo/glyphs/lje.glif | 101 + .../mm0/font0.ufo/glyphs/llinebelow.glif | 48 + .../mm0/font0.ufo/glyphs/logicalnot.glif | 16 + .../dummy/mm0/font0.ufo/glyphs/longs.glif | 49 + .../mm0/font0.ufo/glyphs/lownumeralsign.glif | 23 + .../dummy/mm0/font0.ufo/glyphs/lozenge.glif | 21 + .../dummy/mm0/font0.ufo/glyphs/lslash.glif | 43 + .../dummy/mm0/font0.ufo/glyphs/m.sups.glif | 83 + .../mm0/font0.ufo/glyphs/macronbelowcmb.glif | 26 + .../dummy/mm0/font0.ufo/glyphs/macroncmb.glif | 15 + .../dummy/mm0/font0.ufo/glyphs/macronmod.glif | 24 + .../dummy/mm0/font0.ufo/glyphs/macute.glif | 127 + .../dummy/mm0/font0.ufo/glyphs/mdotbelow.glif | 123 + .../dummy/mm0/font0.ufo/glyphs/minus.glif | 13 + .../input/dummy/mm0/font0.ufo/glyphs/mu.glif | 57 + .../dummy/mm0/font0.ufo/glyphs/multiply.glif | 19 + .../dummy/mm0/font0.ufo/glyphs/n.sups.glif | 54 + .../dummy/mm0/font0.ufo/glyphs/nacute.glif | 95 + .../dummy/mm0/font0.ufo/glyphs/naira.glif | 53 + .../mm0/font0.ufo/glyphs/napostrophe.glif | 100 + .../dummy/mm0/font0.ufo/glyphs/ncaron.glif | 87 + .../mm0/font0.ufo/glyphs/ncommaaccent.glif | 99 + .../mm0/font0.ufo/glyphs/ndotaccent.glif | 91 + .../dummy/mm0/font0.ufo/glyphs/ndotbelow.glif | 91 + .../dummy/mm0/font0.ufo/glyphs/ngrave.glif | 95 + .../dummy/mm0/font0.ufo/glyphs/nine.subs.glif | 52 + .../dummy/mm0/font0.ufo/glyphs/nine.sups.glif | 41 + .../input/dummy/mm0/font0.ufo/glyphs/nje.glif | 104 + .../mm0/font0.ufo/glyphs/nlinebelow.glif | 83 + .../dummy/mm0/font0.ufo/glyphs/notequal.glif | 25 + .../dummy/mm0/font0.ufo/glyphs/ntilde.glif | 105 + .../input/dummy/mm0/font0.ufo/glyphs/nu.glif | 49 + .../mm0/font0.ufo/glyphs/numeralsign.glif | 34 + .../dummy/mm0/font0.ufo/glyphs/numero.glif | 99 + .../dummy/mm0/font0.ufo/glyphs/o.sups.glif | 35 + .../dummy/mm0/font0.ufo/glyphs/oacute.glif | 64 + .../dummy/mm0/font0.ufo/glyphs/obarcyr.glif | 55 + .../dummy/mm0/font0.ufo/glyphs/obreve.glif | 62 + .../dummy/mm0/font0.ufo/glyphs/ocaron.glif | 56 + .../mm0/font0.ufo/glyphs/ocircumflex.glif | 56 + .../font0.ufo/glyphs/ocircumflexacute.glif | 70 + .../font0.ufo/glyphs/ocircumflexdotbelow.glif | 70 + .../font0.ufo/glyphs/ocircumflexgrave.glif | 70 + .../mm0/font0.ufo/glyphs/ocircumflexhoi.glif | 72 + .../font0.ufo/glyphs/ocircumflextilde.glif | 84 + .../dummy/mm0/font0.ufo/glyphs/ocyr.glif | 49 + .../dummy/mm0/font0.ufo/glyphs/odieresis.glif | 74 + .../mm0/font0.ufo/glyphs/odieresiscyr.glif | 74 + .../dummy/mm0/font0.ufo/glyphs/odotbelow.glif | 60 + .../input/dummy/mm0/font0.ufo/glyphs/oe.glif | 74 + .../dummy/mm0/font0.ufo/glyphs/ogonek.glif | 43 + .../dummy/mm0/font0.ufo/glyphs/ogonekcmb.glif | 31 + .../dummy/mm0/font0.ufo/glyphs/ograve.glif | 64 + .../dummy/mm0/font0.ufo/glyphs/ohoi.glif | 62 + .../dummy/mm0/font0.ufo/glyphs/ohorn.glif | 62 + .../mm0/font0.ufo/glyphs/ohornacute.glif | 85 + .../mm0/font0.ufo/glyphs/ohorndotbelow.glif | 81 + .../mm0/font0.ufo/glyphs/ohorngrave.glif | 85 + .../dummy/mm0/font0.ufo/glyphs/ohornhoi.glif | 83 + .../mm0/font0.ufo/glyphs/ohorntilde.glif | 95 + .../mm0/font0.ufo/glyphs/ohungarumlaut.glif | 74 + .../dummy/mm0/font0.ufo/glyphs/omacron.glif | 52 + .../dummy/mm0/font0.ufo/glyphs/omega.glif | 62 + .../mm0/font0.ufo/glyphs/omegatonos.glif | 85 + .../dummy/mm0/font0.ufo/glyphs/omicron.glif | 38 + .../mm0/font0.ufo/glyphs/omicrontonos.glif | 64 + .../dummy/mm0/font0.ufo/glyphs/one.subs.glif | 35 + .../dummy/mm0/font0.ufo/glyphs/one.sups.glif | 24 + .../dummy/mm0/font0.ufo/glyphs/oneeighth.glif | 93 + .../dummy/mm0/font0.ufo/glyphs/onehalf.glif | 76 + .../mm0/font0.ufo/glyphs/onequarter.glif | 55 + .../dummy/mm0/font0.ufo/glyphs/onethird.glif | 99 + .../mm0/font0.ufo/glyphs/ordfeminine.glif | 85 + .../mm0/font0.ufo/glyphs/ordmasculine.glif | 46 + .../dummy/mm0/font0.ufo/glyphs/oslash.glif | 44 + .../dummy/mm0/font0.ufo/glyphs/otilde.glif | 74 + .../dummy/mm0/font0.ufo/glyphs/overline.glif | 13 + .../dummy/mm0/font0.ufo/glyphs/p.sups.glif | 53 + .../dummy/mm0/font0.ufo/glyphs/palochka.glif | 42 + .../dummy/mm0/font0.ufo/glyphs/paragraph.glif | 41 + .../mm0/font0.ufo/glyphs/parenleft.subs.glif | 34 + .../mm0/font0.ufo/glyphs/parenleft.sups.glif | 23 + .../mm0/font0.ufo/glyphs/parenright.subs.glif | 34 + .../mm0/font0.ufo/glyphs/parenright.sups.glif | 23 + .../mm0/font0.ufo/glyphs/partialdiff.glif | 47 + .../input/dummy/mm0/font0.ufo/glyphs/pe.glif | 79 + .../mm0/font0.ufo/glyphs/periodcentered.glif | 32 + .../mm0/font0.ufo/glyphs/perthousand.glif | 108 + .../dummy/mm0/font0.ufo/glyphs/peseta.glif | 66 + .../dummy/mm0/font0.ufo/glyphs/peso.glif | 72 + .../input/dummy/mm0/font0.ufo/glyphs/phi.glif | 48 + .../input/dummy/mm0/font0.ufo/glyphs/pi.glif | 60 + .../dummy/mm0/font0.ufo/glyphs/plusminus.glif | 25 + .../dummy/mm0/font0.ufo/glyphs/prime.glif | 23 + .../dummy/mm0/font0.ufo/glyphs/product.glif | 79 + .../input/dummy/mm0/font0.ufo/glyphs/psi.glif | 69 + .../mm0/font0.ufo/glyphs/questiondbl.glif | 107 + .../mm0/font0.ufo/glyphs/questiondown.glif | 68 + .../mm0/font0.ufo/glyphs/questionexclam.glif | 88 + .../mm0/font0.ufo/glyphs/questiongreek.glif | 55 + .../mm0/font0.ufo/glyphs/quotedblbase.glif | 64 + .../mm0/font0.ufo/glyphs/quotedblleft.glif | 64 + .../mm0/font0.ufo/glyphs/quotedblright.glif | 64 + .../dummy/mm0/font0.ufo/glyphs/quoteleft.glif | 30 + .../mm0/font0.ufo/glyphs/quoteright.glif | 30 + .../mm0/font0.ufo/glyphs/quotesinglbase.glif | 41 + .../dummy/mm0/font0.ufo/glyphs/r.sups.glif | 48 + .../dummy/mm0/font0.ufo/glyphs/racute.glif | 83 + .../dummy/mm0/font0.ufo/glyphs/radical.glif | 20 + .../dummy/mm0/font0.ufo/glyphs/rcaron.glif | 75 + .../mm0/font0.ufo/glyphs/rcommaaccent.glif | 87 + .../dummy/mm0/font0.ufo/glyphs/rdotbelow.glif | 79 + .../mm0/font0.ufo/glyphs/rdotbelowmacron.glif | 85 + .../mm0/font0.ufo/glyphs/registered.glif | 94 + .../input/dummy/mm0/font0.ufo/glyphs/rho.glif | 44 + .../dummy/mm0/font0.ufo/glyphs/ring.glif | 49 + .../dummy/mm0/font0.ufo/glyphs/ringcmb.glif | 37 + .../mm0/font0.ufo/glyphs/ringhalfleftmod.glif | 23 + .../font0.ufo/glyphs/ringhalfrightmod.glif | 23 + .../mm0/font0.ufo/glyphs/rlinebelow.glif | 71 + .../dummy/mm0/font0.ufo/glyphs/ruble.glif | 66 + .../mm0/font0.ufo/glyphs/rupeeindian.glif | 54 + .../dummy/mm0/font0.ufo/glyphs/s.sups.glif | 55 + .../dummy/mm0/font0.ufo/glyphs/sacute.glif | 86 + .../dummy/mm0/font0.ufo/glyphs/sampi.glif | 35 + .../dummy/mm0/font0.ufo/glyphs/scaron.glif | 78 + .../dummy/mm0/font0.ufo/glyphs/scedilla.glif | 93 + .../dummy/mm0/font0.ufo/glyphs/schwa.glif | 49 + .../dummy/mm0/font0.ufo/glyphs/schwacyr.glif | 54 + .../mm0/font0.ufo/glyphs/scircumflex.glif | 78 + .../mm0/font0.ufo/glyphs/scommaaccent.glif | 90 + .../mm0/font0.ufo/glyphs/sdotaccent.glif | 82 + .../dummy/mm0/font0.ufo/glyphs/sdotbelow.glif | 82 + .../dummy/mm0/font0.ufo/glyphs/section.glif | 89 + .../mm0/font0.ufo/glyphs/servicemark.glif | 104 + .../mm0/font0.ufo/glyphs/seven.subs.glif | 29 + .../mm0/font0.ufo/glyphs/seven.sups.glif | 18 + .../mm0/font0.ufo/glyphs/seveneighths.glif | 87 + .../input/dummy/mm0/font0.ufo/glyphs/sha.glif | 105 + .../dummy/mm0/font0.ufo/glyphs/shcha.glif | 101 + .../dummy/mm0/font0.ufo/glyphs/shha.glif | 76 + .../dummy/mm0/font0.ufo/glyphs/sigma.end.glif | 51 + .../dummy/mm0/font0.ufo/glyphs/sigma.glif | 38 + .../dummy/mm0/font0.ufo/glyphs/similar.glif | 35 + .../dummy/mm0/font0.ufo/glyphs/six.subs.glif | 52 + .../dummy/mm0/font0.ufo/glyphs/six.sups.glif | 41 + .../dummy/mm0/font0.ufo/glyphs/soft.glif | 64 + .../mm0/font0.ufo/glyphs/soundcopyright.glif | 76 + .../mm0/font0.ufo/glyphs/squareblack.glif | 13 + .../mm0/font0.ufo/glyphs/squareshadow.glif | 21 + .../dummy/mm0/font0.ufo/glyphs/sterling.glif | 52 + .../dummy/mm0/font0.ufo/glyphs/stigma.glif | 47 + .../dummy/mm0/font0.ufo/glyphs/summation.glif | 33 + .../dummy/mm0/font0.ufo/glyphs/t.sups.glif | 37 + .../input/dummy/mm0/font0.ufo/glyphs/tau.glif | 37 + .../dummy/mm0/font0.ufo/glyphs/tbar.glif | 46 + .../dummy/mm0/font0.ufo/glyphs/tcaron.glif | 65 + .../dummy/mm0/font0.ufo/glyphs/tcedilla.glif | 76 + .../mm0/font0.ufo/glyphs/tcommaaccent.glif | 73 + .../dummy/mm0/font0.ufo/glyphs/tdieresis.glif | 79 + .../dummy/mm0/font0.ufo/glyphs/tdotbelow.glif | 65 + .../input/dummy/mm0/font0.ufo/glyphs/te.glif | 45 + .../dummy/mm0/font0.ufo/glyphs/tenge.glif | 51 + .../dummy/mm0/font0.ufo/glyphs/theta.glif | 41 + .../dummy/mm0/font0.ufo/glyphs/thorn.glif | 69 + .../mm0/font0.ufo/glyphs/three.subs.glif | 76 + .../mm0/font0.ufo/glyphs/three.sups.glif | 65 + .../mm0/font0.ufo/glyphs/threeeighths.glif | 134 + .../mm0/font0.ufo/glyphs/threeemdash.glif | 13 + .../mm0/font0.ufo/glyphs/threequarters.glif | 96 + .../dummy/mm0/font0.ufo/glyphs/tilde.glif | 49 + .../dummy/mm0/font0.ufo/glyphs/tildecmb.glif | 37 + .../mm0/font0.ufo/glyphs/tlinebelow.glif | 57 + .../dummy/mm0/font0.ufo/glyphs/tonos.glif | 39 + .../dummy/mm0/font0.ufo/glyphs/trademark.glif | 82 + .../font0.ufo/glyphs/triangleblackdown.glif | 15 + .../font0.ufo/glyphs/triangleblackleft.glif | 15 + .../font0.ufo/glyphs/triangleblackright.glif | 15 + .../mm0/font0.ufo/glyphs/triangleblackup.glif | 15 + .../font0.ufo/glyphs/trianglewhitedown.glif | 20 + .../font0.ufo/glyphs/trianglewhiteleft.glif | 20 + .../font0.ufo/glyphs/trianglewhiteright.glif | 20 + .../mm0/font0.ufo/glyphs/trianglewhiteup.glif | 20 + .../font0.ufo/glyphs/triangularbullet.glif | 15 + .../input/dummy/mm0/font0.ufo/glyphs/tse.glif | 78 + .../dummy/mm0/font0.ufo/glyphs/tshe.glif | 85 + .../dummy/mm0/font0.ufo/glyphs/tugrik.glif | 69 + .../dummy/mm0/font0.ufo/glyphs/two.subs.glif | 53 + .../dummy/mm0/font0.ufo/glyphs/two.sups.glif | 42 + .../mm0/font0.ufo/glyphs/twodotenleader.glif | 35 + .../dummy/mm0/font0.ufo/glyphs/twoemdash.glif | 13 + .../dummy/mm0/font0.ufo/glyphs/twothirds.glif | 117 + .../dummy/mm0/font0.ufo/glyphs/u.sups.glif | 46 + .../dummy/mm0/font0.ufo/glyphs/uacute.glif | 72 + .../mm0/font0.ufo/glyphs/uacutedblcyr.glif | 92 + .../dummy/mm0/font0.ufo/glyphs/ubreve.glif | 70 + .../dummy/mm0/font0.ufo/glyphs/ucaron.glif | 64 + .../mm0/font0.ufo/glyphs/ucircumflex.glif | 64 + .../dummy/mm0/font0.ufo/glyphs/ucyr.glif | 67 + .../dummy/mm0/font0.ufo/glyphs/udieresis.glif | 82 + .../mm0/font0.ufo/glyphs/udieresisacute.glif | 96 + .../mm0/font0.ufo/glyphs/udieresiscaron.glif | 92 + .../mm0/font0.ufo/glyphs/udieresisgrave.glif | 96 + .../mm0/font0.ufo/glyphs/udieresismacron.glif | 88 + .../dummy/mm0/font0.ufo/glyphs/udotbelow.glif | 68 + .../dummy/mm0/font0.ufo/glyphs/ugrave.glif | 72 + .../dummy/mm0/font0.ufo/glyphs/uhoi.glif | 70 + .../dummy/mm0/font0.ufo/glyphs/uhorn.glif | 70 + .../mm0/font0.ufo/glyphs/uhornacute.glif | 93 + .../mm0/font0.ufo/glyphs/uhorndotbelow.glif | 89 + .../mm0/font0.ufo/glyphs/uhorngrave.glif | 93 + .../dummy/mm0/font0.ufo/glyphs/uhornhoi.glif | 91 + .../mm0/font0.ufo/glyphs/uhorntilde.glif | 103 + .../mm0/font0.ufo/glyphs/uhungarumlaut.glif | 82 + .../dummy/mm0/font0.ufo/glyphs/umacron.glif | 60 + .../mm0/font0.ufo/glyphs/umacroncyr.glif | 70 + .../dummy/mm0/font0.ufo/glyphs/uogonek.glif | 68 + .../dummy/mm0/font0.ufo/glyphs/upsilon.glif | 60 + .../mm0/font0.ufo/glyphs/upsilondieresis.glif | 96 + .../glyphs/upsilondieresistonos.glif | 114 + .../mm0/font0.ufo/glyphs/upsilontonos.glif | 86 + .../dummy/mm0/font0.ufo/glyphs/uring.glif | 82 + .../dummy/mm0/font0.ufo/glyphs/ushort.glif | 98 + .../dummy/mm0/font0.ufo/glyphs/ustraight.glif | 54 + .../mm0/font0.ufo/glyphs/ustraightstroke.glif | 60 + .../dummy/mm0/font0.ufo/glyphs/utilde.glif | 82 + .../dummy/mm0/font0.ufo/glyphs/v.sups.glif | 33 + .../input/dummy/mm0/font0.ufo/glyphs/ve.glif | 75 + .../glyphs/verticallinebelowcmb.glif | 15 + .../font0.ufo/glyphs/verticallinelowmod.glif | 24 + .../mm0/font0.ufo/glyphs/verticallinemod.glif | 13 + .../dummy/mm0/font0.ufo/glyphs/w.sups.glif | 49 + .../dummy/mm0/font0.ufo/glyphs/wacute.glif | 75 + .../mm0/font0.ufo/glyphs/wcircumflex.glif | 67 + .../dummy/mm0/font0.ufo/glyphs/wdieresis.glif | 85 + .../dummy/mm0/font0.ufo/glyphs/wgrave.glif | 75 + .../input/dummy/mm0/font0.ufo/glyphs/won.glif | 51 + .../dummy/mm0/font0.ufo/glyphs/x.sups.glif | 59 + .../input/dummy/mm0/font0.ufo/glyphs/xi.glif | 61 + .../dummy/mm0/font0.ufo/glyphs/y.sups.glif | 52 + .../input/dummy/mm0/font0.ufo/glyphs/ya.glif | 81 + .../dummy/mm0/font0.ufo/glyphs/yacute.glif | 82 + .../input/dummy/mm0/font0.ufo/glyphs/yat.glif | 68 + .../mm0/font0.ufo/glyphs/ycircumflex.glif | 74 + .../dummy/mm0/font0.ufo/glyphs/ydieresis.glif | 92 + .../mm0/font0.ufo/glyphs/ydotaccent.glif | 78 + .../dummy/mm0/font0.ufo/glyphs/ydotbelow.glif | 78 + .../input/dummy/mm0/font0.ufo/glyphs/yen.glif | 65 + .../dummy/mm0/font0.ufo/glyphs/yeru.glif | 101 + .../dummy/mm0/font0.ufo/glyphs/ygrave.glif | 82 + .../dummy/mm0/font0.ufo/glyphs/yhoi.glif | 80 + .../input/dummy/mm0/font0.ufo/glyphs/yi.glif | 73 + .../dummy/mm0/font0.ufo/glyphs/ytilde.glif | 92 + .../input/dummy/mm0/font0.ufo/glyphs/yu.glif | 78 + .../dummy/mm0/font0.ufo/glyphs/z.sups.glif | 27 + .../dummy/mm0/font0.ufo/glyphs/zacute.glif | 52 + .../dummy/mm0/font0.ufo/glyphs/zcaron.glif | 44 + .../mm0/font0.ufo/glyphs/zdotaccent.glif | 48 + .../dummy/mm0/font0.ufo/glyphs/zdotbelow.glif | 48 + .../input/dummy/mm0/font0.ufo/glyphs/ze.glif | 62 + .../mm0/font0.ufo/glyphs/zedescender.glif | 95 + .../dummy/mm0/font0.ufo/glyphs/zero.subs.glif | 46 + .../dummy/mm0/font0.ufo/glyphs/zero.sups.glif | 35 + .../dummy/mm0/font0.ufo/glyphs/zeta.glif | 41 + .../input/dummy/mm0/font0.ufo/glyphs/zhe.glif | 134 + .../dummy/mm0/font0.ufo/glyphs/zhebreve.glif | 176 + .../mm0/font0.ufo/glyphs/zhedescender.glif | 140 + .../input/dummy/mm0/font0.ufo/groups.plist | 5997 +++++++++++++++++ .../dummy/mm0/font0.ufo/layercontents.plist | 10 + .../input/dummy/mm0/font0.ufo/lib.plist | 2070 ++++++ .../input/dummy/mm0/font0.ufo/metainfo.plist | 10 + .../input/dummy/mm0/font1.ufo/fontinfo.plist | 162 + .../dummy/mm0/font1.ufo/glyphs/A_E_.glif | 89 + .../dummy/mm0/font1.ufo/glyphs/A_acute.glif | 67 + .../dummy/mm0/font1.ufo/glyphs/A_breve.glif | 65 + .../mm0/font1.ufo/glyphs/A_breveacute.glif | 79 + .../mm0/font1.ufo/glyphs/A_brevecyr.glif | 83 + .../mm0/font1.ufo/glyphs/A_brevedotbelow.glif | 79 + .../mm0/font1.ufo/glyphs/A_brevegrave.glif | 79 + .../mm0/font1.ufo/glyphs/A_brevehoi.glif | 81 + .../mm0/font1.ufo/glyphs/A_brevetilde.glif | 93 + .../dummy/mm0/font1.ufo/glyphs/A_caron.glif | 59 + .../mm0/font1.ufo/glyphs/A_circumflex.glif | 59 + .../font1.ufo/glyphs/A_circumflexacute.glif | 73 + .../glyphs/A_circumflexdotbelow.glif | 73 + .../font1.ufo/glyphs/A_circumflexgrave.glif | 73 + .../mm0/font1.ufo/glyphs/A_circumflexhoi.glif | 75 + .../font1.ufo/glyphs/A_circumflextilde.glif | 87 + .../dummy/mm0/font1.ufo/glyphs/A_cyr.glif | 52 + .../mm0/font1.ufo/glyphs/A_dieresis.glif | 77 + .../mm0/font1.ufo/glyphs/A_dotbelow.glif | 63 + .../dummy/mm0/font1.ufo/glyphs/A_grave.glif | 67 + .../dummy/mm0/font1.ufo/glyphs/A_hoi.glif | 65 + .../dummy/mm0/font1.ufo/glyphs/A_ie.glif | 97 + .../dummy/mm0/font1.ufo/glyphs/A_lpha.glif | 49 + .../mm0/font1.ufo/glyphs/A_lphatonos.glif | 67 + .../dummy/mm0/font1.ufo/glyphs/A_macron.glif | 55 + .../dummy/mm0/font1.ufo/glyphs/A_ogonek.glif | 74 + .../dummy/mm0/font1.ufo/glyphs/A_ring.glif | 77 + .../dummy/mm0/font1.ufo/glyphs/A_tilde.glif | 77 + .../input/dummy/mm0/font1.ufo/glyphs/B_e.glif | 72 + .../dummy/mm0/font1.ufo/glyphs/B_eta.glif | 86 + .../dummy/mm0/font1.ufo/glyphs/C_acute.glif | 72 + .../dummy/mm0/font1.ufo/glyphs/C_caron.glif | 64 + .../dummy/mm0/font1.ufo/glyphs/C_cedilla.glif | 79 + .../mm0/font1.ufo/glyphs/C_circumflex.glif | 64 + .../mm0/font1.ufo/glyphs/C_dotaccent.glif | 68 + .../dummy/mm0/font1.ufo/glyphs/C_he.glif | 72 + .../mm0/font1.ufo/glyphs/C_hedescender.glif | 78 + .../dummy/mm0/font1.ufo/glyphs/C_hi.glif | 68 + .../dummy/mm0/font1.ufo/glyphs/D_caron.glif | 80 + .../dummy/mm0/font1.ufo/glyphs/D_croat.glif | 76 + .../mm0/font1.ufo/glyphs/D_dotbelow.glif | 84 + .../input/dummy/mm0/font1.ufo/glyphs/D_e.glif | 67 + .../dummy/mm0/font1.ufo/glyphs/D_elta.glif | 25 + .../dummy/mm0/font1.ufo/glyphs/D_je.glif | 66 + .../mm0/font1.ufo/glyphs/D_linebelow.glif | 76 + .../dummy/mm0/font1.ufo/glyphs/D_ze.glif | 68 + .../dummy/mm0/font1.ufo/glyphs/D_zhe.glif | 85 + .../dummy/mm0/font1.ufo/glyphs/E_acute.glif | 98 + .../dummy/mm0/font1.ufo/glyphs/E_breve.glif | 96 + .../dummy/mm0/font1.ufo/glyphs/E_caron.glif | 90 + .../mm0/font1.ufo/glyphs/E_circumflex.glif | 90 + .../font1.ufo/glyphs/E_circumflexacute.glif | 104 + .../glyphs/E_circumflexdotbelow.glif | 104 + .../font1.ufo/glyphs/E_circumflexgrave.glif | 104 + .../mm0/font1.ufo/glyphs/E_circumflexhoi.glif | 106 + .../font1.ufo/glyphs/E_circumflextilde.glif | 118 + .../dummy/mm0/font1.ufo/glyphs/E_cyr.glif | 60 + .../mm0/font1.ufo/glyphs/E_dieresis.glif | 108 + .../mm0/font1.ufo/glyphs/E_dotaccent.glif | 94 + .../mm0/font1.ufo/glyphs/E_dotbelow.glif | 94 + .../input/dummy/mm0/font1.ufo/glyphs/E_f.glif | 81 + .../dummy/mm0/font1.ufo/glyphs/E_grave.glif | 98 + .../dummy/mm0/font1.ufo/glyphs/E_hoi.glif | 96 + .../input/dummy/mm0/font1.ufo/glyphs/E_l.glif | 78 + .../input/dummy/mm0/font1.ufo/glyphs/E_m.glif | 80 + .../dummy/mm0/font1.ufo/glyphs/E_macron.glif | 86 + .../input/dummy/mm0/font1.ufo/glyphs/E_n.glif | 92 + .../mm0/font1.ufo/glyphs/E_ndescender.glif | 90 + .../dummy/mm0/font1.ufo/glyphs/E_ng.glif | 65 + .../dummy/mm0/font1.ufo/glyphs/E_ogonek.glif | 105 + .../dummy/mm0/font1.ufo/glyphs/E_psilon.glif | 80 + .../mm0/font1.ufo/glyphs/E_psilontonos.glif | 98 + .../input/dummy/mm0/font1.ufo/glyphs/E_r.glif | 71 + .../input/dummy/mm0/font1.ufo/glyphs/E_s.glif | 54 + .../mm0/font1.ufo/glyphs/E_sdescender.glif | 76 + .../dummy/mm0/font1.ufo/glyphs/E_ta.glif | 92 + .../dummy/mm0/font1.ufo/glyphs/E_tatonos.glif | 110 + .../dummy/mm0/font1.ufo/glyphs/E_th.glif | 65 + .../dummy/mm0/font1.ufo/glyphs/E_tilde.glif | 108 + .../dummy/mm0/font1.ufo/glyphs/E_uro.glif | 61 + .../dummy/mm0/font1.ufo/glyphs/F_ita.glif | 44 + .../dummy/mm0/font1.ufo/glyphs/G_amma.glif | 49 + .../dummy/mm0/font1.ufo/glyphs/G_breve.glif | 83 + .../dummy/mm0/font1.ufo/glyphs/G_caron.glif | 77 + .../mm0/font1.ufo/glyphs/G_circumflex.glif | 77 + .../mm0/font1.ufo/glyphs/G_commaaccent.glif | 89 + .../mm0/font1.ufo/glyphs/G_dotaccent.glif | 81 + .../mm0/font1.ufo/glyphs/G_ermandbls.glif | 75 + .../dummy/mm0/font1.ufo/glyphs/G_he.glif | 63 + .../mm0/font1.ufo/glyphs/G_hestroke.glif | 55 + .../dummy/mm0/font1.ufo/glyphs/G_heup.glif | 49 + .../dummy/mm0/font1.ufo/glyphs/G_je.glif | 78 + .../dummy/mm0/font1.ufo/glyphs/G_macron.glif | 73 + .../input/dummy/mm0/font1.ufo/glyphs/H_a.glif | 68 + .../mm0/font1.ufo/glyphs/H_adescender.glif | 66 + .../dummy/mm0/font1.ufo/glyphs/H_ard.glif | 72 + .../dummy/mm0/font1.ufo/glyphs/H_bar.glif | 87 + .../mm0/font1.ufo/glyphs/H_brevebelow.glif | 108 + .../mm0/font1.ufo/glyphs/H_circumflex.glif | 102 + .../mm0/font1.ufo/glyphs/H_dotbelow.glif | 106 + .../dummy/mm0/font1.ufo/glyphs/I_J_.glif | 81 + .../dummy/mm0/font1.ufo/glyphs/I_acute.glif | 70 + .../dummy/mm0/font1.ufo/glyphs/I_caron.glif | 62 + .../mm0/font1.ufo/glyphs/I_circumflex.glif | 62 + .../dummy/mm0/font1.ufo/glyphs/I_cyr.glif | 78 + .../mm0/font1.ufo/glyphs/I_dieresis.glif | 80 + .../mm0/font1.ufo/glyphs/I_dotaccent.glif | 66 + .../mm0/font1.ufo/glyphs/I_dotbelow.glif | 66 + .../input/dummy/mm0/font1.ufo/glyphs/I_e.glif | 83 + .../dummy/mm0/font1.ufo/glyphs/I_ebreve.glif | 114 + .../dummy/mm0/font1.ufo/glyphs/I_egrave.glif | 98 + .../dummy/mm0/font1.ufo/glyphs/I_eukran.glif | 57 + .../dummy/mm0/font1.ufo/glyphs/I_grave.glif | 70 + .../mm0/font1.ufo/glyphs/I_gravecyr.glif | 104 + .../dummy/mm0/font1.ufo/glyphs/I_hoi.glif | 68 + .../dummy/mm0/font1.ufo/glyphs/I_macron.glif | 58 + .../mm0/font1.ufo/glyphs/I_macroncyr.glif | 92 + .../input/dummy/mm0/font1.ufo/glyphs/I_o.glif | 108 + .../dummy/mm0/font1.ufo/glyphs/I_ogonek.glif | 77 + .../dummy/mm0/font1.ufo/glyphs/I_ota.glif | 52 + .../mm0/font1.ufo/glyphs/I_otadieresis.glif | 80 + .../mm0/font1.ufo/glyphs/I_otatonos.glif | 70 + .../dummy/mm0/font1.ufo/glyphs/I_short.glif | 120 + .../dummy/mm0/font1.ufo/glyphs/I_tilde.glif | 80 + .../dummy/mm0/font1.ufo/glyphs/I_ukran.glif | 52 + .../dummy/mm0/font1.ufo/glyphs/I_zhitsa.glif | 40 + .../mm0/font1.ufo/glyphs/J_circumflex.glif | 68 + .../input/dummy/mm0/font1.ufo/glyphs/J_e.glif | 58 + .../input/dummy/mm0/font1.ufo/glyphs/K_a.glif | 89 + .../mm0/font1.ufo/glyphs/K_abashkir.glif | 94 + .../mm0/font1.ufo/glyphs/K_adescender.glif | 95 + .../dummy/mm0/font1.ufo/glyphs/K_appa.glif | 80 + .../mm0/font1.ufo/glyphs/K_commaaccent.glif | 102 + .../dummy/mm0/font1.ufo/glyphs/K_je.glif | 115 + .../dummy/mm0/font1.ufo/glyphs/L_acute.glif | 77 + .../dummy/mm0/font1.ufo/glyphs/L_ambda.glif | 33 + .../dummy/mm0/font1.ufo/glyphs/L_caron.glif | 73 + .../mm0/font1.ufo/glyphs/L_commaaccent.glif | 81 + .../dummy/mm0/font1.ufo/glyphs/L_dot.glif | 73 + .../mm0/font1.ufo/glyphs/L_dotbelow.glif | 73 + .../font1.ufo/glyphs/L_dotbelowmacron.glif | 79 + .../dummy/mm0/font1.ufo/glyphs/L_je.glif | 101 + .../mm0/font1.ufo/glyphs/L_linebelow.glif | 65 + .../dummy/mm0/font1.ufo/glyphs/L_slash.glif | 60 + .../dummy/mm0/font1.ufo/glyphs/M_acute.glif | 98 + .../mm0/font1.ufo/glyphs/M_dotbelow.glif | 94 + .../input/dummy/mm0/font1.ufo/glyphs/M_u.glif | 80 + .../dummy/mm0/font1.ufo/glyphs/N_acute.glif | 69 + .../dummy/mm0/font1.ufo/glyphs/N_caron.glif | 61 + .../mm0/font1.ufo/glyphs/N_commaaccent.glif | 73 + .../mm0/font1.ufo/glyphs/N_dotaccent.glif | 65 + .../mm0/font1.ufo/glyphs/N_dotbelow.glif | 65 + .../dummy/mm0/font1.ufo/glyphs/N_grave.glif | 69 + .../dummy/mm0/font1.ufo/glyphs/N_je.glif | 104 + .../mm0/font1.ufo/glyphs/N_linebelow.glif | 57 + .../dummy/mm0/font1.ufo/glyphs/N_tilde.glif | 79 + .../input/dummy/mm0/font1.ufo/glyphs/N_u.glif | 51 + .../dummy/mm0/font1.ufo/glyphs/O_E_.glif | 86 + .../dummy/mm0/font1.ufo/glyphs/O_acute.glif | 64 + .../dummy/mm0/font1.ufo/glyphs/O_barcyr.glif | 55 + .../dummy/mm0/font1.ufo/glyphs/O_breve.glif | 62 + .../dummy/mm0/font1.ufo/glyphs/O_caron.glif | 56 + .../mm0/font1.ufo/glyphs/O_circumflex.glif | 56 + .../font1.ufo/glyphs/O_circumflexacute.glif | 70 + .../glyphs/O_circumflexdotbelow.glif | 70 + .../font1.ufo/glyphs/O_circumflexgrave.glif | 70 + .../mm0/font1.ufo/glyphs/O_circumflexhoi.glif | 72 + .../font1.ufo/glyphs/O_circumflextilde.glif | 84 + .../dummy/mm0/font1.ufo/glyphs/O_cyr.glif | 49 + .../mm0/font1.ufo/glyphs/O_dieresis.glif | 74 + .../mm0/font1.ufo/glyphs/O_dieresiscyr.glif | 74 + .../mm0/font1.ufo/glyphs/O_dotbelow.glif | 60 + .../dummy/mm0/font1.ufo/glyphs/O_grave.glif | 64 + .../dummy/mm0/font1.ufo/glyphs/O_hoi.glif | 62 + .../dummy/mm0/font1.ufo/glyphs/O_horn.glif | 73 + .../mm0/font1.ufo/glyphs/O_hornacute.glif | 85 + .../mm0/font1.ufo/glyphs/O_horndotbelow.glif | 81 + .../mm0/font1.ufo/glyphs/O_horngrave.glif | 85 + .../dummy/mm0/font1.ufo/glyphs/O_hornhoi.glif | 83 + .../mm0/font1.ufo/glyphs/O_horntilde.glif | 95 + .../mm0/font1.ufo/glyphs/O_hungarumlaut.glif | 74 + .../dummy/mm0/font1.ufo/glyphs/O_macron.glif | 52 + .../dummy/mm0/font1.ufo/glyphs/O_mega.glif | 59 + .../mm0/font1.ufo/glyphs/O_megatonos.glif | 88 + .../dummy/mm0/font1.ufo/glyphs/O_micron.glif | 46 + .../mm0/font1.ufo/glyphs/O_microntonos.glif | 64 + .../dummy/mm0/font1.ufo/glyphs/O_slash.glif | 44 + .../dummy/mm0/font1.ufo/glyphs/O_tilde.glif | 74 + .../dummy/mm0/font1.ufo/glyphs/P_alochka.glif | 52 + .../input/dummy/mm0/font1.ufo/glyphs/P_e.glif | 79 + .../dummy/mm0/font1.ufo/glyphs/P_hi.glif | 81 + .../input/dummy/mm0/font1.ufo/glyphs/P_i.glif | 79 + .../dummy/mm0/font1.ufo/glyphs/P_si.glif | 77 + .../dummy/mm0/font1.ufo/glyphs/R_acute.glif | 107 + .../dummy/mm0/font1.ufo/glyphs/R_caron.glif | 99 + .../mm0/font1.ufo/glyphs/R_commaaccent.glif | 111 + .../mm0/font1.ufo/glyphs/R_dotbelow.glif | 103 + .../font1.ufo/glyphs/R_dotbelowmacron.glif | 109 + .../dummy/mm0/font1.ufo/glyphs/R_ho.glif | 71 + .../mm0/font1.ufo/glyphs/R_linebelow.glif | 95 + .../dummy/mm0/font1.ufo/glyphs/S_acute.glif | 86 + .../dummy/mm0/font1.ufo/glyphs/S_caron.glif | 78 + .../dummy/mm0/font1.ufo/glyphs/S_cedilla.glif | 93 + .../dummy/mm0/font1.ufo/glyphs/S_chwa.glif | 49 + .../dummy/mm0/font1.ufo/glyphs/S_chwacyr.glif | 46 + .../mm0/font1.ufo/glyphs/S_circumflex.glif | 78 + .../mm0/font1.ufo/glyphs/S_commaaccent.glif | 90 + .../mm0/font1.ufo/glyphs/S_dotaccent.glif | 82 + .../mm0/font1.ufo/glyphs/S_dotbelow.glif | 82 + .../dummy/mm0/font1.ufo/glyphs/S_ha.glif | 105 + .../dummy/mm0/font1.ufo/glyphs/S_hcha.glif | 101 + .../dummy/mm0/font1.ufo/glyphs/S_hha.glif | 69 + .../dummy/mm0/font1.ufo/glyphs/S_igma.glif | 33 + .../dummy/mm0/font1.ufo/glyphs/S_oft.glif | 64 + .../dummy/mm0/font1.ufo/glyphs/T_au.glif | 56 + .../dummy/mm0/font1.ufo/glyphs/T_bar.glif | 51 + .../dummy/mm0/font1.ufo/glyphs/T_caron.glif | 66 + .../dummy/mm0/font1.ufo/glyphs/T_cedilla.glif | 81 + .../mm0/font1.ufo/glyphs/T_commaaccent.glif | 78 + .../mm0/font1.ufo/glyphs/T_dotbelow.glif | 70 + .../input/dummy/mm0/font1.ufo/glyphs/T_e.glif | 56 + .../dummy/mm0/font1.ufo/glyphs/T_heta.glif | 57 + .../dummy/mm0/font1.ufo/glyphs/T_horn.glif | 61 + .../mm0/font1.ufo/glyphs/T_linebelow.glif | 62 + .../dummy/mm0/font1.ufo/glyphs/T_se.glif | 78 + .../dummy/mm0/font1.ufo/glyphs/T_she.glif | 72 + .../dummy/mm0/font1.ufo/glyphs/U_acute.glif | 78 + .../mm0/font1.ufo/glyphs/U_acutedblcyr.glif | 90 + .../dummy/mm0/font1.ufo/glyphs/U_breve.glif | 76 + .../dummy/mm0/font1.ufo/glyphs/U_caron.glif | 70 + .../mm0/font1.ufo/glyphs/U_circumflex.glif | 70 + .../dummy/mm0/font1.ufo/glyphs/U_cyr.glif | 54 + .../mm0/font1.ufo/glyphs/U_dieresis.glif | 88 + .../mm0/font1.ufo/glyphs/U_dieresisacute.glif | 102 + .../mm0/font1.ufo/glyphs/U_dieresiscaron.glif | 98 + .../mm0/font1.ufo/glyphs/U_dieresisgrave.glif | 102 + .../font1.ufo/glyphs/U_dieresismacron.glif | 94 + .../mm0/font1.ufo/glyphs/U_dotbelow.glif | 74 + .../dummy/mm0/font1.ufo/glyphs/U_grave.glif | 78 + .../dummy/mm0/font1.ufo/glyphs/U_hoi.glif | 76 + .../dummy/mm0/font1.ufo/glyphs/U_horn.glif | 75 + .../mm0/font1.ufo/glyphs/U_hornacute.glif | 98 + .../mm0/font1.ufo/glyphs/U_horndotbelow.glif | 94 + .../mm0/font1.ufo/glyphs/U_horngrave.glif | 98 + .../dummy/mm0/font1.ufo/glyphs/U_hornhoi.glif | 96 + .../mm0/font1.ufo/glyphs/U_horntilde.glif | 108 + .../mm0/font1.ufo/glyphs/U_hungarumlaut.glif | 88 + .../dummy/mm0/font1.ufo/glyphs/U_macron.glif | 66 + .../mm0/font1.ufo/glyphs/U_macroncyr.glif | 68 + .../dummy/mm0/font1.ufo/glyphs/U_ogonek.glif | 75 + .../dummy/mm0/font1.ufo/glyphs/U_psilon.glif | 62 + .../font1.ufo/glyphs/U_psilondieresis.glif | 90 + .../mm0/font1.ufo/glyphs/U_psilontonos.glif | 80 + .../dummy/mm0/font1.ufo/glyphs/U_ring.glif | 88 + .../dummy/mm0/font1.ufo/glyphs/U_short.glif | 96 + .../mm0/font1.ufo/glyphs/U_straight.glif | 65 + .../font1.ufo/glyphs/U_straightstroke.glif | 60 + .../dummy/mm0/font1.ufo/glyphs/U_tilde.glif | 88 + .../input/dummy/mm0/font1.ufo/glyphs/V_e.glif | 86 + .../dummy/mm0/font1.ufo/glyphs/W_acute.glif | 75 + .../mm0/font1.ufo/glyphs/W_circumflex.glif | 67 + .../mm0/font1.ufo/glyphs/W_dieresis.glif | 85 + .../dummy/mm0/font1.ufo/glyphs/W_grave.glif | 75 + .../input/dummy/mm0/font1.ufo/glyphs/X_i.glif | 53 + .../input/dummy/mm0/font1.ufo/glyphs/Y_a.glif | 81 + .../dummy/mm0/font1.ufo/glyphs/Y_acute.glif | 80 + .../dummy/mm0/font1.ufo/glyphs/Y_at.glif | 76 + .../mm0/font1.ufo/glyphs/Y_circumflex.glif | 72 + .../mm0/font1.ufo/glyphs/Y_dieresis.glif | 90 + .../mm0/font1.ufo/glyphs/Y_dotaccent.glif | 76 + .../mm0/font1.ufo/glyphs/Y_dotbelow.glif | 76 + .../dummy/mm0/font1.ufo/glyphs/Y_eru.glif | 101 + .../dummy/mm0/font1.ufo/glyphs/Y_grave.glif | 80 + .../dummy/mm0/font1.ufo/glyphs/Y_hoi.glif | 78 + .../input/dummy/mm0/font1.ufo/glyphs/Y_i.glif | 80 + .../dummy/mm0/font1.ufo/glyphs/Y_tilde.glif | 90 + .../input/dummy/mm0/font1.ufo/glyphs/Y_u.glif | 78 + .../dummy/mm0/font1.ufo/glyphs/Z_acute.glif | 52 + .../dummy/mm0/font1.ufo/glyphs/Z_caron.glif | 44 + .../mm0/font1.ufo/glyphs/Z_dotaccent.glif | 48 + .../mm0/font1.ufo/glyphs/Z_dotbelow.glif | 48 + .../input/dummy/mm0/font1.ufo/glyphs/Z_e.glif | 62 + .../mm0/font1.ufo/glyphs/Z_edescender.glif | 95 + .../dummy/mm0/font1.ufo/glyphs/Z_eta.glif | 34 + .../dummy/mm0/font1.ufo/glyphs/Z_he.glif | 134 + .../dummy/mm0/font1.ufo/glyphs/Z_hebreve.glif | 176 + .../mm0/font1.ufo/glyphs/Z_hedescender.glif | 140 + .../dummy/mm0/font1.ufo/glyphs/a.sups.glif | 74 + .../dummy/mm0/font1.ufo/glyphs/aacute.glif | 103 + .../dummy/mm0/font1.ufo/glyphs/abreve.glif | 101 + .../mm0/font1.ufo/glyphs/abreveacute.glif | 115 + .../dummy/mm0/font1.ufo/glyphs/abrevecyr.glif | 119 + .../mm0/font1.ufo/glyphs/abrevedotbelow.glif | 115 + .../mm0/font1.ufo/glyphs/abrevegrave.glif | 115 + .../dummy/mm0/font1.ufo/glyphs/abrevehoi.glif | 117 + .../mm0/font1.ufo/glyphs/abrevetilde.glif | 129 + .../dummy/mm0/font1.ufo/glyphs/acaron.glif | 95 + .../mm0/font1.ufo/glyphs/acircumflex.glif | 95 + .../font1.ufo/glyphs/acircumflexacute.glif | 109 + .../font1.ufo/glyphs/acircumflexdotbelow.glif | 109 + .../font1.ufo/glyphs/acircumflexgrave.glif | 109 + .../mm0/font1.ufo/glyphs/acircumflexhoi.glif | 111 + .../font1.ufo/glyphs/acircumflextilde.glif | 123 + .../dummy/mm0/font1.ufo/glyphs/acute.glif | 39 + .../dummy/mm0/font1.ufo/glyphs/acutecmb.glif | 27 + .../dummy/mm0/font1.ufo/glyphs/acyr.glif | 88 + .../dummy/mm0/font1.ufo/glyphs/adieresis.glif | 113 + .../dummy/mm0/font1.ufo/glyphs/adotbelow.glif | 99 + .../input/dummy/mm0/font1.ufo/glyphs/ae.glif | 106 + .../dummy/mm0/font1.ufo/glyphs/agrave.glif | 103 + .../dummy/mm0/font1.ufo/glyphs/ahoi.glif | 101 + .../input/dummy/mm0/font1.ufo/glyphs/aie.glif | 111 + .../dummy/mm0/font1.ufo/glyphs/alpha.glif | 61 + .../mm0/font1.ufo/glyphs/alphalatin.glif | 62 + .../mm0/font1.ufo/glyphs/alphatonos.glif | 84 + .../dummy/mm0/font1.ufo/glyphs/amacron.glif | 91 + .../dummy/mm0/font1.ufo/glyphs/anoteleia.glif | 32 + .../dummy/mm0/font1.ufo/glyphs/aogonek.glif | 97 + .../mm0/font1.ufo/glyphs/approxequal.glif | 74 + .../dummy/mm0/font1.ufo/glyphs/aring.glif | 113 + .../dummy/mm0/font1.ufo/glyphs/arrowdown.glif | 21 + .../mm0/font1.ufo/glyphs/arrowdownleft.glif | 21 + .../mm0/font1.ufo/glyphs/arrowdownright.glif | 21 + .../dummy/mm0/font1.ufo/glyphs/arrowleft.glif | 21 + .../mm0/font1.ufo/glyphs/arrowright.glif | 21 + .../dummy/mm0/font1.ufo/glyphs/arrowup.glif | 21 + .../mm0/font1.ufo/glyphs/arrowupleft.glif | 21 + .../mm0/font1.ufo/glyphs/arrowupright.glif | 21 + .../dummy/mm0/font1.ufo/glyphs/atilde.glif | 113 + .../dummy/mm0/font1.ufo/glyphs/b.sups.glif | 48 + .../input/dummy/mm0/font1.ufo/glyphs/be.glif | 59 + .../dummy/mm0/font1.ufo/glyphs/beta.glif | 55 + .../dummy/mm0/font1.ufo/glyphs/bitcoin.glif | 99 + .../dummy/mm0/font1.ufo/glyphs/breve.glif | 40 + .../mm0/font1.ufo/glyphs/brevebelowcmb.glif | 36 + .../dummy/mm0/font1.ufo/glyphs/brevecmb.glif | 25 + .../dummy/mm0/font1.ufo/glyphs/brokenbar.glif | 19 + .../dummy/mm0/font1.ufo/glyphs/bullet.glif | 21 + .../mm0/font1.ufo/glyphs/bulletoperator.glif | 32 + .../dummy/mm0/font1.ufo/glyphs/c.sups.glif | 42 + .../dummy/mm0/font1.ufo/glyphs/cacute.glif | 71 + .../dummy/mm0/font1.ufo/glyphs/caron.glif | 31 + .../dummy/mm0/font1.ufo/glyphs/caroncmb.glif | 19 + .../dummy/mm0/font1.ufo/glyphs/ccaron.glif | 63 + .../dummy/mm0/font1.ufo/glyphs/ccedilla.glif | 78 + .../mm0/font1.ufo/glyphs/ccircumflex.glif | 63 + .../mm0/font1.ufo/glyphs/cdotaccent.glif | 67 + .../dummy/mm0/font1.ufo/glyphs/cedi.glif | 55 + .../dummy/mm0/font1.ufo/glyphs/cedilla.glif | 46 + .../mm0/font1.ufo/glyphs/cedillacmb.glif | 34 + .../dummy/mm0/font1.ufo/glyphs/cent.glif | 48 + .../input/dummy/mm0/font1.ufo/glyphs/che.glif | 72 + .../dummy/mm0/font1.ufo/glyphs/check.glif | 25 + .../dummy/mm0/font1.ufo/glyphs/checkbox.glif | 19 + .../mm0/font1.ufo/glyphs/checkedbox.glif | 37 + .../mm0/font1.ufo/glyphs/chedescender.glif | 78 + .../input/dummy/mm0/font1.ufo/glyphs/chi.glif | 53 + .../mm0/font1.ufo/glyphs/circumflex.glif | 34 + .../mm0/font1.ufo/glyphs/circumflexcmb.glif | 22 + .../mm0/font1.ufo/glyphs/colonmonetary.glif | 61 + .../font1.ufo/glyphs/colontriangularmod.glif | 23 + .../mm0/font1.ufo/glyphs/commabelowcmb.glif | 31 + .../mm0/font1.ufo/glyphs/commercemark.glif | 90 + .../dummy/mm0/font1.ufo/glyphs/contents.plist | 1630 +++++ .../dummy/mm0/font1.ufo/glyphs/copyleft.glif | 69 + .../dummy/mm0/font1.ufo/glyphs/copyright.glif | 69 + .../dummy/mm0/font1.ufo/glyphs/currency.glif | 91 + .../dummy/mm0/font1.ufo/glyphs/d.sups.glif | 48 + .../dummy/mm0/font1.ufo/glyphs/dagger.glif | 74 + .../dummy/mm0/font1.ufo/glyphs/daggerdbl.glif | 125 + .../dummy/mm0/font1.ufo/glyphs/dblprime.glif | 50 + .../dummy/mm0/font1.ufo/glyphs/dcaron.glif | 75 + .../dummy/mm0/font1.ufo/glyphs/dcroat.glif | 57 + .../dummy/mm0/font1.ufo/glyphs/ddotbelow.glif | 75 + .../input/dummy/mm0/font1.ufo/glyphs/de.glif | 67 + .../dummy/mm0/font1.ufo/glyphs/degree.glif | 35 + .../dummy/mm0/font1.ufo/glyphs/delta.glif | 62 + .../mm0/font1.ufo/glyphs/deposeemark.glif | 96 + .../mm0/font1.ufo/glyphs/diamondblack.glif | 13 + .../dummy/mm0/font1.ufo/glyphs/dieresis.glif | 49 + .../font1.ufo/glyphs/dieresisbelowcmb.glif | 48 + .../mm0/font1.ufo/glyphs/dieresiscmb.glif | 40 + .../mm0/font1.ufo/glyphs/dieresistonos.glif | 67 + .../dummy/mm0/font1.ufo/glyphs/digamma.glif | 30 + .../dummy/mm0/font1.ufo/glyphs/divide.glif | 41 + .../mm0/font1.ufo/glyphs/divisionslash.glif | 24 + .../input/dummy/mm0/font1.ufo/glyphs/dje.glif | 77 + .../mm0/font1.ufo/glyphs/dlinebelow.glif | 67 + .../mm0/font1.ufo/glyphs/dngb_cross.glif | 19 + .../dummy/mm0/font1.ufo/glyphs/dong.glif | 62 + .../dummy/mm0/font1.ufo/glyphs/dotaccent.glif | 35 + .../mm0/font1.ufo/glyphs/dotaccentcmb.glif | 26 + .../mm0/font1.ufo/glyphs/dotbelowcmb.glif | 34 + .../dummy/mm0/font1.ufo/glyphs/dotlessi.glif | 43 + .../dummy/mm0/font1.ufo/glyphs/dotlessj.glif | 49 + .../input/dummy/mm0/font1.ufo/glyphs/dze.glif | 68 + .../dummy/mm0/font1.ufo/glyphs/dzhe.glif | 85 + .../dummy/mm0/font1.ufo/glyphs/e.sups.glif | 43 + .../dummy/mm0/font1.ufo/glyphs/eacute.glif | 72 + .../dummy/mm0/font1.ufo/glyphs/ebreve.glif | 70 + .../dummy/mm0/font1.ufo/glyphs/ecaron.glif | 64 + .../mm0/font1.ufo/glyphs/ecircumflex.glif | 64 + .../font1.ufo/glyphs/ecircumflexacute.glif | 78 + .../font1.ufo/glyphs/ecircumflexdotbelow.glif | 78 + .../font1.ufo/glyphs/ecircumflexgrave.glif | 78 + .../mm0/font1.ufo/glyphs/ecircumflexhoi.glif | 80 + .../font1.ufo/glyphs/ecircumflextilde.glif | 92 + .../dummy/mm0/font1.ufo/glyphs/ecyr.glif | 54 + .../dummy/mm0/font1.ufo/glyphs/edieresis.glif | 82 + .../mm0/font1.ufo/glyphs/edotaccent.glif | 68 + .../dummy/mm0/font1.ufo/glyphs/edotbelow.glif | 68 + .../input/dummy/mm0/font1.ufo/glyphs/ef.glif | 90 + .../dummy/mm0/font1.ufo/glyphs/egrave.glif | 72 + .../dummy/mm0/font1.ufo/glyphs/ehoi.glif | 70 + .../mm0/font1.ufo/glyphs/eight.subs.glif | 70 + .../mm0/font1.ufo/glyphs/eight.sups.glif | 59 + .../mm0/font1.ufo/glyphs/eighthnote.glif | 45 + .../input/dummy/mm0/font1.ufo/glyphs/el.glif | 78 + .../dummy/mm0/font1.ufo/glyphs/ellipsis.glif | 60 + .../input/dummy/mm0/font1.ufo/glyphs/em.glif | 67 + .../dummy/mm0/font1.ufo/glyphs/emacron.glif | 60 + .../dummy/mm0/font1.ufo/glyphs/emdash.glif | 13 + .../input/dummy/mm0/font1.ufo/glyphs/en.glif | 81 + .../dummy/mm0/font1.ufo/glyphs/endash.glif | 13 + .../mm0/font1.ufo/glyphs/endescender.glif | 90 + .../input/dummy/mm0/font1.ufo/glyphs/eng.glif | 77 + .../dummy/mm0/font1.ufo/glyphs/eogonek.glif | 69 + .../dummy/mm0/font1.ufo/glyphs/epsilon.glif | 69 + .../mm0/font1.ufo/glyphs/epsilontonos.glif | 92 + .../input/dummy/mm0/font1.ufo/glyphs/er.glif | 76 + .../input/dummy/mm0/font1.ufo/glyphs/es.glif | 53 + .../mm0/font1.ufo/glyphs/esdescender.glif | 75 + .../dummy/mm0/font1.ufo/glyphs/estimated.glif | 62 + .../input/dummy/mm0/font1.ufo/glyphs/eta.glif | 53 + .../dummy/mm0/font1.ufo/glyphs/etatonos.glif | 76 + .../input/dummy/mm0/font1.ufo/glyphs/eth.glif | 49 + .../dummy/mm0/font1.ufo/glyphs/etilde.glif | 82 + .../dummy/mm0/font1.ufo/glyphs/exclamdbl.glif | 69 + .../mm0/font1.ufo/glyphs/exclamdown.glif | 49 + .../mm0/font1.ufo/glyphs/exclamquestion.glif | 88 + .../dummy/mm0/font1.ufo/glyphs/f.sups.glif | 57 + .../input/dummy/mm0/font1.ufo/glyphs/f_f.glif | 115 + .../dummy/mm0/font1.ufo/glyphs/f_f_i.glif | 138 + .../dummy/mm0/font1.ufo/glyphs/f_f_l.glif | 133 + .../input/dummy/mm0/font1.ufo/glyphs/f_i.glif | 86 + .../input/dummy/mm0/font1.ufo/glyphs/f_l.glif | 81 + .../mm0/font1.ufo/glyphs/figuredash.glif | 13 + .../mm0/font1.ufo/glyphs/figurespace.glif | 5 + .../dummy/mm0/font1.ufo/glyphs/fisheye.glif | 49 + .../dummy/mm0/font1.ufo/glyphs/fita.glif | 44 + .../dummy/mm0/font1.ufo/glyphs/five.subs.glif | 61 + .../dummy/mm0/font1.ufo/glyphs/five.sups.glif | 50 + .../mm0/font1.ufo/glyphs/fiveeighths.glif | 119 + .../dummy/mm0/font1.ufo/glyphs/florin.glif | 63 + .../dummy/mm0/font1.ufo/glyphs/four.subs.glif | 32 + .../dummy/mm0/font1.ufo/glyphs/four.sups.glif | 21 + .../dummy/mm0/font1.ufo/glyphs/fraction.glif | 13 + .../dummy/mm0/font1.ufo/glyphs/g.sups.glif | 84 + .../dummy/mm0/font1.ufo/glyphs/gamma.glif | 56 + .../dummy/mm0/font1.ufo/glyphs/gbreve.glif | 115 + .../dummy/mm0/font1.ufo/glyphs/gcaron.glif | 109 + .../mm0/font1.ufo/glyphs/gcircumflex.glif | 109 + .../mm0/font1.ufo/glyphs/gcommaaccent.glif | 121 + .../mm0/font1.ufo/glyphs/gdotaccent.glif | 113 + .../mm0/font1.ufo/glyphs/germandbls.glif | 83 + .../input/dummy/mm0/font1.ufo/glyphs/ghe.glif | 52 + .../dummy/mm0/font1.ufo/glyphs/ghestroke.glif | 55 + .../dummy/mm0/font1.ufo/glyphs/gheup.glif | 49 + .../input/dummy/mm0/font1.ufo/glyphs/gje.glif | 78 + .../dummy/mm0/font1.ufo/glyphs/gmacron.glif | 105 + .../dummy/mm0/font1.ufo/glyphs/gravecmb.glif | 27 + .../mm0/font1.ufo/glyphs/greaterequal.glif | 23 + .../dummy/mm0/font1.ufo/glyphs/gscript.glif | 74 + .../dummy/mm0/font1.ufo/glyphs/guarani.glif | 67 + .../mm0/font1.ufo/glyphs/guillemotleft.glif | 38 + .../mm0/font1.ufo/glyphs/guillemotright.glif | 38 + .../mm0/font1.ufo/glyphs/guilsinglleft.glif | 17 + .../mm0/font1.ufo/glyphs/guilsinglright.glif | 17 + .../dummy/mm0/font1.ufo/glyphs/h.sups.glif | 53 + .../input/dummy/mm0/font1.ufo/glyphs/ha.glif | 70 + .../mm0/font1.ufo/glyphs/hadescender.glif | 68 + .../dummy/mm0/font1.ufo/glyphs/hard.glif | 72 + .../dummy/mm0/font1.ufo/glyphs/hbar.glif | 74 + .../mm0/font1.ufo/glyphs/hbrevebelow.glif | 92 + .../mm0/font1.ufo/glyphs/hcircumflex.glif | 86 + .../dummy/mm0/font1.ufo/glyphs/hdotbelow.glif | 90 + .../dummy/mm0/font1.ufo/glyphs/hoicmb.glif | 25 + .../mm0/font1.ufo/glyphs/horizontalbar.glif | 24 + .../dummy/mm0/font1.ufo/glyphs/horncmb.glif | 30 + .../dummy/mm0/font1.ufo/glyphs/hryvnia.glif | 83 + .../mm0/font1.ufo/glyphs/hungarumlaut.glif | 49 + .../mm0/font1.ufo/glyphs/hungarumlautcmb.glif | 37 + .../dummy/mm0/font1.ufo/glyphs/i.sups.glif | 38 + .../dummy/mm0/font1.ufo/glyphs/iacute.glif | 63 + .../dummy/mm0/font1.ufo/glyphs/icaron.glif | 55 + .../mm0/font1.ufo/glyphs/icircumflex.glif | 55 + .../dummy/mm0/font1.ufo/glyphs/icyr.glif | 72 + .../dummy/mm0/font1.ufo/glyphs/idieresis.glif | 73 + .../dummy/mm0/font1.ufo/glyphs/idotbelow.glif | 73 + .../input/dummy/mm0/font1.ufo/glyphs/ie.glif | 57 + .../dummy/mm0/font1.ufo/glyphs/iebreve.glif | 88 + .../dummy/mm0/font1.ufo/glyphs/iegrave.glif | 72 + .../dummy/mm0/font1.ufo/glyphs/ieukran.glif | 47 + .../dummy/mm0/font1.ufo/glyphs/igrave.glif | 63 + .../dummy/mm0/font1.ufo/glyphs/igravecyr.glif | 98 + .../dummy/mm0/font1.ufo/glyphs/ihoi.glif | 61 + .../input/dummy/mm0/font1.ufo/glyphs/ij.glif | 101 + .../dummy/mm0/font1.ufo/glyphs/imacron.glif | 51 + .../mm0/font1.ufo/glyphs/imacroncyr.glif | 86 + .../dummy/mm0/font1.ufo/glyphs/infinity.glif | 59 + .../dummy/mm0/font1.ufo/glyphs/integral.glif | 49 + .../input/dummy/mm0/font1.ufo/glyphs/io.glif | 82 + .../dummy/mm0/font1.ufo/glyphs/iogonek.glif | 81 + .../dummy/mm0/font1.ufo/glyphs/iota.glif | 31 + .../mm0/font1.ufo/glyphs/iotadieresis.glif | 67 + .../font1.ufo/glyphs/iotadieresistonos.glif | 85 + .../dummy/mm0/font1.ufo/glyphs/iotatonos.glif | 57 + .../dummy/mm0/font1.ufo/glyphs/ishort.glif | 114 + .../dummy/mm0/font1.ufo/glyphs/itilde.glif | 73 + .../dummy/mm0/font1.ufo/glyphs/iukran.glif | 59 + .../dummy/mm0/font1.ufo/glyphs/izhitsa.glif | 43 + .../dummy/mm0/font1.ufo/glyphs/j.sups.glif | 56 + .../mm0/font1.ufo/glyphs/jcircumflex.glif | 67 + .../input/dummy/mm0/font1.ufo/glyphs/je.glif | 71 + .../dummy/mm0/font1.ufo/glyphs/k.sups.glif | 47 + .../input/dummy/mm0/font1.ufo/glyphs/ka.glif | 89 + .../dummy/mm0/font1.ufo/glyphs/kabashkir.glif | 94 + .../mm0/font1.ufo/glyphs/kadescender.glif | 95 + .../input/dummy/mm0/font1.ufo/glyphs/kai.glif | 85 + .../dummy/mm0/font1.ufo/glyphs/kappa.glif | 69 + .../mm0/font1.ufo/glyphs/kcommaaccent.glif | 86 + .../mm0/font1.ufo/glyphs/kgreenlandic.glif | 57 + .../input/dummy/mm0/font1.ufo/glyphs/kje.glif | 115 + .../dummy/mm0/font1.ufo/glyphs/koppa.glif | 45 + .../dummy/mm0/font1.ufo/glyphs/l.sups.glif | 24 + .../dummy/mm0/font1.ufo/glyphs/lacute.glif | 60 + .../dummy/mm0/font1.ufo/glyphs/lambda.glif | 45 + .../dummy/mm0/font1.ufo/glyphs/lcaron.glif | 56 + .../mm0/font1.ufo/glyphs/lcommaaccent.glif | 64 + .../dummy/mm0/font1.ufo/glyphs/ldot.glif | 45 + .../dummy/mm0/font1.ufo/glyphs/ldotbelow.glif | 56 + .../mm0/font1.ufo/glyphs/ldotbelowmacron.glif | 62 + .../dummy/mm0/font1.ufo/glyphs/lessequal.glif | 23 + .../dummy/mm0/font1.ufo/glyphs/lira.glif | 58 + .../mm0/font1.ufo/glyphs/liraturkish.glif | 78 + .../dummy/mm0/font1.ufo/glyphs/litre.glif | 42 + .../input/dummy/mm0/font1.ufo/glyphs/lje.glif | 101 + .../mm0/font1.ufo/glyphs/llinebelow.glif | 48 + .../mm0/font1.ufo/glyphs/logicalnot.glif | 16 + .../dummy/mm0/font1.ufo/glyphs/longs.glif | 49 + .../mm0/font1.ufo/glyphs/lownumeralsign.glif | 23 + .../dummy/mm0/font1.ufo/glyphs/lozenge.glif | 21 + .../dummy/mm0/font1.ufo/glyphs/lslash.glif | 43 + .../dummy/mm0/font1.ufo/glyphs/m.sups.glif | 83 + .../mm0/font1.ufo/glyphs/macronbelowcmb.glif | 26 + .../dummy/mm0/font1.ufo/glyphs/macroncmb.glif | 15 + .../dummy/mm0/font1.ufo/glyphs/macronmod.glif | 24 + .../dummy/mm0/font1.ufo/glyphs/macute.glif | 127 + .../dummy/mm0/font1.ufo/glyphs/mdotbelow.glif | 123 + .../dummy/mm0/font1.ufo/glyphs/minus.glif | 13 + .../input/dummy/mm0/font1.ufo/glyphs/mu.glif | 57 + .../dummy/mm0/font1.ufo/glyphs/multiply.glif | 19 + .../dummy/mm0/font1.ufo/glyphs/n.sups.glif | 54 + .../dummy/mm0/font1.ufo/glyphs/nacute.glif | 95 + .../dummy/mm0/font1.ufo/glyphs/naira.glif | 53 + .../mm0/font1.ufo/glyphs/napostrophe.glif | 100 + .../dummy/mm0/font1.ufo/glyphs/ncaron.glif | 87 + .../mm0/font1.ufo/glyphs/ncommaaccent.glif | 99 + .../mm0/font1.ufo/glyphs/ndotaccent.glif | 91 + .../dummy/mm0/font1.ufo/glyphs/ndotbelow.glif | 91 + .../dummy/mm0/font1.ufo/glyphs/ngrave.glif | 95 + .../dummy/mm0/font1.ufo/glyphs/nine.subs.glif | 52 + .../dummy/mm0/font1.ufo/glyphs/nine.sups.glif | 41 + .../input/dummy/mm0/font1.ufo/glyphs/nje.glif | 104 + .../mm0/font1.ufo/glyphs/nlinebelow.glif | 83 + .../dummy/mm0/font1.ufo/glyphs/notequal.glif | 25 + .../dummy/mm0/font1.ufo/glyphs/ntilde.glif | 105 + .../input/dummy/mm0/font1.ufo/glyphs/nu.glif | 49 + .../mm0/font1.ufo/glyphs/numeralsign.glif | 34 + .../dummy/mm0/font1.ufo/glyphs/numero.glif | 99 + .../dummy/mm0/font1.ufo/glyphs/o.sups.glif | 35 + .../dummy/mm0/font1.ufo/glyphs/oacute.glif | 64 + .../dummy/mm0/font1.ufo/glyphs/obarcyr.glif | 55 + .../dummy/mm0/font1.ufo/glyphs/obreve.glif | 62 + .../dummy/mm0/font1.ufo/glyphs/ocaron.glif | 56 + .../mm0/font1.ufo/glyphs/ocircumflex.glif | 56 + .../font1.ufo/glyphs/ocircumflexacute.glif | 70 + .../font1.ufo/glyphs/ocircumflexdotbelow.glif | 70 + .../font1.ufo/glyphs/ocircumflexgrave.glif | 70 + .../mm0/font1.ufo/glyphs/ocircumflexhoi.glif | 72 + .../font1.ufo/glyphs/ocircumflextilde.glif | 84 + .../dummy/mm0/font1.ufo/glyphs/ocyr.glif | 49 + .../dummy/mm0/font1.ufo/glyphs/odieresis.glif | 74 + .../mm0/font1.ufo/glyphs/odieresiscyr.glif | 74 + .../dummy/mm0/font1.ufo/glyphs/odotbelow.glif | 60 + .../input/dummy/mm0/font1.ufo/glyphs/oe.glif | 74 + .../dummy/mm0/font1.ufo/glyphs/ogonek.glif | 43 + .../dummy/mm0/font1.ufo/glyphs/ogonekcmb.glif | 31 + .../dummy/mm0/font1.ufo/glyphs/ograve.glif | 64 + .../dummy/mm0/font1.ufo/glyphs/ohoi.glif | 62 + .../dummy/mm0/font1.ufo/glyphs/ohorn.glif | 62 + .../mm0/font1.ufo/glyphs/ohornacute.glif | 85 + .../mm0/font1.ufo/glyphs/ohorndotbelow.glif | 81 + .../mm0/font1.ufo/glyphs/ohorngrave.glif | 85 + .../dummy/mm0/font1.ufo/glyphs/ohornhoi.glif | 83 + .../mm0/font1.ufo/glyphs/ohorntilde.glif | 95 + .../mm0/font1.ufo/glyphs/ohungarumlaut.glif | 74 + .../dummy/mm0/font1.ufo/glyphs/omacron.glif | 52 + .../dummy/mm0/font1.ufo/glyphs/omega.glif | 62 + .../mm0/font1.ufo/glyphs/omegatonos.glif | 85 + .../dummy/mm0/font1.ufo/glyphs/omicron.glif | 38 + .../mm0/font1.ufo/glyphs/omicrontonos.glif | 64 + .../dummy/mm0/font1.ufo/glyphs/one.subs.glif | 35 + .../dummy/mm0/font1.ufo/glyphs/one.sups.glif | 24 + .../dummy/mm0/font1.ufo/glyphs/oneeighth.glif | 93 + .../dummy/mm0/font1.ufo/glyphs/onehalf.glif | 76 + .../mm0/font1.ufo/glyphs/onequarter.glif | 55 + .../dummy/mm0/font1.ufo/glyphs/onethird.glif | 99 + .../mm0/font1.ufo/glyphs/ordfeminine.glif | 85 + .../mm0/font1.ufo/glyphs/ordmasculine.glif | 46 + .../dummy/mm0/font1.ufo/glyphs/oslash.glif | 44 + .../dummy/mm0/font1.ufo/glyphs/otilde.glif | 74 + .../dummy/mm0/font1.ufo/glyphs/overline.glif | 13 + .../dummy/mm0/font1.ufo/glyphs/p.sups.glif | 53 + .../dummy/mm0/font1.ufo/glyphs/palochka.glif | 42 + .../dummy/mm0/font1.ufo/glyphs/paragraph.glif | 41 + .../mm0/font1.ufo/glyphs/parenleft.subs.glif | 34 + .../mm0/font1.ufo/glyphs/parenleft.sups.glif | 23 + .../mm0/font1.ufo/glyphs/parenright.subs.glif | 34 + .../mm0/font1.ufo/glyphs/parenright.sups.glif | 23 + .../mm0/font1.ufo/glyphs/partialdiff.glif | 47 + .../input/dummy/mm0/font1.ufo/glyphs/pe.glif | 79 + .../mm0/font1.ufo/glyphs/periodcentered.glif | 32 + .../mm0/font1.ufo/glyphs/perthousand.glif | 108 + .../dummy/mm0/font1.ufo/glyphs/peseta.glif | 66 + .../dummy/mm0/font1.ufo/glyphs/peso.glif | 72 + .../input/dummy/mm0/font1.ufo/glyphs/phi.glif | 48 + .../input/dummy/mm0/font1.ufo/glyphs/pi.glif | 60 + .../dummy/mm0/font1.ufo/glyphs/plusminus.glif | 25 + .../dummy/mm0/font1.ufo/glyphs/prime.glif | 23 + .../dummy/mm0/font1.ufo/glyphs/product.glif | 79 + .../input/dummy/mm0/font1.ufo/glyphs/psi.glif | 69 + .../mm0/font1.ufo/glyphs/questiondbl.glif | 107 + .../mm0/font1.ufo/glyphs/questiondown.glif | 68 + .../mm0/font1.ufo/glyphs/questionexclam.glif | 88 + .../mm0/font1.ufo/glyphs/questiongreek.glif | 55 + .../mm0/font1.ufo/glyphs/quotedblbase.glif | 64 + .../mm0/font1.ufo/glyphs/quotedblleft.glif | 64 + .../mm0/font1.ufo/glyphs/quotedblright.glif | 64 + .../dummy/mm0/font1.ufo/glyphs/quoteleft.glif | 30 + .../mm0/font1.ufo/glyphs/quoteright.glif | 30 + .../mm0/font1.ufo/glyphs/quotesinglbase.glif | 41 + .../dummy/mm0/font1.ufo/glyphs/r.sups.glif | 48 + .../dummy/mm0/font1.ufo/glyphs/racute.glif | 83 + .../dummy/mm0/font1.ufo/glyphs/radical.glif | 20 + .../dummy/mm0/font1.ufo/glyphs/rcaron.glif | 75 + .../mm0/font1.ufo/glyphs/rcommaaccent.glif | 87 + .../dummy/mm0/font1.ufo/glyphs/rdotbelow.glif | 79 + .../mm0/font1.ufo/glyphs/rdotbelowmacron.glif | 85 + .../mm0/font1.ufo/glyphs/registered.glif | 94 + .../input/dummy/mm0/font1.ufo/glyphs/rho.glif | 44 + .../dummy/mm0/font1.ufo/glyphs/ring.glif | 49 + .../dummy/mm0/font1.ufo/glyphs/ringcmb.glif | 37 + .../mm0/font1.ufo/glyphs/ringhalfleftmod.glif | 23 + .../font1.ufo/glyphs/ringhalfrightmod.glif | 23 + .../mm0/font1.ufo/glyphs/rlinebelow.glif | 71 + .../dummy/mm0/font1.ufo/glyphs/ruble.glif | 66 + .../mm0/font1.ufo/glyphs/rupeeindian.glif | 54 + .../dummy/mm0/font1.ufo/glyphs/s.sups.glif | 55 + .../dummy/mm0/font1.ufo/glyphs/sacute.glif | 86 + .../dummy/mm0/font1.ufo/glyphs/sampi.glif | 35 + .../dummy/mm0/font1.ufo/glyphs/scaron.glif | 78 + .../dummy/mm0/font1.ufo/glyphs/scedilla.glif | 93 + .../dummy/mm0/font1.ufo/glyphs/schwa.glif | 49 + .../dummy/mm0/font1.ufo/glyphs/schwacyr.glif | 54 + .../mm0/font1.ufo/glyphs/scircumflex.glif | 78 + .../mm0/font1.ufo/glyphs/scommaaccent.glif | 90 + .../mm0/font1.ufo/glyphs/sdotaccent.glif | 82 + .../dummy/mm0/font1.ufo/glyphs/sdotbelow.glif | 82 + .../dummy/mm0/font1.ufo/glyphs/section.glif | 89 + .../mm0/font1.ufo/glyphs/servicemark.glif | 104 + .../mm0/font1.ufo/glyphs/seven.subs.glif | 29 + .../mm0/font1.ufo/glyphs/seven.sups.glif | 18 + .../mm0/font1.ufo/glyphs/seveneighths.glif | 87 + .../input/dummy/mm0/font1.ufo/glyphs/sha.glif | 105 + .../dummy/mm0/font1.ufo/glyphs/shcha.glif | 101 + .../dummy/mm0/font1.ufo/glyphs/shha.glif | 76 + .../dummy/mm0/font1.ufo/glyphs/sigma.end.glif | 51 + .../dummy/mm0/font1.ufo/glyphs/sigma.glif | 38 + .../dummy/mm0/font1.ufo/glyphs/similar.glif | 35 + .../dummy/mm0/font1.ufo/glyphs/six.subs.glif | 52 + .../dummy/mm0/font1.ufo/glyphs/six.sups.glif | 41 + .../dummy/mm0/font1.ufo/glyphs/soft.glif | 64 + .../mm0/font1.ufo/glyphs/soundcopyright.glif | 76 + .../mm0/font1.ufo/glyphs/squareblack.glif | 13 + .../mm0/font1.ufo/glyphs/squareshadow.glif | 21 + .../dummy/mm0/font1.ufo/glyphs/sterling.glif | 52 + .../dummy/mm0/font1.ufo/glyphs/stigma.glif | 47 + .../dummy/mm0/font1.ufo/glyphs/summation.glif | 33 + .../dummy/mm0/font1.ufo/glyphs/t.sups.glif | 37 + .../input/dummy/mm0/font1.ufo/glyphs/tau.glif | 37 + .../dummy/mm0/font1.ufo/glyphs/tbar.glif | 46 + .../dummy/mm0/font1.ufo/glyphs/tcaron.glif | 65 + .../dummy/mm0/font1.ufo/glyphs/tcedilla.glif | 76 + .../mm0/font1.ufo/glyphs/tcommaaccent.glif | 73 + .../dummy/mm0/font1.ufo/glyphs/tdieresis.glif | 79 + .../dummy/mm0/font1.ufo/glyphs/tdotbelow.glif | 65 + .../input/dummy/mm0/font1.ufo/glyphs/te.glif | 45 + .../dummy/mm0/font1.ufo/glyphs/tenge.glif | 51 + .../dummy/mm0/font1.ufo/glyphs/theta.glif | 41 + .../dummy/mm0/font1.ufo/glyphs/thorn.glif | 69 + .../mm0/font1.ufo/glyphs/three.subs.glif | 76 + .../mm0/font1.ufo/glyphs/three.sups.glif | 65 + .../mm0/font1.ufo/glyphs/threeeighths.glif | 134 + .../mm0/font1.ufo/glyphs/threeemdash.glif | 13 + .../mm0/font1.ufo/glyphs/threequarters.glif | 96 + .../dummy/mm0/font1.ufo/glyphs/tilde.glif | 49 + .../dummy/mm0/font1.ufo/glyphs/tildecmb.glif | 37 + .../mm0/font1.ufo/glyphs/tlinebelow.glif | 57 + .../dummy/mm0/font1.ufo/glyphs/tonos.glif | 39 + .../dummy/mm0/font1.ufo/glyphs/trademark.glif | 82 + .../font1.ufo/glyphs/triangleblackdown.glif | 15 + .../font1.ufo/glyphs/triangleblackleft.glif | 15 + .../font1.ufo/glyphs/triangleblackright.glif | 15 + .../mm0/font1.ufo/glyphs/triangleblackup.glif | 15 + .../font1.ufo/glyphs/trianglewhitedown.glif | 20 + .../font1.ufo/glyphs/trianglewhiteleft.glif | 20 + .../font1.ufo/glyphs/trianglewhiteright.glif | 20 + .../mm0/font1.ufo/glyphs/trianglewhiteup.glif | 20 + .../font1.ufo/glyphs/triangularbullet.glif | 15 + .../input/dummy/mm0/font1.ufo/glyphs/tse.glif | 78 + .../dummy/mm0/font1.ufo/glyphs/tshe.glif | 85 + .../dummy/mm0/font1.ufo/glyphs/tugrik.glif | 69 + .../dummy/mm0/font1.ufo/glyphs/two.subs.glif | 53 + .../dummy/mm0/font1.ufo/glyphs/two.sups.glif | 42 + .../mm0/font1.ufo/glyphs/twodotenleader.glif | 35 + .../dummy/mm0/font1.ufo/glyphs/twoemdash.glif | 13 + .../dummy/mm0/font1.ufo/glyphs/twothirds.glif | 117 + .../dummy/mm0/font1.ufo/glyphs/u.sups.glif | 46 + .../dummy/mm0/font1.ufo/glyphs/uacute.glif | 72 + .../mm0/font1.ufo/glyphs/uacutedblcyr.glif | 92 + .../dummy/mm0/font1.ufo/glyphs/ubreve.glif | 70 + .../dummy/mm0/font1.ufo/glyphs/ucaron.glif | 64 + .../mm0/font1.ufo/glyphs/ucircumflex.glif | 64 + .../dummy/mm0/font1.ufo/glyphs/ucyr.glif | 67 + .../dummy/mm0/font1.ufo/glyphs/udieresis.glif | 82 + .../mm0/font1.ufo/glyphs/udieresisacute.glif | 96 + .../mm0/font1.ufo/glyphs/udieresiscaron.glif | 92 + .../mm0/font1.ufo/glyphs/udieresisgrave.glif | 96 + .../mm0/font1.ufo/glyphs/udieresismacron.glif | 88 + .../dummy/mm0/font1.ufo/glyphs/udotbelow.glif | 68 + .../dummy/mm0/font1.ufo/glyphs/ugrave.glif | 72 + .../dummy/mm0/font1.ufo/glyphs/uhoi.glif | 70 + .../dummy/mm0/font1.ufo/glyphs/uhorn.glif | 70 + .../mm0/font1.ufo/glyphs/uhornacute.glif | 93 + .../mm0/font1.ufo/glyphs/uhorndotbelow.glif | 89 + .../mm0/font1.ufo/glyphs/uhorngrave.glif | 93 + .../dummy/mm0/font1.ufo/glyphs/uhornhoi.glif | 91 + .../mm0/font1.ufo/glyphs/uhorntilde.glif | 103 + .../mm0/font1.ufo/glyphs/uhungarumlaut.glif | 82 + .../dummy/mm0/font1.ufo/glyphs/umacron.glif | 60 + .../mm0/font1.ufo/glyphs/umacroncyr.glif | 70 + .../dummy/mm0/font1.ufo/glyphs/uogonek.glif | 68 + .../dummy/mm0/font1.ufo/glyphs/upsilon.glif | 60 + .../mm0/font1.ufo/glyphs/upsilondieresis.glif | 96 + .../glyphs/upsilondieresistonos.glif | 114 + .../mm0/font1.ufo/glyphs/upsilontonos.glif | 86 + .../dummy/mm0/font1.ufo/glyphs/uring.glif | 82 + .../dummy/mm0/font1.ufo/glyphs/ushort.glif | 98 + .../dummy/mm0/font1.ufo/glyphs/ustraight.glif | 54 + .../mm0/font1.ufo/glyphs/ustraightstroke.glif | 60 + .../dummy/mm0/font1.ufo/glyphs/utilde.glif | 82 + .../dummy/mm0/font1.ufo/glyphs/v.sups.glif | 33 + .../input/dummy/mm0/font1.ufo/glyphs/ve.glif | 75 + .../glyphs/verticallinebelowcmb.glif | 15 + .../font1.ufo/glyphs/verticallinelowmod.glif | 24 + .../mm0/font1.ufo/glyphs/verticallinemod.glif | 13 + .../dummy/mm0/font1.ufo/glyphs/w.sups.glif | 49 + .../dummy/mm0/font1.ufo/glyphs/wacute.glif | 75 + .../mm0/font1.ufo/glyphs/wcircumflex.glif | 67 + .../dummy/mm0/font1.ufo/glyphs/wdieresis.glif | 85 + .../dummy/mm0/font1.ufo/glyphs/wgrave.glif | 75 + .../input/dummy/mm0/font1.ufo/glyphs/won.glif | 51 + .../dummy/mm0/font1.ufo/glyphs/x.sups.glif | 59 + .../input/dummy/mm0/font1.ufo/glyphs/xi.glif | 61 + .../dummy/mm0/font1.ufo/glyphs/y.sups.glif | 52 + .../input/dummy/mm0/font1.ufo/glyphs/ya.glif | 81 + .../dummy/mm0/font1.ufo/glyphs/yacute.glif | 82 + .../input/dummy/mm0/font1.ufo/glyphs/yat.glif | 68 + .../mm0/font1.ufo/glyphs/ycircumflex.glif | 74 + .../dummy/mm0/font1.ufo/glyphs/ydieresis.glif | 92 + .../mm0/font1.ufo/glyphs/ydotaccent.glif | 78 + .../dummy/mm0/font1.ufo/glyphs/ydotbelow.glif | 78 + .../input/dummy/mm0/font1.ufo/glyphs/yen.glif | 65 + .../dummy/mm0/font1.ufo/glyphs/yeru.glif | 101 + .../dummy/mm0/font1.ufo/glyphs/ygrave.glif | 82 + .../dummy/mm0/font1.ufo/glyphs/yhoi.glif | 80 + .../input/dummy/mm0/font1.ufo/glyphs/yi.glif | 73 + .../dummy/mm0/font1.ufo/glyphs/ytilde.glif | 92 + .../input/dummy/mm0/font1.ufo/glyphs/yu.glif | 78 + .../dummy/mm0/font1.ufo/glyphs/z.sups.glif | 27 + .../dummy/mm0/font1.ufo/glyphs/zacute.glif | 52 + .../dummy/mm0/font1.ufo/glyphs/zcaron.glif | 44 + .../mm0/font1.ufo/glyphs/zdotaccent.glif | 48 + .../dummy/mm0/font1.ufo/glyphs/zdotbelow.glif | 48 + .../input/dummy/mm0/font1.ufo/glyphs/ze.glif | 62 + .../mm0/font1.ufo/glyphs/zedescender.glif | 95 + .../dummy/mm0/font1.ufo/glyphs/zero.subs.glif | 46 + .../dummy/mm0/font1.ufo/glyphs/zero.sups.glif | 35 + .../dummy/mm0/font1.ufo/glyphs/zeta.glif | 41 + .../input/dummy/mm0/font1.ufo/glyphs/zhe.glif | 134 + .../dummy/mm0/font1.ufo/glyphs/zhebreve.glif | 176 + .../mm0/font1.ufo/glyphs/zhedescender.glif | 140 + .../input/dummy/mm0/font1.ufo/groups.plist | 5997 +++++++++++++++++ .../dummy/mm0/font1.ufo/layercontents.plist | 14 + .../input/dummy/mm0/font1.ufo/lib.plist | 2070 ++++++ .../input/dummy/mm0/font1.ufo/metainfo.plist | 10 + .../input/dummy/mm0/font2.ufo/fontinfo.plist | 94 + .../dummy/mm0/font2.ufo/glyphs/A_E_.glif | 89 + .../dummy/mm0/font2.ufo/glyphs/A_acute.glif | 67 + .../dummy/mm0/font2.ufo/glyphs/A_breve.glif | 65 + .../mm0/font2.ufo/glyphs/A_breveacute.glif | 79 + .../mm0/font2.ufo/glyphs/A_brevecyr.glif | 83 + .../mm0/font2.ufo/glyphs/A_brevedotbelow.glif | 79 + .../mm0/font2.ufo/glyphs/A_brevegrave.glif | 79 + .../mm0/font2.ufo/glyphs/A_brevehoi.glif | 81 + .../mm0/font2.ufo/glyphs/A_brevetilde.glif | 93 + .../dummy/mm0/font2.ufo/glyphs/A_caron.glif | 59 + .../mm0/font2.ufo/glyphs/A_circumflex.glif | 59 + .../font2.ufo/glyphs/A_circumflexacute.glif | 73 + .../glyphs/A_circumflexdotbelow.glif | 73 + .../font2.ufo/glyphs/A_circumflexgrave.glif | 73 + .../mm0/font2.ufo/glyphs/A_circumflexhoi.glif | 75 + .../font2.ufo/glyphs/A_circumflextilde.glif | 87 + .../dummy/mm0/font2.ufo/glyphs/A_cyr.glif | 52 + .../mm0/font2.ufo/glyphs/A_dieresis.glif | 77 + .../mm0/font2.ufo/glyphs/A_dotbelow.glif | 63 + .../dummy/mm0/font2.ufo/glyphs/A_grave.glif | 67 + .../dummy/mm0/font2.ufo/glyphs/A_hoi.glif | 65 + .../dummy/mm0/font2.ufo/glyphs/A_ie.glif | 97 + .../dummy/mm0/font2.ufo/glyphs/A_lpha.glif | 49 + .../mm0/font2.ufo/glyphs/A_lphatonos.glif | 67 + .../dummy/mm0/font2.ufo/glyphs/A_macron.glif | 55 + .../dummy/mm0/font2.ufo/glyphs/A_ogonek.glif | 74 + .../dummy/mm0/font2.ufo/glyphs/A_ring.glif | 77 + .../dummy/mm0/font2.ufo/glyphs/A_tilde.glif | 77 + .../input/dummy/mm0/font2.ufo/glyphs/B_e.glif | 72 + .../dummy/mm0/font2.ufo/glyphs/B_eta.glif | 86 + .../dummy/mm0/font2.ufo/glyphs/C_acute.glif | 72 + .../dummy/mm0/font2.ufo/glyphs/C_caron.glif | 64 + .../dummy/mm0/font2.ufo/glyphs/C_cedilla.glif | 79 + .../mm0/font2.ufo/glyphs/C_circumflex.glif | 64 + .../mm0/font2.ufo/glyphs/C_dotaccent.glif | 68 + .../dummy/mm0/font2.ufo/glyphs/C_he.glif | 72 + .../mm0/font2.ufo/glyphs/C_hedescender.glif | 78 + .../dummy/mm0/font2.ufo/glyphs/C_hi.glif | 68 + .../dummy/mm0/font2.ufo/glyphs/D_caron.glif | 80 + .../dummy/mm0/font2.ufo/glyphs/D_croat.glif | 76 + .../mm0/font2.ufo/glyphs/D_dotbelow.glif | 84 + .../input/dummy/mm0/font2.ufo/glyphs/D_e.glif | 67 + .../dummy/mm0/font2.ufo/glyphs/D_elta.glif | 25 + .../dummy/mm0/font2.ufo/glyphs/D_je.glif | 66 + .../mm0/font2.ufo/glyphs/D_linebelow.glif | 76 + .../dummy/mm0/font2.ufo/glyphs/D_ze.glif | 68 + .../dummy/mm0/font2.ufo/glyphs/D_zhe.glif | 85 + .../dummy/mm0/font2.ufo/glyphs/E_acute.glif | 98 + .../dummy/mm0/font2.ufo/glyphs/E_breve.glif | 96 + .../dummy/mm0/font2.ufo/glyphs/E_caron.glif | 90 + .../mm0/font2.ufo/glyphs/E_circumflex.glif | 90 + .../font2.ufo/glyphs/E_circumflexacute.glif | 104 + .../glyphs/E_circumflexdotbelow.glif | 104 + .../font2.ufo/glyphs/E_circumflexgrave.glif | 104 + .../mm0/font2.ufo/glyphs/E_circumflexhoi.glif | 106 + .../font2.ufo/glyphs/E_circumflextilde.glif | 118 + .../dummy/mm0/font2.ufo/glyphs/E_cyr.glif | 60 + .../mm0/font2.ufo/glyphs/E_dieresis.glif | 108 + .../mm0/font2.ufo/glyphs/E_dotaccent.glif | 94 + .../mm0/font2.ufo/glyphs/E_dotbelow.glif | 94 + .../input/dummy/mm0/font2.ufo/glyphs/E_f.glif | 81 + .../dummy/mm0/font2.ufo/glyphs/E_grave.glif | 98 + .../dummy/mm0/font2.ufo/glyphs/E_hoi.glif | 96 + .../input/dummy/mm0/font2.ufo/glyphs/E_l.glif | 78 + .../input/dummy/mm0/font2.ufo/glyphs/E_m.glif | 80 + .../dummy/mm0/font2.ufo/glyphs/E_macron.glif | 86 + .../input/dummy/mm0/font2.ufo/glyphs/E_n.glif | 92 + .../mm0/font2.ufo/glyphs/E_ndescender.glif | 90 + .../dummy/mm0/font2.ufo/glyphs/E_ng.glif | 65 + .../dummy/mm0/font2.ufo/glyphs/E_ogonek.glif | 105 + .../dummy/mm0/font2.ufo/glyphs/E_psilon.glif | 80 + .../mm0/font2.ufo/glyphs/E_psilontonos.glif | 98 + .../input/dummy/mm0/font2.ufo/glyphs/E_r.glif | 71 + .../input/dummy/mm0/font2.ufo/glyphs/E_s.glif | 54 + .../mm0/font2.ufo/glyphs/E_sdescender.glif | 76 + .../dummy/mm0/font2.ufo/glyphs/E_ta.glif | 92 + .../dummy/mm0/font2.ufo/glyphs/E_tatonos.glif | 110 + .../dummy/mm0/font2.ufo/glyphs/E_th.glif | 65 + .../dummy/mm0/font2.ufo/glyphs/E_tilde.glif | 108 + .../dummy/mm0/font2.ufo/glyphs/E_uro.glif | 61 + .../dummy/mm0/font2.ufo/glyphs/F_ita.glif | 44 + .../dummy/mm0/font2.ufo/glyphs/G_amma.glif | 49 + .../dummy/mm0/font2.ufo/glyphs/G_breve.glif | 83 + .../dummy/mm0/font2.ufo/glyphs/G_caron.glif | 77 + .../mm0/font2.ufo/glyphs/G_circumflex.glif | 77 + .../mm0/font2.ufo/glyphs/G_commaaccent.glif | 89 + .../mm0/font2.ufo/glyphs/G_dotaccent.glif | 81 + .../mm0/font2.ufo/glyphs/G_ermandbls.glif | 75 + .../dummy/mm0/font2.ufo/glyphs/G_he.glif | 63 + .../mm0/font2.ufo/glyphs/G_hestroke.glif | 55 + .../dummy/mm0/font2.ufo/glyphs/G_heup.glif | 49 + .../dummy/mm0/font2.ufo/glyphs/G_je.glif | 78 + .../dummy/mm0/font2.ufo/glyphs/G_macron.glif | 73 + .../input/dummy/mm0/font2.ufo/glyphs/H_a.glif | 68 + .../mm0/font2.ufo/glyphs/H_adescender.glif | 66 + .../dummy/mm0/font2.ufo/glyphs/H_ard.glif | 72 + .../dummy/mm0/font2.ufo/glyphs/H_bar.glif | 87 + .../mm0/font2.ufo/glyphs/H_brevebelow.glif | 108 + .../mm0/font2.ufo/glyphs/H_circumflex.glif | 102 + .../mm0/font2.ufo/glyphs/H_dotbelow.glif | 106 + .../dummy/mm0/font2.ufo/glyphs/I_J_.glif | 81 + .../dummy/mm0/font2.ufo/glyphs/I_acute.glif | 70 + .../dummy/mm0/font2.ufo/glyphs/I_caron.glif | 62 + .../mm0/font2.ufo/glyphs/I_circumflex.glif | 62 + .../dummy/mm0/font2.ufo/glyphs/I_cyr.glif | 78 + .../mm0/font2.ufo/glyphs/I_dieresis.glif | 80 + .../mm0/font2.ufo/glyphs/I_dotaccent.glif | 66 + .../mm0/font2.ufo/glyphs/I_dotbelow.glif | 66 + .../input/dummy/mm0/font2.ufo/glyphs/I_e.glif | 83 + .../dummy/mm0/font2.ufo/glyphs/I_ebreve.glif | 114 + .../dummy/mm0/font2.ufo/glyphs/I_egrave.glif | 98 + .../dummy/mm0/font2.ufo/glyphs/I_eukran.glif | 57 + .../dummy/mm0/font2.ufo/glyphs/I_grave.glif | 70 + .../mm0/font2.ufo/glyphs/I_gravecyr.glif | 104 + .../dummy/mm0/font2.ufo/glyphs/I_hoi.glif | 68 + .../dummy/mm0/font2.ufo/glyphs/I_macron.glif | 58 + .../mm0/font2.ufo/glyphs/I_macroncyr.glif | 92 + .../input/dummy/mm0/font2.ufo/glyphs/I_o.glif | 108 + .../dummy/mm0/font2.ufo/glyphs/I_ogonek.glif | 77 + .../dummy/mm0/font2.ufo/glyphs/I_ota.glif | 52 + .../mm0/font2.ufo/glyphs/I_otadieresis.glif | 80 + .../mm0/font2.ufo/glyphs/I_otatonos.glif | 70 + .../dummy/mm0/font2.ufo/glyphs/I_short.glif | 120 + .../dummy/mm0/font2.ufo/glyphs/I_tilde.glif | 80 + .../dummy/mm0/font2.ufo/glyphs/I_ukran.glif | 52 + .../dummy/mm0/font2.ufo/glyphs/I_zhitsa.glif | 40 + .../mm0/font2.ufo/glyphs/J_circumflex.glif | 68 + .../input/dummy/mm0/font2.ufo/glyphs/J_e.glif | 58 + .../input/dummy/mm0/font2.ufo/glyphs/K_a.glif | 89 + .../mm0/font2.ufo/glyphs/K_abashkir.glif | 94 + .../mm0/font2.ufo/glyphs/K_adescender.glif | 95 + .../dummy/mm0/font2.ufo/glyphs/K_appa.glif | 80 + .../mm0/font2.ufo/glyphs/K_commaaccent.glif | 102 + .../dummy/mm0/font2.ufo/glyphs/K_je.glif | 115 + .../dummy/mm0/font2.ufo/glyphs/L_acute.glif | 77 + .../dummy/mm0/font2.ufo/glyphs/L_ambda.glif | 33 + .../dummy/mm0/font2.ufo/glyphs/L_caron.glif | 73 + .../mm0/font2.ufo/glyphs/L_commaaccent.glif | 81 + .../dummy/mm0/font2.ufo/glyphs/L_dot.glif | 73 + .../mm0/font2.ufo/glyphs/L_dotbelow.glif | 73 + .../font2.ufo/glyphs/L_dotbelowmacron.glif | 79 + .../dummy/mm0/font2.ufo/glyphs/L_je.glif | 101 + .../mm0/font2.ufo/glyphs/L_linebelow.glif | 65 + .../dummy/mm0/font2.ufo/glyphs/L_slash.glif | 60 + .../dummy/mm0/font2.ufo/glyphs/M_acute.glif | 98 + .../mm0/font2.ufo/glyphs/M_dotbelow.glif | 94 + .../input/dummy/mm0/font2.ufo/glyphs/M_u.glif | 80 + .../dummy/mm0/font2.ufo/glyphs/N_acute.glif | 69 + .../dummy/mm0/font2.ufo/glyphs/N_caron.glif | 61 + .../mm0/font2.ufo/glyphs/N_commaaccent.glif | 73 + .../mm0/font2.ufo/glyphs/N_dotaccent.glif | 65 + .../mm0/font2.ufo/glyphs/N_dotbelow.glif | 65 + .../dummy/mm0/font2.ufo/glyphs/N_grave.glif | 69 + .../dummy/mm0/font2.ufo/glyphs/N_je.glif | 104 + .../mm0/font2.ufo/glyphs/N_linebelow.glif | 57 + .../dummy/mm0/font2.ufo/glyphs/N_tilde.glif | 79 + .../input/dummy/mm0/font2.ufo/glyphs/N_u.glif | 51 + .../dummy/mm0/font2.ufo/glyphs/O_E_.glif | 86 + .../dummy/mm0/font2.ufo/glyphs/O_acute.glif | 64 + .../dummy/mm0/font2.ufo/glyphs/O_barcyr.glif | 55 + .../dummy/mm0/font2.ufo/glyphs/O_breve.glif | 62 + .../dummy/mm0/font2.ufo/glyphs/O_caron.glif | 56 + .../mm0/font2.ufo/glyphs/O_circumflex.glif | 56 + .../font2.ufo/glyphs/O_circumflexacute.glif | 70 + .../glyphs/O_circumflexdotbelow.glif | 70 + .../font2.ufo/glyphs/O_circumflexgrave.glif | 70 + .../mm0/font2.ufo/glyphs/O_circumflexhoi.glif | 72 + .../font2.ufo/glyphs/O_circumflextilde.glif | 84 + .../dummy/mm0/font2.ufo/glyphs/O_cyr.glif | 49 + .../mm0/font2.ufo/glyphs/O_dieresis.glif | 74 + .../mm0/font2.ufo/glyphs/O_dieresiscyr.glif | 74 + .../mm0/font2.ufo/glyphs/O_dotbelow.glif | 60 + .../dummy/mm0/font2.ufo/glyphs/O_grave.glif | 64 + .../dummy/mm0/font2.ufo/glyphs/O_hoi.glif | 62 + .../dummy/mm0/font2.ufo/glyphs/O_horn.glif | 73 + .../mm0/font2.ufo/glyphs/O_hornacute.glif | 85 + .../mm0/font2.ufo/glyphs/O_horndotbelow.glif | 81 + .../mm0/font2.ufo/glyphs/O_horngrave.glif | 85 + .../dummy/mm0/font2.ufo/glyphs/O_hornhoi.glif | 83 + .../mm0/font2.ufo/glyphs/O_horntilde.glif | 95 + .../mm0/font2.ufo/glyphs/O_hungarumlaut.glif | 74 + .../dummy/mm0/font2.ufo/glyphs/O_macron.glif | 52 + .../dummy/mm0/font2.ufo/glyphs/O_mega.glif | 59 + .../mm0/font2.ufo/glyphs/O_megatonos.glif | 88 + .../dummy/mm0/font2.ufo/glyphs/O_micron.glif | 46 + .../mm0/font2.ufo/glyphs/O_microntonos.glif | 64 + .../dummy/mm0/font2.ufo/glyphs/O_slash.glif | 44 + .../dummy/mm0/font2.ufo/glyphs/O_tilde.glif | 74 + .../dummy/mm0/font2.ufo/glyphs/P_alochka.glif | 52 + .../input/dummy/mm0/font2.ufo/glyphs/P_e.glif | 79 + .../dummy/mm0/font2.ufo/glyphs/P_hi.glif | 81 + .../input/dummy/mm0/font2.ufo/glyphs/P_i.glif | 79 + .../dummy/mm0/font2.ufo/glyphs/P_si.glif | 77 + .../dummy/mm0/font2.ufo/glyphs/R_acute.glif | 107 + .../dummy/mm0/font2.ufo/glyphs/R_caron.glif | 99 + .../mm0/font2.ufo/glyphs/R_commaaccent.glif | 111 + .../mm0/font2.ufo/glyphs/R_dotbelow.glif | 103 + .../font2.ufo/glyphs/R_dotbelowmacron.glif | 109 + .../dummy/mm0/font2.ufo/glyphs/R_ho.glif | 71 + .../mm0/font2.ufo/glyphs/R_linebelow.glif | 95 + .../dummy/mm0/font2.ufo/glyphs/S_acute.glif | 86 + .../dummy/mm0/font2.ufo/glyphs/S_caron.glif | 78 + .../dummy/mm0/font2.ufo/glyphs/S_cedilla.glif | 93 + .../dummy/mm0/font2.ufo/glyphs/S_chwa.glif | 49 + .../dummy/mm0/font2.ufo/glyphs/S_chwacyr.glif | 46 + .../mm0/font2.ufo/glyphs/S_circumflex.glif | 78 + .../mm0/font2.ufo/glyphs/S_commaaccent.glif | 90 + .../mm0/font2.ufo/glyphs/S_dotaccent.glif | 82 + .../mm0/font2.ufo/glyphs/S_dotbelow.glif | 82 + .../dummy/mm0/font2.ufo/glyphs/S_ha.glif | 105 + .../dummy/mm0/font2.ufo/glyphs/S_hcha.glif | 101 + .../dummy/mm0/font2.ufo/glyphs/S_hha.glif | 69 + .../dummy/mm0/font2.ufo/glyphs/S_igma.glif | 33 + .../dummy/mm0/font2.ufo/glyphs/S_oft.glif | 64 + .../dummy/mm0/font2.ufo/glyphs/T_au.glif | 56 + .../dummy/mm0/font2.ufo/glyphs/T_bar.glif | 51 + .../dummy/mm0/font2.ufo/glyphs/T_caron.glif | 66 + .../dummy/mm0/font2.ufo/glyphs/T_cedilla.glif | 81 + .../mm0/font2.ufo/glyphs/T_commaaccent.glif | 78 + .../mm0/font2.ufo/glyphs/T_dotbelow.glif | 70 + .../input/dummy/mm0/font2.ufo/glyphs/T_e.glif | 56 + .../dummy/mm0/font2.ufo/glyphs/T_heta.glif | 57 + .../dummy/mm0/font2.ufo/glyphs/T_horn.glif | 61 + .../mm0/font2.ufo/glyphs/T_linebelow.glif | 62 + .../dummy/mm0/font2.ufo/glyphs/T_se.glif | 78 + .../dummy/mm0/font2.ufo/glyphs/T_she.glif | 72 + .../dummy/mm0/font2.ufo/glyphs/U_acute.glif | 78 + .../mm0/font2.ufo/glyphs/U_acutedblcyr.glif | 90 + .../dummy/mm0/font2.ufo/glyphs/U_breve.glif | 76 + .../dummy/mm0/font2.ufo/glyphs/U_caron.glif | 70 + .../mm0/font2.ufo/glyphs/U_circumflex.glif | 70 + .../dummy/mm0/font2.ufo/glyphs/U_cyr.glif | 54 + .../mm0/font2.ufo/glyphs/U_dieresis.glif | 88 + .../mm0/font2.ufo/glyphs/U_dieresisacute.glif | 102 + .../mm0/font2.ufo/glyphs/U_dieresiscaron.glif | 98 + .../mm0/font2.ufo/glyphs/U_dieresisgrave.glif | 102 + .../font2.ufo/glyphs/U_dieresismacron.glif | 94 + .../mm0/font2.ufo/glyphs/U_dotbelow.glif | 74 + .../dummy/mm0/font2.ufo/glyphs/U_grave.glif | 78 + .../dummy/mm0/font2.ufo/glyphs/U_hoi.glif | 76 + .../dummy/mm0/font2.ufo/glyphs/U_horn.glif | 75 + .../mm0/font2.ufo/glyphs/U_hornacute.glif | 98 + .../mm0/font2.ufo/glyphs/U_horndotbelow.glif | 94 + .../mm0/font2.ufo/glyphs/U_horngrave.glif | 98 + .../dummy/mm0/font2.ufo/glyphs/U_hornhoi.glif | 96 + .../mm0/font2.ufo/glyphs/U_horntilde.glif | 108 + .../mm0/font2.ufo/glyphs/U_hungarumlaut.glif | 88 + .../dummy/mm0/font2.ufo/glyphs/U_macron.glif | 66 + .../mm0/font2.ufo/glyphs/U_macroncyr.glif | 68 + .../dummy/mm0/font2.ufo/glyphs/U_ogonek.glif | 75 + .../dummy/mm0/font2.ufo/glyphs/U_psilon.glif | 62 + .../font2.ufo/glyphs/U_psilondieresis.glif | 90 + .../mm0/font2.ufo/glyphs/U_psilontonos.glif | 80 + .../dummy/mm0/font2.ufo/glyphs/U_ring.glif | 88 + .../dummy/mm0/font2.ufo/glyphs/U_short.glif | 96 + .../mm0/font2.ufo/glyphs/U_straight.glif | 65 + .../font2.ufo/glyphs/U_straightstroke.glif | 60 + .../dummy/mm0/font2.ufo/glyphs/U_tilde.glif | 88 + .../input/dummy/mm0/font2.ufo/glyphs/V_e.glif | 86 + .../dummy/mm0/font2.ufo/glyphs/W_acute.glif | 75 + .../mm0/font2.ufo/glyphs/W_circumflex.glif | 67 + .../mm0/font2.ufo/glyphs/W_dieresis.glif | 85 + .../dummy/mm0/font2.ufo/glyphs/W_grave.glif | 75 + .../input/dummy/mm0/font2.ufo/glyphs/X_i.glif | 53 + .../input/dummy/mm0/font2.ufo/glyphs/Y_a.glif | 81 + .../dummy/mm0/font2.ufo/glyphs/Y_acute.glif | 80 + .../dummy/mm0/font2.ufo/glyphs/Y_at.glif | 76 + .../mm0/font2.ufo/glyphs/Y_circumflex.glif | 72 + .../mm0/font2.ufo/glyphs/Y_dieresis.glif | 90 + .../mm0/font2.ufo/glyphs/Y_dotaccent.glif | 76 + .../mm0/font2.ufo/glyphs/Y_dotbelow.glif | 76 + .../dummy/mm0/font2.ufo/glyphs/Y_eru.glif | 101 + .../dummy/mm0/font2.ufo/glyphs/Y_grave.glif | 80 + .../dummy/mm0/font2.ufo/glyphs/Y_hoi.glif | 78 + .../input/dummy/mm0/font2.ufo/glyphs/Y_i.glif | 80 + .../dummy/mm0/font2.ufo/glyphs/Y_tilde.glif | 90 + .../input/dummy/mm0/font2.ufo/glyphs/Y_u.glif | 78 + .../dummy/mm0/font2.ufo/glyphs/Z_acute.glif | 52 + .../dummy/mm0/font2.ufo/glyphs/Z_caron.glif | 44 + .../mm0/font2.ufo/glyphs/Z_dotaccent.glif | 48 + .../mm0/font2.ufo/glyphs/Z_dotbelow.glif | 48 + .../input/dummy/mm0/font2.ufo/glyphs/Z_e.glif | 62 + .../mm0/font2.ufo/glyphs/Z_edescender.glif | 95 + .../dummy/mm0/font2.ufo/glyphs/Z_eta.glif | 34 + .../dummy/mm0/font2.ufo/glyphs/Z_he.glif | 134 + .../dummy/mm0/font2.ufo/glyphs/Z_hebreve.glif | 176 + .../mm0/font2.ufo/glyphs/Z_hedescender.glif | 140 + .../dummy/mm0/font2.ufo/glyphs/a.sups.glif | 74 + .../dummy/mm0/font2.ufo/glyphs/aacute.glif | 103 + .../dummy/mm0/font2.ufo/glyphs/abreve.glif | 101 + .../mm0/font2.ufo/glyphs/abreveacute.glif | 115 + .../dummy/mm0/font2.ufo/glyphs/abrevecyr.glif | 119 + .../mm0/font2.ufo/glyphs/abrevedotbelow.glif | 115 + .../mm0/font2.ufo/glyphs/abrevegrave.glif | 115 + .../dummy/mm0/font2.ufo/glyphs/abrevehoi.glif | 117 + .../mm0/font2.ufo/glyphs/abrevetilde.glif | 129 + .../dummy/mm0/font2.ufo/glyphs/acaron.glif | 95 + .../mm0/font2.ufo/glyphs/acircumflex.glif | 95 + .../font2.ufo/glyphs/acircumflexacute.glif | 109 + .../font2.ufo/glyphs/acircumflexdotbelow.glif | 109 + .../font2.ufo/glyphs/acircumflexgrave.glif | 109 + .../mm0/font2.ufo/glyphs/acircumflexhoi.glif | 111 + .../font2.ufo/glyphs/acircumflextilde.glif | 123 + .../dummy/mm0/font2.ufo/glyphs/acute.glif | 39 + .../dummy/mm0/font2.ufo/glyphs/acutecmb.glif | 27 + .../dummy/mm0/font2.ufo/glyphs/acyr.glif | 88 + .../dummy/mm0/font2.ufo/glyphs/adieresis.glif | 113 + .../dummy/mm0/font2.ufo/glyphs/adotbelow.glif | 99 + .../input/dummy/mm0/font2.ufo/glyphs/ae.glif | 106 + .../dummy/mm0/font2.ufo/glyphs/agrave.glif | 103 + .../dummy/mm0/font2.ufo/glyphs/ahoi.glif | 101 + .../input/dummy/mm0/font2.ufo/glyphs/aie.glif | 111 + .../dummy/mm0/font2.ufo/glyphs/alpha.glif | 61 + .../mm0/font2.ufo/glyphs/alphalatin.glif | 62 + .../mm0/font2.ufo/glyphs/alphatonos.glif | 84 + .../dummy/mm0/font2.ufo/glyphs/amacron.glif | 91 + .../dummy/mm0/font2.ufo/glyphs/anoteleia.glif | 32 + .../dummy/mm0/font2.ufo/glyphs/aogonek.glif | 97 + .../mm0/font2.ufo/glyphs/approxequal.glif | 74 + .../dummy/mm0/font2.ufo/glyphs/aring.glif | 113 + .../dummy/mm0/font2.ufo/glyphs/arrowdown.glif | 21 + .../mm0/font2.ufo/glyphs/arrowdownleft.glif | 21 + .../mm0/font2.ufo/glyphs/arrowdownright.glif | 21 + .../dummy/mm0/font2.ufo/glyphs/arrowleft.glif | 21 + .../mm0/font2.ufo/glyphs/arrowright.glif | 21 + .../dummy/mm0/font2.ufo/glyphs/arrowup.glif | 21 + .../mm0/font2.ufo/glyphs/arrowupleft.glif | 21 + .../mm0/font2.ufo/glyphs/arrowupright.glif | 21 + .../dummy/mm0/font2.ufo/glyphs/atilde.glif | 113 + .../dummy/mm0/font2.ufo/glyphs/b.sups.glif | 48 + .../input/dummy/mm0/font2.ufo/glyphs/be.glif | 59 + .../dummy/mm0/font2.ufo/glyphs/beta.glif | 55 + .../dummy/mm0/font2.ufo/glyphs/bitcoin.glif | 99 + .../dummy/mm0/font2.ufo/glyphs/breve.glif | 40 + .../mm0/font2.ufo/glyphs/brevebelowcmb.glif | 36 + .../dummy/mm0/font2.ufo/glyphs/brevecmb.glif | 25 + .../dummy/mm0/font2.ufo/glyphs/brokenbar.glif | 19 + .../dummy/mm0/font2.ufo/glyphs/bullet.glif | 21 + .../mm0/font2.ufo/glyphs/bulletoperator.glif | 32 + .../dummy/mm0/font2.ufo/glyphs/c.sups.glif | 42 + .../dummy/mm0/font2.ufo/glyphs/cacute.glif | 71 + .../dummy/mm0/font2.ufo/glyphs/caron.glif | 31 + .../dummy/mm0/font2.ufo/glyphs/caroncmb.glif | 19 + .../dummy/mm0/font2.ufo/glyphs/ccaron.glif | 63 + .../dummy/mm0/font2.ufo/glyphs/ccedilla.glif | 78 + .../mm0/font2.ufo/glyphs/ccircumflex.glif | 63 + .../mm0/font2.ufo/glyphs/cdotaccent.glif | 67 + .../dummy/mm0/font2.ufo/glyphs/cedi.glif | 55 + .../dummy/mm0/font2.ufo/glyphs/cedilla.glif | 46 + .../mm0/font2.ufo/glyphs/cedillacmb.glif | 34 + .../dummy/mm0/font2.ufo/glyphs/cent.glif | 48 + .../input/dummy/mm0/font2.ufo/glyphs/che.glif | 72 + .../dummy/mm0/font2.ufo/glyphs/check.glif | 25 + .../dummy/mm0/font2.ufo/glyphs/checkbox.glif | 19 + .../mm0/font2.ufo/glyphs/checkedbox.glif | 37 + .../mm0/font2.ufo/glyphs/chedescender.glif | 78 + .../input/dummy/mm0/font2.ufo/glyphs/chi.glif | 53 + .../mm0/font2.ufo/glyphs/circumflex.glif | 34 + .../mm0/font2.ufo/glyphs/circumflexcmb.glif | 22 + .../mm0/font2.ufo/glyphs/colonmonetary.glif | 61 + .../font2.ufo/glyphs/colontriangularmod.glif | 23 + .../mm0/font2.ufo/glyphs/commabelowcmb.glif | 31 + .../mm0/font2.ufo/glyphs/commercemark.glif | 90 + .../dummy/mm0/font2.ufo/glyphs/contents.plist | 1630 +++++ .../dummy/mm0/font2.ufo/glyphs/copyleft.glif | 69 + .../dummy/mm0/font2.ufo/glyphs/copyright.glif | 69 + .../dummy/mm0/font2.ufo/glyphs/currency.glif | 91 + .../dummy/mm0/font2.ufo/glyphs/d.sups.glif | 48 + .../dummy/mm0/font2.ufo/glyphs/dagger.glif | 74 + .../dummy/mm0/font2.ufo/glyphs/daggerdbl.glif | 125 + .../dummy/mm0/font2.ufo/glyphs/dblprime.glif | 50 + .../dummy/mm0/font2.ufo/glyphs/dcaron.glif | 75 + .../dummy/mm0/font2.ufo/glyphs/dcroat.glif | 57 + .../dummy/mm0/font2.ufo/glyphs/ddotbelow.glif | 75 + .../input/dummy/mm0/font2.ufo/glyphs/de.glif | 67 + .../dummy/mm0/font2.ufo/glyphs/degree.glif | 35 + .../dummy/mm0/font2.ufo/glyphs/delta.glif | 62 + .../mm0/font2.ufo/glyphs/deposeemark.glif | 96 + .../mm0/font2.ufo/glyphs/diamondblack.glif | 13 + .../dummy/mm0/font2.ufo/glyphs/dieresis.glif | 49 + .../font2.ufo/glyphs/dieresisbelowcmb.glif | 48 + .../mm0/font2.ufo/glyphs/dieresiscmb.glif | 40 + .../mm0/font2.ufo/glyphs/dieresistonos.glif | 67 + .../dummy/mm0/font2.ufo/glyphs/digamma.glif | 30 + .../dummy/mm0/font2.ufo/glyphs/divide.glif | 41 + .../mm0/font2.ufo/glyphs/divisionslash.glif | 24 + .../input/dummy/mm0/font2.ufo/glyphs/dje.glif | 77 + .../mm0/font2.ufo/glyphs/dlinebelow.glif | 67 + .../mm0/font2.ufo/glyphs/dngb_cross.glif | 19 + .../dummy/mm0/font2.ufo/glyphs/dong.glif | 62 + .../dummy/mm0/font2.ufo/glyphs/dotaccent.glif | 35 + .../mm0/font2.ufo/glyphs/dotaccentcmb.glif | 26 + .../mm0/font2.ufo/glyphs/dotbelowcmb.glif | 34 + .../dummy/mm0/font2.ufo/glyphs/dotlessi.glif | 43 + .../dummy/mm0/font2.ufo/glyphs/dotlessj.glif | 49 + .../input/dummy/mm0/font2.ufo/glyphs/dze.glif | 68 + .../dummy/mm0/font2.ufo/glyphs/dzhe.glif | 85 + .../dummy/mm0/font2.ufo/glyphs/e.sups.glif | 43 + .../dummy/mm0/font2.ufo/glyphs/eacute.glif | 72 + .../dummy/mm0/font2.ufo/glyphs/ebreve.glif | 70 + .../dummy/mm0/font2.ufo/glyphs/ecaron.glif | 64 + .../mm0/font2.ufo/glyphs/ecircumflex.glif | 64 + .../font2.ufo/glyphs/ecircumflexacute.glif | 78 + .../font2.ufo/glyphs/ecircumflexdotbelow.glif | 78 + .../font2.ufo/glyphs/ecircumflexgrave.glif | 78 + .../mm0/font2.ufo/glyphs/ecircumflexhoi.glif | 80 + .../font2.ufo/glyphs/ecircumflextilde.glif | 92 + .../dummy/mm0/font2.ufo/glyphs/ecyr.glif | 54 + .../dummy/mm0/font2.ufo/glyphs/edieresis.glif | 82 + .../mm0/font2.ufo/glyphs/edotaccent.glif | 68 + .../dummy/mm0/font2.ufo/glyphs/edotbelow.glif | 68 + .../input/dummy/mm0/font2.ufo/glyphs/ef.glif | 90 + .../dummy/mm0/font2.ufo/glyphs/egrave.glif | 72 + .../dummy/mm0/font2.ufo/glyphs/ehoi.glif | 70 + .../mm0/font2.ufo/glyphs/eight.subs.glif | 70 + .../mm0/font2.ufo/glyphs/eight.sups.glif | 59 + .../mm0/font2.ufo/glyphs/eighthnote.glif | 45 + .../input/dummy/mm0/font2.ufo/glyphs/el.glif | 78 + .../dummy/mm0/font2.ufo/glyphs/ellipsis.glif | 60 + .../input/dummy/mm0/font2.ufo/glyphs/em.glif | 67 + .../dummy/mm0/font2.ufo/glyphs/emacron.glif | 60 + .../dummy/mm0/font2.ufo/glyphs/emdash.glif | 13 + .../input/dummy/mm0/font2.ufo/glyphs/en.glif | 81 + .../dummy/mm0/font2.ufo/glyphs/endash.glif | 13 + .../mm0/font2.ufo/glyphs/endescender.glif | 90 + .../input/dummy/mm0/font2.ufo/glyphs/eng.glif | 77 + .../dummy/mm0/font2.ufo/glyphs/eogonek.glif | 69 + .../dummy/mm0/font2.ufo/glyphs/epsilon.glif | 69 + .../mm0/font2.ufo/glyphs/epsilontonos.glif | 92 + .../input/dummy/mm0/font2.ufo/glyphs/er.glif | 76 + .../input/dummy/mm0/font2.ufo/glyphs/es.glif | 53 + .../mm0/font2.ufo/glyphs/esdescender.glif | 75 + .../dummy/mm0/font2.ufo/glyphs/estimated.glif | 62 + .../input/dummy/mm0/font2.ufo/glyphs/eta.glif | 53 + .../dummy/mm0/font2.ufo/glyphs/etatonos.glif | 76 + .../input/dummy/mm0/font2.ufo/glyphs/eth.glif | 49 + .../dummy/mm0/font2.ufo/glyphs/etilde.glif | 82 + .../dummy/mm0/font2.ufo/glyphs/exclamdbl.glif | 69 + .../mm0/font2.ufo/glyphs/exclamdown.glif | 49 + .../mm0/font2.ufo/glyphs/exclamquestion.glif | 88 + .../dummy/mm0/font2.ufo/glyphs/f.sups.glif | 57 + .../input/dummy/mm0/font2.ufo/glyphs/f_f.glif | 115 + .../dummy/mm0/font2.ufo/glyphs/f_f_i.glif | 138 + .../dummy/mm0/font2.ufo/glyphs/f_f_l.glif | 133 + .../input/dummy/mm0/font2.ufo/glyphs/f_i.glif | 86 + .../input/dummy/mm0/font2.ufo/glyphs/f_l.glif | 81 + .../mm0/font2.ufo/glyphs/figuredash.glif | 13 + .../mm0/font2.ufo/glyphs/figurespace.glif | 5 + .../dummy/mm0/font2.ufo/glyphs/fisheye.glif | 49 + .../dummy/mm0/font2.ufo/glyphs/fita.glif | 44 + .../dummy/mm0/font2.ufo/glyphs/five.subs.glif | 61 + .../dummy/mm0/font2.ufo/glyphs/five.sups.glif | 50 + .../mm0/font2.ufo/glyphs/fiveeighths.glif | 119 + .../dummy/mm0/font2.ufo/glyphs/florin.glif | 63 + .../dummy/mm0/font2.ufo/glyphs/four.subs.glif | 32 + .../dummy/mm0/font2.ufo/glyphs/four.sups.glif | 21 + .../dummy/mm0/font2.ufo/glyphs/fraction.glif | 13 + .../dummy/mm0/font2.ufo/glyphs/g.sups.glif | 84 + .../dummy/mm0/font2.ufo/glyphs/gamma.glif | 56 + .../dummy/mm0/font2.ufo/glyphs/gbreve.glif | 115 + .../dummy/mm0/font2.ufo/glyphs/gcaron.glif | 109 + .../mm0/font2.ufo/glyphs/gcircumflex.glif | 109 + .../mm0/font2.ufo/glyphs/gcommaaccent.glif | 121 + .../mm0/font2.ufo/glyphs/gdotaccent.glif | 113 + .../mm0/font2.ufo/glyphs/germandbls.glif | 83 + .../input/dummy/mm0/font2.ufo/glyphs/ghe.glif | 52 + .../dummy/mm0/font2.ufo/glyphs/ghestroke.glif | 55 + .../dummy/mm0/font2.ufo/glyphs/gheup.glif | 49 + .../input/dummy/mm0/font2.ufo/glyphs/gje.glif | 78 + .../dummy/mm0/font2.ufo/glyphs/gmacron.glif | 105 + .../dummy/mm0/font2.ufo/glyphs/gravecmb.glif | 27 + .../mm0/font2.ufo/glyphs/greaterequal.glif | 23 + .../dummy/mm0/font2.ufo/glyphs/gscript.glif | 74 + .../dummy/mm0/font2.ufo/glyphs/guarani.glif | 67 + .../mm0/font2.ufo/glyphs/guillemotleft.glif | 38 + .../mm0/font2.ufo/glyphs/guillemotright.glif | 38 + .../mm0/font2.ufo/glyphs/guilsinglleft.glif | 17 + .../mm0/font2.ufo/glyphs/guilsinglright.glif | 17 + .../dummy/mm0/font2.ufo/glyphs/h.sups.glif | 53 + .../input/dummy/mm0/font2.ufo/glyphs/ha.glif | 70 + .../mm0/font2.ufo/glyphs/hadescender.glif | 68 + .../dummy/mm0/font2.ufo/glyphs/hard.glif | 72 + .../dummy/mm0/font2.ufo/glyphs/hbar.glif | 74 + .../mm0/font2.ufo/glyphs/hbrevebelow.glif | 92 + .../mm0/font2.ufo/glyphs/hcircumflex.glif | 86 + .../dummy/mm0/font2.ufo/glyphs/hdotbelow.glif | 90 + .../dummy/mm0/font2.ufo/glyphs/hoicmb.glif | 25 + .../mm0/font2.ufo/glyphs/horizontalbar.glif | 24 + .../dummy/mm0/font2.ufo/glyphs/horncmb.glif | 30 + .../dummy/mm0/font2.ufo/glyphs/hryvnia.glif | 83 + .../mm0/font2.ufo/glyphs/hungarumlaut.glif | 49 + .../mm0/font2.ufo/glyphs/hungarumlautcmb.glif | 37 + .../dummy/mm0/font2.ufo/glyphs/i.sups.glif | 38 + .../dummy/mm0/font2.ufo/glyphs/iacute.glif | 63 + .../dummy/mm0/font2.ufo/glyphs/icaron.glif | 55 + .../mm0/font2.ufo/glyphs/icircumflex.glif | 55 + .../dummy/mm0/font2.ufo/glyphs/icyr.glif | 72 + .../dummy/mm0/font2.ufo/glyphs/idieresis.glif | 73 + .../dummy/mm0/font2.ufo/glyphs/idotbelow.glif | 73 + .../input/dummy/mm0/font2.ufo/glyphs/ie.glif | 57 + .../dummy/mm0/font2.ufo/glyphs/iebreve.glif | 88 + .../dummy/mm0/font2.ufo/glyphs/iegrave.glif | 72 + .../dummy/mm0/font2.ufo/glyphs/ieukran.glif | 47 + .../dummy/mm0/font2.ufo/glyphs/igrave.glif | 63 + .../dummy/mm0/font2.ufo/glyphs/igravecyr.glif | 98 + .../dummy/mm0/font2.ufo/glyphs/ihoi.glif | 61 + .../input/dummy/mm0/font2.ufo/glyphs/ij.glif | 101 + .../dummy/mm0/font2.ufo/glyphs/imacron.glif | 51 + .../mm0/font2.ufo/glyphs/imacroncyr.glif | 86 + .../dummy/mm0/font2.ufo/glyphs/infinity.glif | 59 + .../dummy/mm0/font2.ufo/glyphs/integral.glif | 49 + .../input/dummy/mm0/font2.ufo/glyphs/io.glif | 82 + .../dummy/mm0/font2.ufo/glyphs/iogonek.glif | 81 + .../dummy/mm0/font2.ufo/glyphs/iota.glif | 31 + .../mm0/font2.ufo/glyphs/iotadieresis.glif | 67 + .../font2.ufo/glyphs/iotadieresistonos.glif | 85 + .../dummy/mm0/font2.ufo/glyphs/iotatonos.glif | 57 + .../dummy/mm0/font2.ufo/glyphs/ishort.glif | 114 + .../dummy/mm0/font2.ufo/glyphs/itilde.glif | 73 + .../dummy/mm0/font2.ufo/glyphs/iukran.glif | 59 + .../dummy/mm0/font2.ufo/glyphs/izhitsa.glif | 43 + .../dummy/mm0/font2.ufo/glyphs/j.sups.glif | 56 + .../mm0/font2.ufo/glyphs/jcircumflex.glif | 67 + .../input/dummy/mm0/font2.ufo/glyphs/je.glif | 71 + .../dummy/mm0/font2.ufo/glyphs/k.sups.glif | 47 + .../input/dummy/mm0/font2.ufo/glyphs/ka.glif | 89 + .../dummy/mm0/font2.ufo/glyphs/kabashkir.glif | 94 + .../mm0/font2.ufo/glyphs/kadescender.glif | 95 + .../input/dummy/mm0/font2.ufo/glyphs/kai.glif | 85 + .../dummy/mm0/font2.ufo/glyphs/kappa.glif | 69 + .../mm0/font2.ufo/glyphs/kcommaaccent.glif | 86 + .../mm0/font2.ufo/glyphs/kgreenlandic.glif | 57 + .../input/dummy/mm0/font2.ufo/glyphs/kje.glif | 115 + .../dummy/mm0/font2.ufo/glyphs/koppa.glif | 45 + .../dummy/mm0/font2.ufo/glyphs/l.sups.glif | 24 + .../dummy/mm0/font2.ufo/glyphs/lacute.glif | 60 + .../dummy/mm0/font2.ufo/glyphs/lambda.glif | 45 + .../dummy/mm0/font2.ufo/glyphs/lcaron.glif | 56 + .../mm0/font2.ufo/glyphs/lcommaaccent.glif | 64 + .../dummy/mm0/font2.ufo/glyphs/ldot.glif | 45 + .../dummy/mm0/font2.ufo/glyphs/ldotbelow.glif | 56 + .../mm0/font2.ufo/glyphs/ldotbelowmacron.glif | 62 + .../dummy/mm0/font2.ufo/glyphs/lessequal.glif | 23 + .../dummy/mm0/font2.ufo/glyphs/lira.glif | 58 + .../mm0/font2.ufo/glyphs/liraturkish.glif | 78 + .../dummy/mm0/font2.ufo/glyphs/litre.glif | 42 + .../input/dummy/mm0/font2.ufo/glyphs/lje.glif | 101 + .../mm0/font2.ufo/glyphs/llinebelow.glif | 48 + .../mm0/font2.ufo/glyphs/logicalnot.glif | 16 + .../dummy/mm0/font2.ufo/glyphs/longs.glif | 49 + .../mm0/font2.ufo/glyphs/lownumeralsign.glif | 23 + .../dummy/mm0/font2.ufo/glyphs/lozenge.glif | 21 + .../dummy/mm0/font2.ufo/glyphs/lslash.glif | 43 + .../dummy/mm0/font2.ufo/glyphs/m.sups.glif | 83 + .../mm0/font2.ufo/glyphs/macronbelowcmb.glif | 26 + .../dummy/mm0/font2.ufo/glyphs/macroncmb.glif | 15 + .../dummy/mm0/font2.ufo/glyphs/macronmod.glif | 24 + .../dummy/mm0/font2.ufo/glyphs/macute.glif | 127 + .../dummy/mm0/font2.ufo/glyphs/mdotbelow.glif | 123 + .../dummy/mm0/font2.ufo/glyphs/minus.glif | 13 + .../input/dummy/mm0/font2.ufo/glyphs/mu.glif | 57 + .../dummy/mm0/font2.ufo/glyphs/multiply.glif | 19 + .../dummy/mm0/font2.ufo/glyphs/n.sups.glif | 54 + .../dummy/mm0/font2.ufo/glyphs/nacute.glif | 95 + .../dummy/mm0/font2.ufo/glyphs/naira.glif | 53 + .../mm0/font2.ufo/glyphs/napostrophe.glif | 100 + .../dummy/mm0/font2.ufo/glyphs/ncaron.glif | 87 + .../mm0/font2.ufo/glyphs/ncommaaccent.glif | 99 + .../mm0/font2.ufo/glyphs/ndotaccent.glif | 91 + .../dummy/mm0/font2.ufo/glyphs/ndotbelow.glif | 91 + .../dummy/mm0/font2.ufo/glyphs/ngrave.glif | 95 + .../dummy/mm0/font2.ufo/glyphs/nine.subs.glif | 52 + .../dummy/mm0/font2.ufo/glyphs/nine.sups.glif | 41 + .../input/dummy/mm0/font2.ufo/glyphs/nje.glif | 104 + .../mm0/font2.ufo/glyphs/nlinebelow.glif | 83 + .../dummy/mm0/font2.ufo/glyphs/notequal.glif | 25 + .../dummy/mm0/font2.ufo/glyphs/ntilde.glif | 105 + .../input/dummy/mm0/font2.ufo/glyphs/nu.glif | 49 + .../mm0/font2.ufo/glyphs/numeralsign.glif | 34 + .../dummy/mm0/font2.ufo/glyphs/numero.glif | 99 + .../dummy/mm0/font2.ufo/glyphs/o.sups.glif | 35 + .../dummy/mm0/font2.ufo/glyphs/oacute.glif | 64 + .../dummy/mm0/font2.ufo/glyphs/obarcyr.glif | 55 + .../dummy/mm0/font2.ufo/glyphs/obreve.glif | 62 + .../dummy/mm0/font2.ufo/glyphs/ocaron.glif | 56 + .../mm0/font2.ufo/glyphs/ocircumflex.glif | 56 + .../font2.ufo/glyphs/ocircumflexacute.glif | 70 + .../font2.ufo/glyphs/ocircumflexdotbelow.glif | 70 + .../font2.ufo/glyphs/ocircumflexgrave.glif | 70 + .../mm0/font2.ufo/glyphs/ocircumflexhoi.glif | 72 + .../font2.ufo/glyphs/ocircumflextilde.glif | 84 + .../dummy/mm0/font2.ufo/glyphs/ocyr.glif | 49 + .../dummy/mm0/font2.ufo/glyphs/odieresis.glif | 74 + .../mm0/font2.ufo/glyphs/odieresiscyr.glif | 74 + .../dummy/mm0/font2.ufo/glyphs/odotbelow.glif | 60 + .../input/dummy/mm0/font2.ufo/glyphs/oe.glif | 74 + .../dummy/mm0/font2.ufo/glyphs/ogonek.glif | 43 + .../dummy/mm0/font2.ufo/glyphs/ogonekcmb.glif | 31 + .../dummy/mm0/font2.ufo/glyphs/ograve.glif | 64 + .../dummy/mm0/font2.ufo/glyphs/ohoi.glif | 62 + .../dummy/mm0/font2.ufo/glyphs/ohorn.glif | 62 + .../mm0/font2.ufo/glyphs/ohornacute.glif | 85 + .../mm0/font2.ufo/glyphs/ohorndotbelow.glif | 81 + .../mm0/font2.ufo/glyphs/ohorngrave.glif | 85 + .../dummy/mm0/font2.ufo/glyphs/ohornhoi.glif | 83 + .../mm0/font2.ufo/glyphs/ohorntilde.glif | 95 + .../mm0/font2.ufo/glyphs/ohungarumlaut.glif | 74 + .../dummy/mm0/font2.ufo/glyphs/omacron.glif | 52 + .../dummy/mm0/font2.ufo/glyphs/omega.glif | 62 + .../mm0/font2.ufo/glyphs/omegatonos.glif | 85 + .../dummy/mm0/font2.ufo/glyphs/omicron.glif | 38 + .../mm0/font2.ufo/glyphs/omicrontonos.glif | 64 + .../dummy/mm0/font2.ufo/glyphs/one.subs.glif | 35 + .../dummy/mm0/font2.ufo/glyphs/one.sups.glif | 24 + .../dummy/mm0/font2.ufo/glyphs/oneeighth.glif | 93 + .../dummy/mm0/font2.ufo/glyphs/onehalf.glif | 76 + .../mm0/font2.ufo/glyphs/onequarter.glif | 55 + .../dummy/mm0/font2.ufo/glyphs/onethird.glif | 99 + .../mm0/font2.ufo/glyphs/ordfeminine.glif | 85 + .../mm0/font2.ufo/glyphs/ordmasculine.glif | 46 + .../dummy/mm0/font2.ufo/glyphs/oslash.glif | 44 + .../dummy/mm0/font2.ufo/glyphs/otilde.glif | 74 + .../dummy/mm0/font2.ufo/glyphs/overline.glif | 13 + .../dummy/mm0/font2.ufo/glyphs/p.sups.glif | 53 + .../dummy/mm0/font2.ufo/glyphs/palochka.glif | 42 + .../dummy/mm0/font2.ufo/glyphs/paragraph.glif | 41 + .../mm0/font2.ufo/glyphs/parenleft.subs.glif | 34 + .../mm0/font2.ufo/glyphs/parenleft.sups.glif | 23 + .../mm0/font2.ufo/glyphs/parenright.subs.glif | 34 + .../mm0/font2.ufo/glyphs/parenright.sups.glif | 23 + .../mm0/font2.ufo/glyphs/partialdiff.glif | 47 + .../input/dummy/mm0/font2.ufo/glyphs/pe.glif | 79 + .../mm0/font2.ufo/glyphs/periodcentered.glif | 32 + .../mm0/font2.ufo/glyphs/perthousand.glif | 108 + .../dummy/mm0/font2.ufo/glyphs/peseta.glif | 66 + .../dummy/mm0/font2.ufo/glyphs/peso.glif | 72 + .../input/dummy/mm0/font2.ufo/glyphs/phi.glif | 48 + .../input/dummy/mm0/font2.ufo/glyphs/pi.glif | 60 + .../dummy/mm0/font2.ufo/glyphs/plusminus.glif | 25 + .../dummy/mm0/font2.ufo/glyphs/prime.glif | 23 + .../dummy/mm0/font2.ufo/glyphs/product.glif | 79 + .../input/dummy/mm0/font2.ufo/glyphs/psi.glif | 69 + .../mm0/font2.ufo/glyphs/questiondbl.glif | 107 + .../mm0/font2.ufo/glyphs/questiondown.glif | 68 + .../mm0/font2.ufo/glyphs/questionexclam.glif | 88 + .../mm0/font2.ufo/glyphs/questiongreek.glif | 55 + .../mm0/font2.ufo/glyphs/quotedblbase.glif | 64 + .../mm0/font2.ufo/glyphs/quotedblleft.glif | 64 + .../mm0/font2.ufo/glyphs/quotedblright.glif | 64 + .../dummy/mm0/font2.ufo/glyphs/quoteleft.glif | 30 + .../mm0/font2.ufo/glyphs/quoteright.glif | 30 + .../mm0/font2.ufo/glyphs/quotesinglbase.glif | 41 + .../dummy/mm0/font2.ufo/glyphs/r.sups.glif | 48 + .../dummy/mm0/font2.ufo/glyphs/racute.glif | 83 + .../dummy/mm0/font2.ufo/glyphs/radical.glif | 20 + .../dummy/mm0/font2.ufo/glyphs/rcaron.glif | 75 + .../mm0/font2.ufo/glyphs/rcommaaccent.glif | 87 + .../dummy/mm0/font2.ufo/glyphs/rdotbelow.glif | 79 + .../mm0/font2.ufo/glyphs/rdotbelowmacron.glif | 85 + .../mm0/font2.ufo/glyphs/registered.glif | 94 + .../input/dummy/mm0/font2.ufo/glyphs/rho.glif | 44 + .../dummy/mm0/font2.ufo/glyphs/ring.glif | 49 + .../dummy/mm0/font2.ufo/glyphs/ringcmb.glif | 37 + .../mm0/font2.ufo/glyphs/ringhalfleftmod.glif | 23 + .../font2.ufo/glyphs/ringhalfrightmod.glif | 23 + .../mm0/font2.ufo/glyphs/rlinebelow.glif | 71 + .../dummy/mm0/font2.ufo/glyphs/ruble.glif | 66 + .../mm0/font2.ufo/glyphs/rupeeindian.glif | 54 + .../dummy/mm0/font2.ufo/glyphs/s.sups.glif | 55 + .../dummy/mm0/font2.ufo/glyphs/sacute.glif | 86 + .../dummy/mm0/font2.ufo/glyphs/sampi.glif | 35 + .../dummy/mm0/font2.ufo/glyphs/scaron.glif | 78 + .../dummy/mm0/font2.ufo/glyphs/scedilla.glif | 93 + .../dummy/mm0/font2.ufo/glyphs/schwa.glif | 49 + .../dummy/mm0/font2.ufo/glyphs/schwacyr.glif | 54 + .../mm0/font2.ufo/glyphs/scircumflex.glif | 78 + .../mm0/font2.ufo/glyphs/scommaaccent.glif | 90 + .../mm0/font2.ufo/glyphs/sdotaccent.glif | 82 + .../dummy/mm0/font2.ufo/glyphs/sdotbelow.glif | 82 + .../dummy/mm0/font2.ufo/glyphs/section.glif | 89 + .../mm0/font2.ufo/glyphs/servicemark.glif | 104 + .../mm0/font2.ufo/glyphs/seven.subs.glif | 29 + .../mm0/font2.ufo/glyphs/seven.sups.glif | 18 + .../mm0/font2.ufo/glyphs/seveneighths.glif | 87 + .../input/dummy/mm0/font2.ufo/glyphs/sha.glif | 105 + .../dummy/mm0/font2.ufo/glyphs/shcha.glif | 101 + .../dummy/mm0/font2.ufo/glyphs/shha.glif | 76 + .../dummy/mm0/font2.ufo/glyphs/sigma.end.glif | 51 + .../dummy/mm0/font2.ufo/glyphs/sigma.glif | 38 + .../dummy/mm0/font2.ufo/glyphs/similar.glif | 35 + .../dummy/mm0/font2.ufo/glyphs/six.subs.glif | 52 + .../dummy/mm0/font2.ufo/glyphs/six.sups.glif | 41 + .../dummy/mm0/font2.ufo/glyphs/soft.glif | 64 + .../mm0/font2.ufo/glyphs/soundcopyright.glif | 76 + .../mm0/font2.ufo/glyphs/squareblack.glif | 13 + .../mm0/font2.ufo/glyphs/squareshadow.glif | 21 + .../dummy/mm0/font2.ufo/glyphs/sterling.glif | 52 + .../dummy/mm0/font2.ufo/glyphs/stigma.glif | 47 + .../dummy/mm0/font2.ufo/glyphs/summation.glif | 33 + .../dummy/mm0/font2.ufo/glyphs/t.sups.glif | 37 + .../input/dummy/mm0/font2.ufo/glyphs/tau.glif | 37 + .../dummy/mm0/font2.ufo/glyphs/tbar.glif | 46 + .../dummy/mm0/font2.ufo/glyphs/tcaron.glif | 65 + .../dummy/mm0/font2.ufo/glyphs/tcedilla.glif | 76 + .../mm0/font2.ufo/glyphs/tcommaaccent.glif | 73 + .../dummy/mm0/font2.ufo/glyphs/tdieresis.glif | 79 + .../dummy/mm0/font2.ufo/glyphs/tdotbelow.glif | 65 + .../input/dummy/mm0/font2.ufo/glyphs/te.glif | 45 + .../dummy/mm0/font2.ufo/glyphs/tenge.glif | 51 + .../dummy/mm0/font2.ufo/glyphs/theta.glif | 41 + .../dummy/mm0/font2.ufo/glyphs/thorn.glif | 69 + .../mm0/font2.ufo/glyphs/three.subs.glif | 76 + .../mm0/font2.ufo/glyphs/three.sups.glif | 65 + .../mm0/font2.ufo/glyphs/threeeighths.glif | 134 + .../mm0/font2.ufo/glyphs/threeemdash.glif | 13 + .../mm0/font2.ufo/glyphs/threequarters.glif | 96 + .../dummy/mm0/font2.ufo/glyphs/tilde.glif | 49 + .../dummy/mm0/font2.ufo/glyphs/tildecmb.glif | 37 + .../mm0/font2.ufo/glyphs/tlinebelow.glif | 57 + .../dummy/mm0/font2.ufo/glyphs/tonos.glif | 39 + .../dummy/mm0/font2.ufo/glyphs/trademark.glif | 82 + .../font2.ufo/glyphs/triangleblackdown.glif | 15 + .../font2.ufo/glyphs/triangleblackleft.glif | 15 + .../font2.ufo/glyphs/triangleblackright.glif | 15 + .../mm0/font2.ufo/glyphs/triangleblackup.glif | 15 + .../font2.ufo/glyphs/trianglewhitedown.glif | 20 + .../font2.ufo/glyphs/trianglewhiteleft.glif | 20 + .../font2.ufo/glyphs/trianglewhiteright.glif | 20 + .../mm0/font2.ufo/glyphs/trianglewhiteup.glif | 20 + .../font2.ufo/glyphs/triangularbullet.glif | 15 + .../input/dummy/mm0/font2.ufo/glyphs/tse.glif | 78 + .../dummy/mm0/font2.ufo/glyphs/tshe.glif | 85 + .../dummy/mm0/font2.ufo/glyphs/tugrik.glif | 69 + .../dummy/mm0/font2.ufo/glyphs/two.subs.glif | 53 + .../dummy/mm0/font2.ufo/glyphs/two.sups.glif | 42 + .../mm0/font2.ufo/glyphs/twodotenleader.glif | 35 + .../dummy/mm0/font2.ufo/glyphs/twoemdash.glif | 13 + .../dummy/mm0/font2.ufo/glyphs/twothirds.glif | 117 + .../dummy/mm0/font2.ufo/glyphs/u.sups.glif | 46 + .../dummy/mm0/font2.ufo/glyphs/uacute.glif | 72 + .../mm0/font2.ufo/glyphs/uacutedblcyr.glif | 92 + .../dummy/mm0/font2.ufo/glyphs/ubreve.glif | 70 + .../dummy/mm0/font2.ufo/glyphs/ucaron.glif | 64 + .../mm0/font2.ufo/glyphs/ucircumflex.glif | 64 + .../dummy/mm0/font2.ufo/glyphs/ucyr.glif | 67 + .../dummy/mm0/font2.ufo/glyphs/udieresis.glif | 82 + .../mm0/font2.ufo/glyphs/udieresisacute.glif | 96 + .../mm0/font2.ufo/glyphs/udieresiscaron.glif | 92 + .../mm0/font2.ufo/glyphs/udieresisgrave.glif | 96 + .../mm0/font2.ufo/glyphs/udieresismacron.glif | 88 + .../dummy/mm0/font2.ufo/glyphs/udotbelow.glif | 68 + .../dummy/mm0/font2.ufo/glyphs/ugrave.glif | 72 + .../dummy/mm0/font2.ufo/glyphs/uhoi.glif | 70 + .../dummy/mm0/font2.ufo/glyphs/uhorn.glif | 70 + .../mm0/font2.ufo/glyphs/uhornacute.glif | 93 + .../mm0/font2.ufo/glyphs/uhorndotbelow.glif | 89 + .../mm0/font2.ufo/glyphs/uhorngrave.glif | 93 + .../dummy/mm0/font2.ufo/glyphs/uhornhoi.glif | 91 + .../mm0/font2.ufo/glyphs/uhorntilde.glif | 103 + .../mm0/font2.ufo/glyphs/uhungarumlaut.glif | 82 + .../dummy/mm0/font2.ufo/glyphs/umacron.glif | 60 + .../mm0/font2.ufo/glyphs/umacroncyr.glif | 70 + .../dummy/mm0/font2.ufo/glyphs/uogonek.glif | 68 + .../dummy/mm0/font2.ufo/glyphs/upsilon.glif | 60 + .../mm0/font2.ufo/glyphs/upsilondieresis.glif | 96 + .../glyphs/upsilondieresistonos.glif | 114 + .../mm0/font2.ufo/glyphs/upsilontonos.glif | 86 + .../dummy/mm0/font2.ufo/glyphs/uring.glif | 82 + .../dummy/mm0/font2.ufo/glyphs/ushort.glif | 98 + .../dummy/mm0/font2.ufo/glyphs/ustraight.glif | 54 + .../mm0/font2.ufo/glyphs/ustraightstroke.glif | 60 + .../dummy/mm0/font2.ufo/glyphs/utilde.glif | 82 + .../dummy/mm0/font2.ufo/glyphs/v.sups.glif | 33 + .../input/dummy/mm0/font2.ufo/glyphs/ve.glif | 75 + .../glyphs/verticallinebelowcmb.glif | 15 + .../font2.ufo/glyphs/verticallinelowmod.glif | 24 + .../mm0/font2.ufo/glyphs/verticallinemod.glif | 13 + .../dummy/mm0/font2.ufo/glyphs/w.sups.glif | 49 + .../dummy/mm0/font2.ufo/glyphs/wacute.glif | 75 + .../mm0/font2.ufo/glyphs/wcircumflex.glif | 67 + .../dummy/mm0/font2.ufo/glyphs/wdieresis.glif | 85 + .../dummy/mm0/font2.ufo/glyphs/wgrave.glif | 75 + .../input/dummy/mm0/font2.ufo/glyphs/won.glif | 51 + .../dummy/mm0/font2.ufo/glyphs/x.sups.glif | 59 + .../input/dummy/mm0/font2.ufo/glyphs/xi.glif | 61 + .../dummy/mm0/font2.ufo/glyphs/y.sups.glif | 52 + .../input/dummy/mm0/font2.ufo/glyphs/ya.glif | 81 + .../dummy/mm0/font2.ufo/glyphs/yacute.glif | 82 + .../input/dummy/mm0/font2.ufo/glyphs/yat.glif | 68 + .../mm0/font2.ufo/glyphs/ycircumflex.glif | 74 + .../dummy/mm0/font2.ufo/glyphs/ydieresis.glif | 92 + .../mm0/font2.ufo/glyphs/ydotaccent.glif | 78 + .../dummy/mm0/font2.ufo/glyphs/ydotbelow.glif | 78 + .../input/dummy/mm0/font2.ufo/glyphs/yen.glif | 65 + .../dummy/mm0/font2.ufo/glyphs/yeru.glif | 101 + .../dummy/mm0/font2.ufo/glyphs/ygrave.glif | 82 + .../dummy/mm0/font2.ufo/glyphs/yhoi.glif | 80 + .../input/dummy/mm0/font2.ufo/glyphs/yi.glif | 73 + .../dummy/mm0/font2.ufo/glyphs/ytilde.glif | 92 + .../input/dummy/mm0/font2.ufo/glyphs/yu.glif | 78 + .../dummy/mm0/font2.ufo/glyphs/z.sups.glif | 27 + .../dummy/mm0/font2.ufo/glyphs/zacute.glif | 52 + .../dummy/mm0/font2.ufo/glyphs/zcaron.glif | 44 + .../mm0/font2.ufo/glyphs/zdotaccent.glif | 48 + .../dummy/mm0/font2.ufo/glyphs/zdotbelow.glif | 48 + .../input/dummy/mm0/font2.ufo/glyphs/ze.glif | 62 + .../mm0/font2.ufo/glyphs/zedescender.glif | 95 + .../dummy/mm0/font2.ufo/glyphs/zero.subs.glif | 46 + .../dummy/mm0/font2.ufo/glyphs/zero.sups.glif | 35 + .../dummy/mm0/font2.ufo/glyphs/zeta.glif | 41 + .../input/dummy/mm0/font2.ufo/glyphs/zhe.glif | 134 + .../dummy/mm0/font2.ufo/glyphs/zhebreve.glif | 176 + .../mm0/font2.ufo/glyphs/zhedescender.glif | 140 + .../input/dummy/mm0/font2.ufo/groups.plist | 5997 +++++++++++++++++ .../dummy/mm0/font2.ufo/layercontents.plist | 14 + .../input/dummy/mm0/font2.ufo/lib.plist | 2070 ++++++ .../input/dummy/mm0/font2.ufo/metainfo.plist | 10 + .../input/dummy/no_metainfo.ufo/dummy | 0 tests/otfautohint_data/input/dummy/nocff.otf | Bin 0 -> 7484 bytes .../otfautohint_data/input/dummy/nohints.pfa | 312 + .../input/dummy/ok_privatedict_hstems.otf | Bin 0 -> 1624 bytes .../ok_privatedict_hstems.ufo/fontinfo.plist | 90 + .../ok_privatedict_hstems.ufo/glyphs/A_.glif | 44 + .../glyphs/contents.plist | 8 + .../ok_privatedict_hstems.ufo/groups.plist | 122 + .../layercontents.plist | 10 + .../ok_privatedict_hstems.ufo/metainfo.plist | 10 + .../input/dummy/ok_privatedict_vstems.otf | Bin 0 -> 1624 bytes .../ok_privatedict_vstems.ufo/fontinfo.plist | 90 + .../ok_privatedict_vstems.ufo/glyphs/A_.glif | 44 + .../glyphs/contents.plist | 8 + .../ok_privatedict_vstems.ufo/groups.plist | 122 + .../layercontents.plist | 10 + .../ok_privatedict_vstems.ufo/metainfo.plist | 10 + tests/otfautohint_data/input/dummy/seac.otf | Bin 0 -> 400 bytes .../too_long_glyph_name.ufo/fontinfo.plist | 90 + .../too_long_glyph_name.ufo/glyphs/a.glif | 62 + .../glyphs/contents.plist | 8 + .../too_long_glyph_name.ufo/groups.plist | 122 + .../layercontents.plist | 10 + .../too_long_glyph_name.ufo/metainfo.plist | 10 + .../sparse_masters/MasterSet_Kanji-w0.00.otf | Bin 0 -> 4920 bytes .../MasterSet_Kanji-w439.00.otf | Bin 0 -> 2284 bytes .../MasterSet_Kanji-w599.00.otf | Bin 0 -> 2288 bytes .../vf_tests/CJKSparseVar.subset.hinted.otf | Bin 0 -> 6912 bytes .../input/vf_tests/bug816.hinted.otf | Bin 0 -> 2492 bytes tests/otfautohint_test.py | 768 ++- 3264 files changed, 240105 insertions(+), 3 deletions(-) create mode 100644 tests/otfautohint_data/expected_output/dummy/font.otf.a-z,A-Z,zero-nine.hstm.txt create mode 100644 tests/otfautohint_data/expected_output/dummy/font.otf.a-z,A-Z,zero-nine.vstm.txt create mode 100644 tests/otfautohint_data/expected_output/dummy/font.otf.all.hstm.txt create mode 100644 tests/otfautohint_data/expected_output/dummy/font.otf.all.vstm.txt create mode 100644 tests/otfautohint_data/expected_output/dummy/font.otf.bot.txt create mode 100644 tests/otfautohint_data/expected_output/dummy/font.otf.hstm.txt create mode 100644 tests/otfautohint_data/expected_output/dummy/font.otf.top.txt create mode 100644 tests/otfautohint_data/expected_output/dummy/font.otf.vstm.txt create mode 100644 tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/data/com.adobe.type.processedHashMap create mode 100644 tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/fontinfo.plist create mode 100644 tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/glyphs/a.glif create mode 100644 tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/glyphs/after.glif create mode 100644 tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/glyphs/before.glif create mode 100644 tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/glyphs/contents.plist create mode 100644 tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/layercontents.plist create mode 100644 tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/lib.plist create mode 100644 tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/metainfo.plist create mode 100644 tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/data/com.adobe.type.processedHashMap create mode 100644 tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/fontinfo.plist create mode 100644 tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/glyphs/a.glif create mode 100644 tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/glyphs/after.glif create mode 100644 tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/glyphs/before.glif create mode 100644 tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/glyphs/contents.plist create mode 100644 tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/layercontents.plist create mode 100644 tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/lib.plist create mode 100644 tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/metainfo.plist create mode 100644 tests/otfautohint_data/expected_output/dummy/print_dflt_fddict_expected.txt create mode 100644 tests/otfautohint_data/expected_output/sparse_masters/MasterSet_Kanji-w0.00.otf create mode 100644 tests/otfautohint_data/expected_output/sparse_masters/MasterSet_Kanji-w439.00.otf create mode 100644 tests/otfautohint_data/expected_output/sparse_masters/MasterSet_Kanji-w599.00.otf create mode 100644 tests/otfautohint_data/input/CID/font.otf create mode 100644 tests/otfautohint_data/input/dummy/bad_font.pfa create mode 100644 tests/otfautohint_data/input/dummy/bad_font.pfb create mode 100644 tests/otfautohint_data/input/dummy/bad_font.ps create mode 100644 tests/otfautohint_data/input/dummy/bad_privatedict_bluevalues.otf create mode 100644 tests/otfautohint_data/input/dummy/bad_privatedict_bluevalues.ufo/fontinfo.plist create mode 100644 tests/otfautohint_data/input/dummy/bad_privatedict_bluevalues.ufo/glyphs/A_.glif create mode 100644 tests/otfautohint_data/input/dummy/bad_privatedict_bluevalues.ufo/glyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/bad_privatedict_bluevalues.ufo/groups.plist create mode 100644 tests/otfautohint_data/input/dummy/bad_privatedict_bluevalues.ufo/layercontents.plist create mode 100644 tests/otfautohint_data/input/dummy/bad_privatedict_bluevalues.ufo/metainfo.plist create mode 100644 tests/otfautohint_data/input/dummy/bad_privatedict_hstems.otf create mode 100644 tests/otfautohint_data/input/dummy/bad_privatedict_hstems.ufo/fontinfo.plist create mode 100644 tests/otfautohint_data/input/dummy/bad_privatedict_hstems.ufo/glyphs/A_.glif create mode 100644 tests/otfautohint_data/input/dummy/bad_privatedict_hstems.ufo/glyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/bad_privatedict_hstems.ufo/groups.plist create mode 100644 tests/otfautohint_data/input/dummy/bad_privatedict_hstems.ufo/layercontents.plist create mode 100644 tests/otfautohint_data/input/dummy/bad_privatedict_hstems.ufo/metainfo.plist create mode 100644 tests/otfautohint_data/input/dummy/bad_privatedict_vstems.otf create mode 100644 tests/otfautohint_data/input/dummy/bad_privatedict_vstems.ufo/fontinfo.plist create mode 100644 tests/otfautohint_data/input/dummy/bad_privatedict_vstems.ufo/glyphs/A_.glif create mode 100644 tests/otfautohint_data/input/dummy/bad_privatedict_vstems.ufo/glyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/bad_privatedict_vstems.ufo/groups.plist create mode 100644 tests/otfautohint_data/input/dummy/bad_privatedict_vstems.ufo/layercontents.plist create mode 100644 tests/otfautohint_data/input/dummy/bad_privatedict_vstems.ufo/metainfo.plist create mode 100644 tests/otfautohint_data/input/dummy/big_glyph.ufo/data/com.adobe.type.processedHashMap create mode 100644 tests/otfautohint_data/input/dummy/big_glyph.ufo/fontinfo.plist create mode 100644 tests/otfautohint_data/input/dummy/big_glyph.ufo/glyphs.com.adobe.type.processedglyphs/big.glif create mode 100644 tests/otfautohint_data/input/dummy/big_glyph.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/big_glyph.ufo/glyphs/big.glif create mode 100644 tests/otfautohint_data/input/dummy/big_glyph.ufo/glyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/big_glyph.ufo/layercontents.plist create mode 100644 tests/otfautohint_data/input/dummy/big_glyph.ufo/metainfo.plist create mode 100644 tests/otfautohint_data/input/dummy/decimals.otf create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/data/com.adobe.type.processedHashMap create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/fontinfo.plist create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/B_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/C_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/D_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/E_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/F_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/G_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/H_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/I_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/J_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/K_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/L_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/M_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/N_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/O_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/P_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/Q_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/R_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/S_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/T_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/U_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/V_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/W_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/X_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/Z_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/a.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/ampersand.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/asciicircum.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/asciitilde.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/asterisk.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/at.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/b.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/backslash.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/bar.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/braceleft.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/braceright.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/bracketleft.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/bracketright.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/c.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/colon.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/comma.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/d.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/dollar.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/e.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/eight.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/exclam.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/f.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/five.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/four.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/g.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/greater.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/h.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/hyphen.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/i.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/j.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/k.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/l.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/less.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/m.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/n.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/nine.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/numbersign.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/o.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/one.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/p.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/parenleft.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/parenright.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/period.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/plus.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/q.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/question.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/quotedbl.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/quotesingle.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/r.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/s.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/semicolon.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/seven.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/six.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/slash.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/t.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/three.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/two.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/u.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/underscore.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/v.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/w.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/x.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/y.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/z.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/zero.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/A_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/B_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/C_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/D_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/E_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/F_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/G_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/H_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/I_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/J_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/K_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/L_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/M_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/N_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/O_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/P_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/Q_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/R_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/S_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/T_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/U_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/V_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/W_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/X_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/Y_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/Z_.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/a.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/ampersand.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/asciicircum.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/asciitilde.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/asterisk.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/at.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/b.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/backslash.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/bar.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/braceleft.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/braceright.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/bracketleft.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/bracketright.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/c.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/colon.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/comma.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/d.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/dollar.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/e.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/eight.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/exclam.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/f.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/five.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/four.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/g.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/greater.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/h.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/hyphen.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/i.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/j.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/k.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/l.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/layerinfo.plist create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/less.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/m.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/n.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/nine.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/numbersign.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/o.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/one.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/p.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/parenleft.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/parenright.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/period.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/plus.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/q.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/question.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/quotedbl.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/quotesingle.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/r.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/s.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/semicolon.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/seven.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/six.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/slash.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/space.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/t.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/three.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/two.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/u.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/underscore.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/v.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/w.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/x.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/y.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/z.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/zero.glif create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/layercontents.plist create mode 100644 tests/otfautohint_data/input/dummy/decimals.ufo/metainfo.plist create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/data/com.adobe.type.processedHashMap create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/fontinfo.plist create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/A_.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/B_.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/C_.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/D_.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/E_.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/F_.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/G_.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/H_.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/I_.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/J_.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/K_.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/L_.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/M_.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/N_.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/O_.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/P_.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/Q_.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/R_.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/S_.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/T_.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/U_.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/V_.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/W_.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/X_.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/Y_.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/Z_.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/a.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/ampersand.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/asciicircum.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/asciitilde.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/asterisk.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/at.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/b.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/backslash.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/bar.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/braceleft.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/braceright.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/bracketleft.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/bracketright.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/c.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/colon.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/comma.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/d.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/dollar.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/e.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/eight.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/equal.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/exclam.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/f.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/five.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/four.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/g.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/grave.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/greater.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/h.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/hyphen.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/i.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/j.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/k.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/l.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/less.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/m.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/n.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/nine.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/numbersign.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/o.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/one.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/p.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/parenleft.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/parenright.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/percent.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/period.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/plus.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/q.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/question.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/quotedbl.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/quotesingle.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/r.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/s.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/semicolon.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/seven.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/six.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/slash.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/space.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/t.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/three.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/two.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/u.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/underscore.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/v.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/w.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/x.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/y.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/z.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/zero.glif create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/groups.plist create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/layercontents.plist create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/lib.plist create mode 100644 tests/otfautohint_data/input/dummy/defaultlayer.ufo/metainfo.plist create mode 100644 tests/otfautohint_data/input/dummy/empty_metainfo.ufo/metainfo.plist create mode 100644 tests/otfautohint_data/input/dummy/font.cff create mode 100644 tests/otfautohint_data/input/dummy/font.otf create mode 100644 tests/otfautohint_data/input/dummy/font.pfa create mode 100644 tests/otfautohint_data/input/dummy/font.pfb create mode 100644 tests/otfautohint_data/input/dummy/font.ps create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/data/com.adobe.type.processedHashMap create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/fontinfo.plist create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/B_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/C_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/D_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/E_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/F_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/G_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/H_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/I_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/J_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/K_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/L_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/M_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/N_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/O_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/P_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/Q_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/R_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/S_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/T_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/U_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/V_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/W_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/X_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/Z_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/a.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/ampersand.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/asciicircum.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/asciitilde.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/asterisk.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/at.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/b.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/backslash.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/bar.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/braceleft.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/braceright.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/bracketleft.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/bracketright.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/c.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/colon.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/comma.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/d.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/dollar.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/e.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/eight.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/equal.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/exclam.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/f.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/five.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/four.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/g.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/grave.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/greater.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/h.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/hyphen.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/i.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/j.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/k.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/l.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/less.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/m.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/n.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/nine.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/numbersign.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/o.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/one.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/p.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/parenleft.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/parenright.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/percent.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/period.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/plus.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/q.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/question.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/quotedbl.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/quotesingle.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/r.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/s.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/semicolon.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/seven.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/six.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/slash.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/t.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/three.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/two.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/u.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/underscore.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/v.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/w.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/x.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/y.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/z.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/zero.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/A_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/B_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/C_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/D_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/E_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/F_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/G_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/H_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/I_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/J_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/K_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/L_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/M_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/N_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/O_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/P_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/Q_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/R_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/S_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/T_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/U_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/V_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/W_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/X_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/Y_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/Z_.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/a.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/ampersand.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/asciicircum.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/asciitilde.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/asterisk.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/at.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/b.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/backslash.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/bar.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/braceleft.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/braceright.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/bracketleft.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/bracketright.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/c.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/colon.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/comma.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/d.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/dollar.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/e.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/eight.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/equal.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/exclam.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/f.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/five.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/four.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/g.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/grave.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/greater.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/h.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/hyphen.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/i.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/j.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/k.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/l.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/less.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/m.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/n.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/nine.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/numbersign.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/o.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/one.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/p.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/parenleft.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/parenright.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/percent.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/period.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/plus.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/q.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/question.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/quotedbl.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/quotesingle.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/r.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/s.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/semicolon.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/seven.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/six.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/slash.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/space.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/t.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/three.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/two.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/u.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/underscore.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/v.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/w.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/x.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/y.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/z.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/glyphs/zero.glif create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/groups.plist create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/layercontents.plist create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/lib.plist create mode 100644 tests/otfautohint_data/input/dummy/font.ufo/metainfo.plist create mode 100644 tests/otfautohint_data/input/dummy/fontinfo create mode 100644 tests/otfautohint_data/input/dummy/fontinfo_fdd create mode 100644 tests/otfautohint_data/input/dummy/glyphs.txt create mode 100644 tests/otfautohint_data/input/dummy/hashmap_advance.ufo/data/com.adobe.type.processedHashMap create mode 100644 tests/otfautohint_data/input/dummy/hashmap_advance.ufo/fontinfo.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/no_width-no_height.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/no_width-some_height.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/no_width-zero_height.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/some_width-no_height.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/some_width-some_height.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/some_width-zero_height.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/zero_width-no_height.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/zero_width-some_height.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/zero_width-zero_height.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/no_width-no_height.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/no_width-some_height.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/no_width-zero_height.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/some_width-no_height.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/some_width-some_height.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/some_width-zero_height.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/zero_width-no_height.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/zero_width-some_height.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/zero_width-zero_height.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_advance.ufo/layercontents.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_advance.ufo/lib.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_advance.ufo/metainfo.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_dflt_layer.ufo/fontinfo.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_dflt_layer.ufo/glyphs/a.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_dflt_layer.ufo/glyphs/after.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_dflt_layer.ufo/glyphs/before.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_dflt_layer.ufo/glyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_dflt_layer.ufo/layercontents.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_dflt_layer.ufo/lib.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_dflt_layer.ufo/metainfo.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_glyph_changed.ufo/data/com.adobe.type.processedHashMap create mode 100644 tests/otfautohint_data/input/dummy/hashmap_glyph_changed.ufo/fontinfo.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_glyph_changed.ufo/glyphs.com.adobe.type.processedglyphs/a.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_glyph_changed.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_glyph_changed.ufo/glyphs/a.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_glyph_changed.ufo/glyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_glyph_changed.ufo/layercontents.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_glyph_changed.ufo/metainfo.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_new_version.ufo/data/com.adobe.type.processedHashMap create mode 100644 tests/otfautohint_data/input/dummy/hashmap_new_version.ufo/fontinfo.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_new_version.ufo/glyphs.com.adobe.type.processedglyphs/a.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_new_version.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_new_version.ufo/glyphs/a.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_new_version.ufo/glyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_new_version.ufo/layercontents.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_new_version.ufo/metainfo.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_no_version.ufo/data/com.adobe.type.processedHashMap create mode 100644 tests/otfautohint_data/input/dummy/hashmap_no_version.ufo/fontinfo.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_no_version.ufo/glyphs.com.adobe.type.processedglyphs/a.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_no_version.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_no_version.ufo/glyphs/a.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_no_version.ufo/glyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_no_version.ufo/layercontents.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_no_version.ufo/metainfo.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_old_version.ufo/data/com.adobe.type.processedHashMap create mode 100644 tests/otfautohint_data/input/dummy/hashmap_old_version.ufo/fontinfo.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_old_version.ufo/glyphs.com.adobe.type.processedglyphs/a.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_old_version.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_old_version.ufo/glyphs/a.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_old_version.ufo/glyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_old_version.ufo/layercontents.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_old_version.ufo/metainfo.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_processed_no_autohint.ufo/data/com.adobe.type.processedHashMap create mode 100644 tests/otfautohint_data/input/dummy/hashmap_processed_no_autohint.ufo/fontinfo.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_processed_no_autohint.ufo/glyphs.com.adobe.type.processedglyphs/a.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_processed_no_autohint.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_processed_no_autohint.ufo/glyphs/a.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_processed_no_autohint.ufo/glyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_processed_no_autohint.ufo/layercontents.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_processed_no_autohint.ufo/metainfo.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_transform.ufo/data/com.adobe.type.processedHashMap create mode 100644 tests/otfautohint_data/input/dummy/hashmap_transform.ufo/fontinfo.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_transform.ufo/glyphs.com.adobe.type.processedglyphs/a.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_transform.ufo/glyphs.com.adobe.type.processedglyphs/after.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_transform.ufo/glyphs.com.adobe.type.processedglyphs/before.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_transform.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_transform.ufo/glyphs/a.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_transform.ufo/glyphs/after.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_transform.ufo/glyphs/before.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_transform.ufo/glyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_transform.ufo/layercontents.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_transform.ufo/lib.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_transform.ufo/metainfo.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/data/com.adobe.type.processedHashMap create mode 100644 tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/fontinfo.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/glyphs.com.adobe.type.processedglyphs/exclam.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/glyphs.com.adobe.type.processedglyphs/exclamdown.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/glyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/glyphs/exclam.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/glyphs/exclamdown.glif create mode 100644 tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/layercontents.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/lib.plist create mode 100644 tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/metainfo.plist create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/fontinfo.plist create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/A_.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/B_.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/C_.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/D_.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/E_.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/F_.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/G_.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/H_.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/I_.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/J_.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/K_.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/L_.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/M_.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/N_.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/O_.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/P_.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/Q_.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/R_.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/S_.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/T_.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/U_.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/V_.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/W_.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/X_.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/Y_.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/Z_.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/a.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/ampersand.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/asciicircum.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/asciitilde.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/asterisk.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/at.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/b.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/backslash.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/bar.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/braceleft.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/braceright.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/bracketleft.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/bracketright.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/c.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/colon.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/comma.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/d.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/dollar.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/e.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/eight.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/equal.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/exclam.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/f.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/five.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/four.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/g.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/grave.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/greater.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/h.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/hyphen.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/i.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/j.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/k.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/l.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/less.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/m.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/n.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/nine.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/numbersign.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/o.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/one.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/p.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/parenleft.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/parenright.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/percent.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/period.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/plus.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/q.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/question.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/quotedbl.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/quotesingle.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/r.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/s.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/semicolon.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/seven.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/six.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/slash.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/space.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/t.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/three.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/two.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/u.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/underscore.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/v.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/w.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/x.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/y.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/z.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/zero.glif create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/groups.plist create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/layercontents.plist create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/lib.plist create mode 100644 tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/metainfo.plist create mode 100644 tests/otfautohint_data/input/dummy/incomplete_metainfo.ufo/metainfo.plist create mode 100644 tests/otfautohint_data/input/dummy/layers.ufo/data/com.adobe.type.processedHashMap create mode 100644 tests/otfautohint_data/input/dummy/layers.ufo/fontinfo.plist create mode 100644 tests/otfautohint_data/input/dummy/layers.ufo/glyphs.background/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/layers.ufo/glyphs.background/layerinfo.plist create mode 100644 tests/otfautohint_data/input/dummy/layers.ufo/glyphs.com.adobe.type.processedglyphs/a.glif create mode 100644 tests/otfautohint_data/input/dummy/layers.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/layers.ufo/glyphs.condensed/a.glif create mode 100644 tests/otfautohint_data/input/dummy/layers.ufo/glyphs.condensed/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/layers.ufo/glyphs.condensed/layerinfo.plist create mode 100644 tests/otfautohint_data/input/dummy/layers.ufo/glyphs.other layer/a.glif create mode 100644 tests/otfautohint_data/input/dummy/layers.ufo/glyphs.other layer/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/layers.ufo/glyphs.other layer/layerinfo.plist create mode 100644 tests/otfautohint_data/input/dummy/layers.ufo/glyphs/a.glif create mode 100644 tests/otfautohint_data/input/dummy/layers.ufo/glyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/layers.ufo/glyphs/layerinfo.plist create mode 100644 tests/otfautohint_data/input/dummy/layers.ufo/layercontents.plist create mode 100644 tests/otfautohint_data/input/dummy/layers.ufo/lib.plist create mode 100644 tests/otfautohint_data/input/dummy/layers.ufo/metainfo.plist create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.otf create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/fontinfo.plist create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_E_.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_breve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_breveacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_brevecyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_brevedotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_brevegrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_brevehoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_brevetilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_circumflexacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_circumflexdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_circumflexgrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_circumflexhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_circumflextilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_cyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_dieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_grave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_hoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_ie.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_lpha.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_lphatonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_macron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_ogonek.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_ring.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_tilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/B_e.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/B_eta.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/C_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/C_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/C_cedilla.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/C_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/C_dotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/C_he.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/C_hedescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/C_hi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_croat.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_e.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_elta.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_je.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_linebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_ze.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_zhe.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_breve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_circumflexacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_circumflexdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_circumflexgrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_circumflexhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_circumflextilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_cyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_dieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_dotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_f.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_grave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_hoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_l.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_m.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_macron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_n.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_ndescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_ng.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_ogonek.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_psilon.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_psilontonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_r.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_s.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_sdescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_ta.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_tatonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_th.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_tilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_uro.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/F_ita.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_amma.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_breve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_commaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_dotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_ermandbls.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_he.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_hestroke.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_heup.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_je.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_macron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/H_a.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/H_adescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/H_ard.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/H_bar.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/H_brevebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/H_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/H_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_J_.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_cyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_dieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_dotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_e.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_ebreve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_egrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_eukran.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_grave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_gravecyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_hoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_macron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_macroncyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_o.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_ogonek.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_ota.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_otadieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_otatonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_short.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_tilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_ukran.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_zhitsa.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/J_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/J_e.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/K_a.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/K_abashkir.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/K_adescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/K_appa.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/K_commaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/K_je.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_ambda.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_commaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_dot.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_dotbelowmacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_je.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_linebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_slash.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/M_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/M_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/M_u.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_commaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_dotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_grave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_je.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_linebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_tilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_u.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_E_.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_barcyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_breve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_circumflexacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_circumflexdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_circumflexgrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_circumflexhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_circumflextilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_cyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_dieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_dieresiscyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_grave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_hoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_horn.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_hornacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_horndotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_horngrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_hornhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_horntilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_hungarumlaut.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_macron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_mega.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_megatonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_micron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_microntonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_slash.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_tilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/P_alochka.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/P_e.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/P_hi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/P_i.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/P_si.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/R_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/R_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/R_commaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/R_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/R_dotbelowmacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/R_ho.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/R_linebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_cedilla.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_chwa.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_chwacyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_commaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_dotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_ha.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_hcha.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_hha.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_igma.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_oft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_au.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_bar.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_cedilla.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_commaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_e.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_heta.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_horn.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_linebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_se.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_she.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_acutedblcyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_breve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_cyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_dieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_dieresisacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_dieresiscaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_dieresisgrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_dieresismacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_grave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_hoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_horn.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_hornacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_horndotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_horngrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_hornhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_horntilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_hungarumlaut.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_macron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_macroncyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_ogonek.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_psilon.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_psilondieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_psilontonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_ring.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_short.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_straight.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_straightstroke.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_tilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/V_e.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/W_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/W_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/W_dieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/W_grave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/X_i.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_a.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_at.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_dieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_dotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_eru.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_grave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_hoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_i.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_tilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_u.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_dotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_e.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_edescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_eta.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_he.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_hebreve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_hedescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/a.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/aacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/abreve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/abreveacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/abrevecyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/abrevedotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/abrevegrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/abrevehoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/abrevetilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acircumflexacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acircumflexdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acircumflexgrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acircumflexhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acircumflextilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acutecmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/adieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/adotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ae.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/agrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ahoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/aie.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/alpha.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/alphalatin.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/alphatonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/amacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/anoteleia.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/aogonek.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/approxequal.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/aring.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/arrowdown.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/arrowdownleft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/arrowdownright.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/arrowleft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/arrowright.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/arrowup.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/arrowupleft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/arrowupright.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/atilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/b.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/be.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/beta.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/bitcoin.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/breve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/brevebelowcmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/brevecmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/brokenbar.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/bullet.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/bulletoperator.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/c.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/cacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/caroncmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ccaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ccedilla.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ccircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/cdotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/cedi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/cedilla.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/cedillacmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/cent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/che.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/check.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/checkbox.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/checkedbox.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/chedescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/chi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/circumflexcmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/colonmonetary.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/colontriangularmod.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/commabelowcmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/commercemark.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/copyleft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/copyright.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/currency.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/d.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dagger.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/daggerdbl.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dblprime.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dcaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dcroat.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ddotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/de.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/degree.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/delta.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/deposeemark.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/diamondblack.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dieresisbelowcmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dieresiscmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dieresistonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/digamma.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/divide.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/divisionslash.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dje.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dlinebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dngb_cross.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dong.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dotaccentcmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dotbelowcmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dotlessi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dotlessj.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dze.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dzhe.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/e.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/eacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ebreve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ecaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ecircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ecircumflexacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ecircumflexdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ecircumflexgrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ecircumflexhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ecircumflextilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ecyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/edieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/edotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/edotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ef.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/egrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ehoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/eight.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/eight.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/eighthnote.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/el.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ellipsis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/em.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/emacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/emdash.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/en.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/endash.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/endescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/eng.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/eogonek.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/epsilon.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/epsilontonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/er.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/es.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/esdescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/estimated.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/eta.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/etatonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/eth.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/etilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/exclamdbl.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/exclamdown.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/exclamquestion.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/f.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/f_f.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/f_f_i.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/f_f_l.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/f_i.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/f_l.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/figuredash.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/figurespace.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/fisheye.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/fita.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/five.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/five.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/fiveeighths.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/florin.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/four.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/four.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/fraction.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/g.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gamma.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gbreve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gcaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gcircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gcommaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gdotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/germandbls.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ghe.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ghestroke.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gheup.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gje.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gmacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gravecmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/greaterequal.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gscript.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/guarani.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/guillemotleft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/guillemotright.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/guilsinglleft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/guilsinglright.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/h.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ha.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hadescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hard.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hbar.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hbrevebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hcircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hoicmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/horizontalbar.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/horncmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hryvnia.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hungarumlaut.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hungarumlautcmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/i.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/icaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/icircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/icyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/idieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/idotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ie.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iebreve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iegrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ieukran.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/igrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/igravecyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ihoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ij.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/imacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/imacroncyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/infinity.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/integral.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/io.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iogonek.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iota.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iotadieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iotadieresistonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iotatonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ishort.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/itilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iukran.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/izhitsa.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/j.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/jcircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/je.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/k.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ka.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/kabashkir.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/kadescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/kai.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/kappa.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/kcommaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/kgreenlandic.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/kje.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/koppa.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/l.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lambda.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lcaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lcommaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ldot.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ldotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ldotbelowmacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lessequal.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lira.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/liraturkish.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/litre.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lje.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/llinebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/logicalnot.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/longs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lownumeralsign.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lozenge.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lslash.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/m.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/macronbelowcmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/macroncmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/macronmod.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/macute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/mdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/minus.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/mu.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/multiply.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/n.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/nacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/naira.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/napostrophe.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ncaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ncommaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ndotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ndotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ngrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/nine.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/nine.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/nje.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/nlinebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/notequal.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ntilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/nu.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/numeralsign.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/numero.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/o.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/oacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/obarcyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/obreve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ocaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ocircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ocircumflexacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ocircumflexdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ocircumflexgrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ocircumflexhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ocircumflextilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ocyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/odieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/odieresiscyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/odotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/oe.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ogonek.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ogonekcmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ograve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ohoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ohorn.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ohornacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ohorndotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ohorngrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ohornhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ohorntilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ohungarumlaut.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/omacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/omega.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/omegatonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/omicron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/omicrontonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/one.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/one.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/oneeighth.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/onehalf.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/onequarter.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/onethird.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ordfeminine.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ordmasculine.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/oslash.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/otilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/overline.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/p.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/palochka.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/paragraph.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/parenleft.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/parenleft.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/parenright.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/parenright.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/partialdiff.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/pe.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/periodcentered.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/perthousand.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/peseta.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/peso.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/phi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/pi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/plusminus.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/prime.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/product.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/psi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/questiondbl.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/questiondown.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/questionexclam.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/questiongreek.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/quotedblbase.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/quotedblleft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/quotedblright.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/quoteleft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/quoteright.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/quotesinglbase.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/r.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/racute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/radical.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/rcaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/rcommaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/rdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/rdotbelowmacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/registered.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/rho.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ring.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ringcmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ringhalfleftmod.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ringhalfrightmod.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/rlinebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ruble.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/rupeeindian.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/s.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/sacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/sampi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/scaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/scedilla.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/schwa.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/schwacyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/scircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/scommaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/sdotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/sdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/section.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/servicemark.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/seven.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/seven.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/seveneighths.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/sha.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/shcha.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/shha.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/sigma.end.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/sigma.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/similar.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/six.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/six.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/soft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/soundcopyright.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/squareblack.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/squareshadow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/sterling.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/stigma.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/summation.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/t.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tau.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tbar.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tcaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tcedilla.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tcommaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tdieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/te.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tenge.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/theta.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/thorn.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/three.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/three.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/threeeighths.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/threeemdash.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/threequarters.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tildecmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tlinebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/trademark.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/triangleblackdown.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/triangleblackleft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/triangleblackright.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/triangleblackup.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/trianglewhitedown.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/trianglewhiteleft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/trianglewhiteright.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/trianglewhiteup.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/triangularbullet.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tse.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tshe.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tugrik.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/two.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/two.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/twodotenleader.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/twoemdash.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/twothirds.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/u.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uacutedblcyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ubreve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ucaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ucircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ucyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/udieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/udieresisacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/udieresiscaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/udieresisgrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/udieresismacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/udotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ugrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uhorn.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uhornacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uhorndotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uhorngrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uhornhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uhorntilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uhungarumlaut.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/umacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/umacroncyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uogonek.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/upsilon.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/upsilondieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/upsilondieresistonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/upsilontonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uring.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ushort.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ustraight.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ustraightstroke.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/utilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/v.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/verticallinebelowcmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/verticallinelowmod.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/verticallinemod.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/w.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/wacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/wcircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/wdieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/wgrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/won.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/x.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/xi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/y.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ya.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/yacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/yat.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ycircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ydieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ydotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ydotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/yen.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/yeru.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ygrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/yhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/yi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ytilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/yu.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/z.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zcaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zdotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ze.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zedescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zero.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zero.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zeta.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zhe.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zhebreve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zhedescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/groups.plist create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/layercontents.plist create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/lib.plist create mode 100644 tests/otfautohint_data/input/dummy/mm0/font0.ufo/metainfo.plist create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/fontinfo.plist create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_E_.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_breve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_breveacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_brevecyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_brevedotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_brevegrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_brevehoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_brevetilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_circumflexacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_circumflexdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_circumflexgrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_circumflexhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_circumflextilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_cyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_dieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_grave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_hoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_ie.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_lpha.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_lphatonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_macron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_ogonek.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_ring.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_tilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/B_e.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/B_eta.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/C_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/C_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/C_cedilla.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/C_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/C_dotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/C_he.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/C_hedescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/C_hi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_croat.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_e.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_elta.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_je.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_linebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_ze.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_zhe.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_breve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_circumflexacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_circumflexdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_circumflexgrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_circumflexhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_circumflextilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_cyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_dieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_dotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_f.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_grave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_hoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_l.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_m.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_macron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_n.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_ndescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_ng.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_ogonek.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_psilon.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_psilontonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_r.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_s.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_sdescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_ta.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_tatonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_th.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_tilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_uro.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/F_ita.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_amma.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_breve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_commaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_dotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_ermandbls.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_he.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_hestroke.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_heup.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_je.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_macron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/H_a.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/H_adescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/H_ard.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/H_bar.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/H_brevebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/H_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/H_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_J_.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_cyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_dieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_dotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_e.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_ebreve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_egrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_eukran.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_grave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_gravecyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_hoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_macron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_macroncyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_o.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_ogonek.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_ota.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_otadieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_otatonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_short.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_tilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_ukran.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_zhitsa.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/J_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/J_e.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/K_a.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/K_abashkir.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/K_adescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/K_appa.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/K_commaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/K_je.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_ambda.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_commaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_dot.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_dotbelowmacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_je.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_linebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_slash.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/M_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/M_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/M_u.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_commaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_dotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_grave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_je.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_linebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_tilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_u.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_E_.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_barcyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_breve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_circumflexacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_circumflexdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_circumflexgrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_circumflexhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_circumflextilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_cyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_dieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_dieresiscyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_grave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_hoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_horn.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_hornacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_horndotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_horngrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_hornhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_horntilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_hungarumlaut.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_macron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_mega.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_megatonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_micron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_microntonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_slash.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_tilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/P_alochka.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/P_e.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/P_hi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/P_i.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/P_si.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/R_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/R_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/R_commaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/R_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/R_dotbelowmacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/R_ho.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/R_linebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_cedilla.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_chwa.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_chwacyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_commaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_dotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_ha.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_hcha.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_hha.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_igma.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_oft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_au.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_bar.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_cedilla.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_commaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_e.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_heta.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_horn.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_linebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_se.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_she.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_acutedblcyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_breve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_cyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_dieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_dieresisacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_dieresiscaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_dieresisgrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_dieresismacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_grave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_hoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_horn.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_hornacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_horndotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_horngrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_hornhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_horntilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_hungarumlaut.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_macron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_macroncyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_ogonek.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_psilon.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_psilondieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_psilontonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_ring.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_short.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_straight.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_straightstroke.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_tilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/V_e.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/W_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/W_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/W_dieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/W_grave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/X_i.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_a.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_at.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_dieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_dotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_eru.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_grave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_hoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_i.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_tilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_u.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_dotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_e.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_edescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_eta.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_he.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_hebreve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_hedescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/a.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/aacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/abreve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/abreveacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/abrevecyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/abrevedotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/abrevegrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/abrevehoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/abrevetilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acircumflexacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acircumflexdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acircumflexgrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acircumflexhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acircumflextilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acutecmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/adieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/adotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ae.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/agrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ahoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/aie.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/alpha.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/alphalatin.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/alphatonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/amacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/anoteleia.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/aogonek.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/approxequal.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/aring.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/arrowdown.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/arrowdownleft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/arrowdownright.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/arrowleft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/arrowright.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/arrowup.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/arrowupleft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/arrowupright.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/atilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/b.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/be.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/beta.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/bitcoin.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/breve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/brevebelowcmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/brevecmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/brokenbar.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/bullet.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/bulletoperator.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/c.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/cacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/caroncmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ccaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ccedilla.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ccircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/cdotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/cedi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/cedilla.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/cedillacmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/cent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/che.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/check.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/checkbox.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/checkedbox.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/chedescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/chi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/circumflexcmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/colonmonetary.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/colontriangularmod.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/commabelowcmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/commercemark.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/copyleft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/copyright.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/currency.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/d.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dagger.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/daggerdbl.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dblprime.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dcaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dcroat.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ddotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/de.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/degree.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/delta.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/deposeemark.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/diamondblack.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dieresisbelowcmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dieresiscmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dieresistonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/digamma.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/divide.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/divisionslash.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dje.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dlinebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dngb_cross.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dong.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dotaccentcmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dotbelowcmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dotlessi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dotlessj.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dze.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dzhe.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/e.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/eacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ebreve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ecaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ecircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ecircumflexacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ecircumflexdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ecircumflexgrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ecircumflexhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ecircumflextilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ecyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/edieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/edotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/edotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ef.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/egrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ehoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/eight.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/eight.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/eighthnote.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/el.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ellipsis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/em.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/emacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/emdash.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/en.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/endash.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/endescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/eng.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/eogonek.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/epsilon.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/epsilontonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/er.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/es.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/esdescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/estimated.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/eta.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/etatonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/eth.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/etilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/exclamdbl.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/exclamdown.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/exclamquestion.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/f.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/f_f.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/f_f_i.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/f_f_l.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/f_i.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/f_l.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/figuredash.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/figurespace.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/fisheye.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/fita.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/five.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/five.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/fiveeighths.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/florin.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/four.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/four.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/fraction.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/g.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gamma.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gbreve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gcaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gcircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gcommaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gdotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/germandbls.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ghe.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ghestroke.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gheup.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gje.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gmacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gravecmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/greaterequal.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gscript.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/guarani.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/guillemotleft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/guillemotright.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/guilsinglleft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/guilsinglright.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/h.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ha.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hadescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hard.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hbar.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hbrevebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hcircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hoicmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/horizontalbar.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/horncmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hryvnia.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hungarumlaut.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hungarumlautcmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/i.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/icaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/icircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/icyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/idieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/idotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ie.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iebreve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iegrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ieukran.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/igrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/igravecyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ihoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ij.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/imacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/imacroncyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/infinity.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/integral.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/io.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iogonek.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iota.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iotadieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iotadieresistonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iotatonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ishort.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/itilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iukran.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/izhitsa.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/j.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/jcircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/je.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/k.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ka.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/kabashkir.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/kadescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/kai.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/kappa.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/kcommaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/kgreenlandic.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/kje.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/koppa.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/l.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lambda.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lcaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lcommaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ldot.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ldotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ldotbelowmacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lessequal.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lira.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/liraturkish.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/litre.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lje.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/llinebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/logicalnot.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/longs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lownumeralsign.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lozenge.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lslash.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/m.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/macronbelowcmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/macroncmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/macronmod.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/macute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/mdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/minus.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/mu.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/multiply.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/n.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/nacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/naira.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/napostrophe.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ncaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ncommaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ndotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ndotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ngrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/nine.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/nine.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/nje.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/nlinebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/notequal.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ntilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/nu.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/numeralsign.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/numero.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/o.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/oacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/obarcyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/obreve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ocaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ocircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ocircumflexacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ocircumflexdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ocircumflexgrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ocircumflexhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ocircumflextilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ocyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/odieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/odieresiscyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/odotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/oe.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ogonek.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ogonekcmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ograve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ohoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ohorn.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ohornacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ohorndotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ohorngrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ohornhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ohorntilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ohungarumlaut.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/omacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/omega.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/omegatonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/omicron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/omicrontonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/one.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/one.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/oneeighth.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/onehalf.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/onequarter.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/onethird.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ordfeminine.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ordmasculine.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/oslash.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/otilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/overline.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/p.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/palochka.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/paragraph.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/parenleft.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/parenleft.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/parenright.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/parenright.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/partialdiff.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/pe.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/periodcentered.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/perthousand.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/peseta.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/peso.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/phi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/pi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/plusminus.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/prime.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/product.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/psi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/questiondbl.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/questiondown.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/questionexclam.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/questiongreek.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/quotedblbase.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/quotedblleft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/quotedblright.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/quoteleft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/quoteright.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/quotesinglbase.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/r.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/racute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/radical.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/rcaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/rcommaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/rdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/rdotbelowmacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/registered.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/rho.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ring.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ringcmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ringhalfleftmod.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ringhalfrightmod.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/rlinebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ruble.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/rupeeindian.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/s.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/sacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/sampi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/scaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/scedilla.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/schwa.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/schwacyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/scircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/scommaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/sdotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/sdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/section.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/servicemark.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/seven.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/seven.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/seveneighths.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/sha.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/shcha.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/shha.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/sigma.end.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/sigma.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/similar.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/six.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/six.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/soft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/soundcopyright.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/squareblack.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/squareshadow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/sterling.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/stigma.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/summation.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/t.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tau.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tbar.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tcaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tcedilla.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tcommaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tdieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/te.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tenge.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/theta.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/thorn.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/three.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/three.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/threeeighths.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/threeemdash.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/threequarters.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tildecmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tlinebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/trademark.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/triangleblackdown.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/triangleblackleft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/triangleblackright.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/triangleblackup.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/trianglewhitedown.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/trianglewhiteleft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/trianglewhiteright.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/trianglewhiteup.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/triangularbullet.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tse.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tshe.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tugrik.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/two.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/two.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/twodotenleader.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/twoemdash.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/twothirds.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/u.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uacutedblcyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ubreve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ucaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ucircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ucyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/udieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/udieresisacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/udieresiscaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/udieresisgrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/udieresismacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/udotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ugrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uhorn.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uhornacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uhorndotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uhorngrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uhornhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uhorntilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uhungarumlaut.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/umacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/umacroncyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uogonek.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/upsilon.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/upsilondieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/upsilondieresistonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/upsilontonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uring.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ushort.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ustraight.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ustraightstroke.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/utilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/v.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/verticallinebelowcmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/verticallinelowmod.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/verticallinemod.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/w.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/wacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/wcircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/wdieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/wgrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/won.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/x.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/xi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/y.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ya.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/yacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/yat.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ycircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ydieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ydotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ydotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/yen.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/yeru.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ygrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/yhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/yi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ytilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/yu.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/z.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zcaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zdotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ze.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zedescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zero.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zero.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zeta.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zhe.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zhebreve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zhedescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/groups.plist create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/layercontents.plist create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/lib.plist create mode 100644 tests/otfautohint_data/input/dummy/mm0/font1.ufo/metainfo.plist create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/fontinfo.plist create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_E_.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_breve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_breveacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_brevecyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_brevedotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_brevegrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_brevehoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_brevetilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_circumflexacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_circumflexdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_circumflexgrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_circumflexhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_circumflextilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_cyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_dieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_grave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_hoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_ie.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_lpha.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_lphatonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_macron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_ogonek.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_ring.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_tilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/B_e.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/B_eta.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/C_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/C_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/C_cedilla.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/C_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/C_dotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/C_he.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/C_hedescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/C_hi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_croat.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_e.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_elta.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_je.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_linebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_ze.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_zhe.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_breve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_circumflexacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_circumflexdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_circumflexgrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_circumflexhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_circumflextilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_cyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_dieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_dotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_f.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_grave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_hoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_l.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_m.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_macron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_n.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_ndescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_ng.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_ogonek.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_psilon.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_psilontonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_r.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_s.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_sdescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_ta.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_tatonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_th.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_tilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_uro.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/F_ita.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_amma.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_breve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_commaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_dotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_ermandbls.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_he.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_hestroke.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_heup.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_je.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_macron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/H_a.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/H_adescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/H_ard.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/H_bar.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/H_brevebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/H_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/H_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_J_.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_cyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_dieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_dotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_e.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_ebreve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_egrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_eukran.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_grave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_gravecyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_hoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_macron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_macroncyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_o.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_ogonek.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_ota.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_otadieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_otatonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_short.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_tilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_ukran.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_zhitsa.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/J_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/J_e.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/K_a.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/K_abashkir.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/K_adescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/K_appa.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/K_commaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/K_je.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_ambda.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_commaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_dot.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_dotbelowmacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_je.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_linebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_slash.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/M_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/M_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/M_u.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_commaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_dotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_grave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_je.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_linebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_tilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_u.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_E_.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_barcyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_breve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_circumflexacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_circumflexdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_circumflexgrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_circumflexhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_circumflextilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_cyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_dieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_dieresiscyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_grave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_hoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_horn.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_hornacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_horndotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_horngrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_hornhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_horntilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_hungarumlaut.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_macron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_mega.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_megatonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_micron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_microntonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_slash.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_tilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/P_alochka.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/P_e.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/P_hi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/P_i.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/P_si.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/R_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/R_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/R_commaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/R_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/R_dotbelowmacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/R_ho.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/R_linebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_cedilla.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_chwa.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_chwacyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_commaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_dotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_ha.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_hcha.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_hha.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_igma.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_oft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_au.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_bar.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_cedilla.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_commaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_e.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_heta.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_horn.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_linebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_se.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_she.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_acutedblcyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_breve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_cyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_dieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_dieresisacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_dieresiscaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_dieresisgrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_dieresismacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_grave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_hoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_horn.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_hornacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_horndotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_horngrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_hornhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_horntilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_hungarumlaut.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_macron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_macroncyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_ogonek.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_psilon.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_psilondieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_psilontonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_ring.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_short.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_straight.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_straightstroke.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_tilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/V_e.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/W_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/W_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/W_dieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/W_grave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/X_i.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_a.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_at.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_dieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_dotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_eru.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_grave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_hoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_i.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_tilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_u.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_dotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_dotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_e.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_edescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_eta.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_he.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_hebreve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_hedescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/a.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/aacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/abreve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/abreveacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/abrevecyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/abrevedotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/abrevegrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/abrevehoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/abrevetilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acircumflexacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acircumflexdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acircumflexgrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acircumflexhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acircumflextilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acutecmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/adieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/adotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ae.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/agrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ahoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/aie.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/alpha.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/alphalatin.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/alphatonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/amacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/anoteleia.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/aogonek.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/approxequal.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/aring.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/arrowdown.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/arrowdownleft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/arrowdownright.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/arrowleft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/arrowright.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/arrowup.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/arrowupleft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/arrowupright.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/atilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/b.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/be.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/beta.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/bitcoin.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/breve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/brevebelowcmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/brevecmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/brokenbar.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/bullet.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/bulletoperator.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/c.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/cacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/caron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/caroncmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ccaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ccedilla.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ccircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/cdotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/cedi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/cedilla.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/cedillacmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/cent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/che.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/check.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/checkbox.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/checkedbox.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/chedescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/chi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/circumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/circumflexcmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/colonmonetary.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/colontriangularmod.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/commabelowcmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/commercemark.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/copyleft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/copyright.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/currency.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/d.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dagger.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/daggerdbl.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dblprime.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dcaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dcroat.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ddotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/de.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/degree.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/delta.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/deposeemark.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/diamondblack.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dieresisbelowcmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dieresiscmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dieresistonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/digamma.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/divide.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/divisionslash.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dje.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dlinebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dngb_cross.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dong.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dotaccentcmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dotbelowcmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dotlessi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dotlessj.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dze.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dzhe.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/e.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/eacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ebreve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ecaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ecircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ecircumflexacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ecircumflexdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ecircumflexgrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ecircumflexhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ecircumflextilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ecyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/edieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/edotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/edotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ef.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/egrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ehoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/eight.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/eight.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/eighthnote.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/el.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ellipsis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/em.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/emacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/emdash.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/en.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/endash.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/endescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/eng.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/eogonek.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/epsilon.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/epsilontonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/er.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/es.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/esdescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/estimated.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/eta.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/etatonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/eth.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/etilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/exclamdbl.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/exclamdown.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/exclamquestion.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/f.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/f_f.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/f_f_i.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/f_f_l.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/f_i.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/f_l.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/figuredash.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/figurespace.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/fisheye.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/fita.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/five.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/five.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/fiveeighths.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/florin.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/four.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/four.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/fraction.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/g.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gamma.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gbreve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gcaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gcircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gcommaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gdotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/germandbls.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ghe.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ghestroke.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gheup.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gje.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gmacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gravecmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/greaterequal.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gscript.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/guarani.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/guillemotleft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/guillemotright.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/guilsinglleft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/guilsinglright.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/h.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ha.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hadescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hard.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hbar.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hbrevebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hcircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hoicmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/horizontalbar.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/horncmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hryvnia.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hungarumlaut.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hungarumlautcmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/i.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/icaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/icircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/icyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/idieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/idotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ie.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iebreve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iegrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ieukran.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/igrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/igravecyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ihoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ij.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/imacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/imacroncyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/infinity.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/integral.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/io.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iogonek.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iota.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iotadieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iotadieresistonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iotatonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ishort.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/itilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iukran.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/izhitsa.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/j.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/jcircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/je.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/k.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ka.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/kabashkir.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/kadescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/kai.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/kappa.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/kcommaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/kgreenlandic.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/kje.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/koppa.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/l.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lambda.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lcaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lcommaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ldot.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ldotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ldotbelowmacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lessequal.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lira.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/liraturkish.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/litre.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lje.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/llinebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/logicalnot.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/longs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lownumeralsign.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lozenge.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lslash.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/m.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/macronbelowcmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/macroncmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/macronmod.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/macute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/mdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/minus.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/mu.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/multiply.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/n.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/nacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/naira.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/napostrophe.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ncaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ncommaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ndotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ndotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ngrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/nine.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/nine.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/nje.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/nlinebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/notequal.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ntilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/nu.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/numeralsign.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/numero.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/o.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/oacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/obarcyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/obreve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ocaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ocircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ocircumflexacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ocircumflexdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ocircumflexgrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ocircumflexhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ocircumflextilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ocyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/odieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/odieresiscyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/odotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/oe.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ogonek.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ogonekcmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ograve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ohoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ohorn.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ohornacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ohorndotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ohorngrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ohornhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ohorntilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ohungarumlaut.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/omacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/omega.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/omegatonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/omicron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/omicrontonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/one.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/one.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/oneeighth.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/onehalf.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/onequarter.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/onethird.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ordfeminine.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ordmasculine.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/oslash.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/otilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/overline.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/p.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/palochka.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/paragraph.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/parenleft.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/parenleft.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/parenright.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/parenright.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/partialdiff.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/pe.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/periodcentered.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/perthousand.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/peseta.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/peso.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/phi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/pi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/plusminus.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/prime.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/product.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/psi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/questiondbl.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/questiondown.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/questionexclam.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/questiongreek.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/quotedblbase.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/quotedblleft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/quotedblright.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/quoteleft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/quoteright.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/quotesinglbase.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/r.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/racute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/radical.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/rcaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/rcommaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/rdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/rdotbelowmacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/registered.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/rho.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ring.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ringcmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ringhalfleftmod.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ringhalfrightmod.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/rlinebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ruble.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/rupeeindian.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/s.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/sacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/sampi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/scaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/scedilla.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/schwa.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/schwacyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/scircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/scommaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/sdotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/sdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/section.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/servicemark.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/seven.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/seven.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/seveneighths.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/sha.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/shcha.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/shha.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/sigma.end.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/sigma.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/similar.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/six.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/six.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/soft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/soundcopyright.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/squareblack.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/squareshadow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/sterling.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/stigma.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/summation.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/t.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tau.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tbar.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tcaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tcedilla.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tcommaaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tdieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/te.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tenge.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/theta.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/thorn.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/three.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/three.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/threeeighths.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/threeemdash.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/threequarters.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tildecmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tlinebelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/trademark.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/triangleblackdown.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/triangleblackleft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/triangleblackright.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/triangleblackup.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/trianglewhitedown.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/trianglewhiteleft.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/trianglewhiteright.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/trianglewhiteup.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/triangularbullet.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tse.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tshe.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tugrik.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/two.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/two.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/twodotenleader.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/twoemdash.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/twothirds.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/u.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uacutedblcyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ubreve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ucaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ucircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ucyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/udieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/udieresisacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/udieresiscaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/udieresisgrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/udieresismacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/udotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ugrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uhorn.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uhornacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uhorndotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uhorngrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uhornhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uhorntilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uhungarumlaut.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/umacron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/umacroncyr.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uogonek.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/upsilon.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/upsilondieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/upsilondieresistonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/upsilontonos.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uring.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ushort.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ustraight.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ustraightstroke.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/utilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/v.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/verticallinebelowcmb.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/verticallinelowmod.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/verticallinemod.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/w.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/wacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/wcircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/wdieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/wgrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/won.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/x.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/xi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/y.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ya.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/yacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/yat.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ycircumflex.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ydieresis.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ydotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ydotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/yen.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/yeru.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ygrave.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/yhoi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/yi.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ytilde.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/yu.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/z.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zacute.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zcaron.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zdotaccent.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zdotbelow.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ze.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zedescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zero.subs.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zero.sups.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zeta.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zhe.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zhebreve.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zhedescender.glif create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/groups.plist create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/layercontents.plist create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/lib.plist create mode 100644 tests/otfautohint_data/input/dummy/mm0/font2.ufo/metainfo.plist create mode 100644 tests/otfautohint_data/input/dummy/no_metainfo.ufo/dummy create mode 100644 tests/otfautohint_data/input/dummy/nocff.otf create mode 100644 tests/otfautohint_data/input/dummy/nohints.pfa create mode 100644 tests/otfautohint_data/input/dummy/ok_privatedict_hstems.otf create mode 100644 tests/otfautohint_data/input/dummy/ok_privatedict_hstems.ufo/fontinfo.plist create mode 100644 tests/otfautohint_data/input/dummy/ok_privatedict_hstems.ufo/glyphs/A_.glif create mode 100644 tests/otfautohint_data/input/dummy/ok_privatedict_hstems.ufo/glyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/ok_privatedict_hstems.ufo/groups.plist create mode 100644 tests/otfautohint_data/input/dummy/ok_privatedict_hstems.ufo/layercontents.plist create mode 100644 tests/otfautohint_data/input/dummy/ok_privatedict_hstems.ufo/metainfo.plist create mode 100644 tests/otfautohint_data/input/dummy/ok_privatedict_vstems.otf create mode 100644 tests/otfautohint_data/input/dummy/ok_privatedict_vstems.ufo/fontinfo.plist create mode 100644 tests/otfautohint_data/input/dummy/ok_privatedict_vstems.ufo/glyphs/A_.glif create mode 100644 tests/otfautohint_data/input/dummy/ok_privatedict_vstems.ufo/glyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/ok_privatedict_vstems.ufo/groups.plist create mode 100644 tests/otfautohint_data/input/dummy/ok_privatedict_vstems.ufo/layercontents.plist create mode 100644 tests/otfautohint_data/input/dummy/ok_privatedict_vstems.ufo/metainfo.plist create mode 100644 tests/otfautohint_data/input/dummy/seac.otf create mode 100644 tests/otfautohint_data/input/dummy/too_long_glyph_name.ufo/fontinfo.plist create mode 100644 tests/otfautohint_data/input/dummy/too_long_glyph_name.ufo/glyphs/a.glif create mode 100644 tests/otfautohint_data/input/dummy/too_long_glyph_name.ufo/glyphs/contents.plist create mode 100644 tests/otfautohint_data/input/dummy/too_long_glyph_name.ufo/groups.plist create mode 100644 tests/otfautohint_data/input/dummy/too_long_glyph_name.ufo/layercontents.plist create mode 100644 tests/otfautohint_data/input/dummy/too_long_glyph_name.ufo/metainfo.plist create mode 100644 tests/otfautohint_data/input/sparse_masters/MasterSet_Kanji-w0.00.otf create mode 100644 tests/otfautohint_data/input/sparse_masters/MasterSet_Kanji-w439.00.otf create mode 100644 tests/otfautohint_data/input/sparse_masters/MasterSet_Kanji-w599.00.otf create mode 100644 tests/otfautohint_data/input/vf_tests/CJKSparseVar.subset.hinted.otf create mode 100644 tests/otfautohint_data/input/vf_tests/bug816.hinted.otf diff --git a/tests/otfautohint_data/expected_output/dummy/font.otf.a-z,A-Z,zero-nine.hstm.txt b/tests/otfautohint_data/expected_output/dummy/font.otf.a-z,A-Z,zero-nine.hstm.txt new file mode 100644 index 000000000..a3870cc40 --- /dev/null +++ b/tests/otfautohint_data/expected_output/dummy/font.otf.a-z,A-Z,zero-nine.hstm.txt @@ -0,0 +1,17 @@ +Horizontal Stem List for font.otf on Wed Sep 25 12:24:03 2019 +count width glyphs + 12 67 [f g i j l t v z A P R] + 11 70 [w B E F I J T Z] + 8 71 [E I L Z two five seven] + 7 68 [g A D P R one] + 2 108 [N] + 2 96 [M] + 2 85 [V four] + 1 106 [W] + 1 100 [one] + 1 93 [W] + 1 80 [w] + 1 72 [H] + 1 69 [G] + 1 66 [four] + 1 64 [e] diff --git a/tests/otfautohint_data/expected_output/dummy/font.otf.a-z,A-Z,zero-nine.vstm.txt b/tests/otfautohint_data/expected_output/dummy/font.otf.a-z,A-Z,zero-nine.vstm.txt new file mode 100644 index 000000000..962d95391 --- /dev/null +++ b/tests/otfautohint_data/expected_output/dummy/font.otf.a-z,A-Z,zero-nine.vstm.txt @@ -0,0 +1,15 @@ +Vertical Stem List for font.otf on Wed Sep 25 12:24:03 2019 +count width glyphs + 20 82 [a b d h i j k l m n p q r t u L one] + 9 84 [E F H I K T U Y] + 6 83 [u B D J P R] + 4 72 [d n p r] + 3 80 [M N] + 3 70 [b m q] + 2 81 [f U] + 2 78 [M four] + 2 71 [a u] + 1 157 [three] + 1 77 [G] + 1 76 [m] + 1 74 [t] diff --git a/tests/otfautohint_data/expected_output/dummy/font.otf.all.hstm.txt b/tests/otfautohint_data/expected_output/dummy/font.otf.all.hstm.txt new file mode 100644 index 000000000..7fa87cef9 --- /dev/null +++ b/tests/otfautohint_data/expected_output/dummy/font.otf.all.hstm.txt @@ -0,0 +1,40 @@ +Horizontal Stem List for font.otf on Wed Sep 25 12:18:01 2019 +count width glyphs + 19 67 [A P R f g i j l t v z two three dollar] + 18 68 [A D P R a c g l o y one three five nine question] + 14 71 [E I L Q Z h m n u two five seven underscore] + 11 73 [C G J O Q S U] + 11 70 [B E F I J T Z w] + 10 69 [G b d p q six] + 9 62 [five six nine hyphen plus equal asciitilde] + 8 66 [a e ampersand zero four dollar] + 8 47 [bracketleft bracketright braceleft braceright] + 4 169 [period colon semicolon] + 4 64 [Q e s] + 3 65 [e six nine] + 3 55 [g at] + 2 154 [exclam question] + 2 151 [comma semicolon] + 2 128 [i j] + 2 108 [N] + 2 96 [M] + 2 85 [V four] + 2 61 [eight] + 2 60 [g] + 2 58 [at numbersign] + 2 52 [braceleft braceright] + 2 50 [percent] + 2 49 [percent] + 1 212 [dollar] + 1 198 [dollar] + 1 133 [zero] + 1 106 [W] + 1 100 [one] + 1 93 [W] + 1 80 [w] + 1 77 [asciicircum] + 1 74 [r] + 1 72 [H] + 1 63 [three] + 1 59 [ampersand] + 1 57 [numbersign] diff --git a/tests/otfautohint_data/expected_output/dummy/font.otf.all.vstm.txt b/tests/otfautohint_data/expected_output/dummy/font.otf.all.vstm.txt new file mode 100644 index 000000000..3717a7c87 --- /dev/null +++ b/tests/otfautohint_data/expected_output/dummy/font.otf.all.vstm.txt @@ -0,0 +1,37 @@ +Vertical Stem List for /tmp/pytest-of-skef/pytest-0/popen-gw9/test_stemhist_report_stems_all0/font.otf on Sun Nov 28 13:49:47 2021 +count width glyphs + 22 82 [B L a b d h i j k l m n p q r t u one] + 12 83 [B D J P R e s u three five] + 11 84 [E F H I K P T U Y three] + 9 85 [S b c d o p q] + 7 86 [C D O Q seven] + 7 66 [M exclam bracketleft bracketright braceright at plus] + 6 80 [M N a ampersand dollar] + 6 72 [d n p r less greater] + 5 81 [U f g question dollar] + 5 78 [M four six nine] + 5 71 [a g u ampersand eight] + 4 77 [G zero six] + 4 74 [t parenleft parenright bar] + 4 70 [b m q braceleft] + 4 61 [percent] + 3 162 [period colon semicolon] + 3 108 [quotesingle quotedbl] + 3 79 [g two eight] + 3 75 [e eight] + 2 146 [exclam question] + 2 132 [i j] + 2 121 [braceleft braceright] + 2 76 [g m] + 2 73 [comma semicolon] + 2 69 [g braceright] + 2 67 [ampersand braceleft] + 1 157 [three] + 1 124 [zero] + 1 87 [G] + 1 64 [at] + 1 63 [at] + 1 60 [dollar] + 1 58 [at] + 1 57 [asterisk] + 1 54 [at] diff --git a/tests/otfautohint_data/expected_output/dummy/font.otf.bot.txt b/tests/otfautohint_data/expected_output/dummy/font.otf.bot.txt new file mode 100644 index 000000000..51c68a1ea --- /dev/null +++ b/tests/otfautohint_data/expected_output/dummy/font.otf.bot.txt @@ -0,0 +1,79 @@ +Bottom Zone List for /tmp/pytest-of-skef/pytest-63/test_stemhist_report_zones_0/font.otf on Fri Apr 1 06:06:46 2022 +count height glyphs + 2 -224 [g] + 2 -217 [j] + 2 -213 [comma semicolon] + 2 -209 [y] + 2 -205 [p q] + 2 -163 [Q] + 8 -152 [bracketleft bracketright braceleft braceright] + 2 -144 [at] + 1 -140 [underscore] + 56 -12 [C G J O S U a b c d e l o p q s t u ampersand zero three five six eight nine period colon exclam question percent] + 1 -8 [g] + 1 -7 [Q] + 49 0 [A B D E F H I K L M N P R T V W X Y Z f h i k m n r v w x z one two four seven numbersign] + 2 4 [comma semicolon] + 2 35 [dollar] + 1 88 [at] + 1 154 [g] + 1 174 [M] + 1 176 [four] + 2 192 [equal] + 1 200 [A] + 1 204 [numbersign] + 1 220 [e] + 1 248 [nine] + 2 252 [braceleft braceright] + 2 257 [asciitilde] + 1 260 [P] + 1 261 [zero] + 1 268 [percent] + 1 271 [G] + 1 277 [R] + 1 294 [F] + 2 299 [hyphen plus] + 1 300 [three] + 2 309 [E H] + 1 310 [B] + 1 321 [percent] + 1 328 [six] + 1 341 [asciitilde] + 1 342 [five] + 2 346 [colon semicolon] + 1 376 [w] + 1 382 [W] + 1 406 [equal] + 1 409 [numbersign] + 6 419 [f g i j t z] + 1 424 [r] + 3 427 [h m n] + 4 429 [b d p q] + 3 430 [a c o] + 1 433 [e] + 1 434 [s] + 1 438 [g] + 1 538 [one] + 1 548 [N] + 1 550 [dollar] + 1 553 [four] + 1 560 [M] + 2 567 [five seven] + 1 580 [at] + 1 581 [six] + 2 583 [two three] + 1 584 [zero] + 1 585 [nine] + 5 586 [B E F I T] + 2 587 [J Z] + 4 588 [A D i j] + 3 589 [P R eight] + 1 593 [asciicircum] + 5 595 [C G O Q S] + 1 601 [percent] + 1 609 [ampersand] + 1 614 [question] + 1 645 [l] + 1 657 [f] + 4 661 [bracketleft bracketright braceleft braceright] + 1 701 [grave] diff --git a/tests/otfautohint_data/expected_output/dummy/font.otf.hstm.txt b/tests/otfautohint_data/expected_output/dummy/font.otf.hstm.txt new file mode 100644 index 000000000..9787e725a --- /dev/null +++ b/tests/otfautohint_data/expected_output/dummy/font.otf.hstm.txt @@ -0,0 +1,22 @@ +Horizontal Stem List for /tmp/pytest-of-skef/pytest-64/test_stemhist_report_stems_0/font.otf on Fri Apr 1 06:07:18 2022 +count width glyphs + 12 67 [A P R f g i j l t v z] + 11 70 [B E F I J T Z w] + 9 71 [E I L Z two five seven underscore] + 8 47 [bracketleft bracketright braceleft braceright] + 7 68 [A D P R g one] + 4 62 [hyphen plus equal] + 2 108 [N] + 2 96 [M] + 2 85 [V four] + 1 106 [W] + 1 100 [one] + 1 93 [W] + 1 80 [w] + 1 77 [asciicircum] + 1 72 [H] + 1 69 [G] + 1 66 [four] + 1 64 [e] + 1 58 [numbersign] + 1 57 [numbersign] diff --git a/tests/otfautohint_data/expected_output/dummy/font.otf.top.txt b/tests/otfautohint_data/expected_output/dummy/font.otf.top.txt new file mode 100644 index 000000000..36af2baa5 --- /dev/null +++ b/tests/otfautohint_data/expected_output/dummy/font.otf.top.txt @@ -0,0 +1,77 @@ +Top Zone List for /tmp/pytest-of-skef/pytest-62/test_stemhist_report_zones_0/font.otf on Fri Apr 1 06:06:12 2022 +count height glyphs + 2 724 [f] + 1 721 [grave] + 4 716 [i j] + 6 712 [b d h k l] + 8 708 [bracketleft bracketright braceleft braceright] + 2 682 [question] + 1 670 [asciicircum] + 12 668 [C G O Q S ampersand] + 5 657 [J W Z] + 29 656 [A B D E F H I K L M N P R T U V X Y] + 15 650 [zero two three six eight nine numbersign percent] + 8 638 [one four five seven] + 2 635 [at] + 2 617 [dollar] + 4 515 [colon semicolon] + 25 498 [a b c d e g h m n o p q r s] + 1 488 [W] + 13 486 [f g i j t u v w x y z] + 2 468 [equal] + 1 467 [numbersign] + 1 456 [w] + 1 404 [five] + 2 403 [asciitilde] + 1 394 [zero] + 1 390 [six] + 1 381 [H] + 2 380 [B E] + 1 371 [percent] + 1 364 [F] + 1 363 [three] + 2 361 [hyphen plus] + 1 345 [R] + 1 340 [G] + 1 328 [P] + 1 319 [asciitilde] + 1 317 [percent] + 1 310 [nine] + 2 304 [braceleft braceright] + 1 284 [e] + 1 270 [M] + 1 267 [A] + 1 261 [numbersign] + 1 254 [equal] + 1 242 [four] + 1 209 [g] + 2 157 [period colon] + 3 155 [comma semicolon] + 1 146 [at] + 2 142 [exclam question] + 1 108 [N] + 1 102 [dollar] + 1 93 [W] + 1 85 [V] + 5 71 [E I L Z two] + 2 70 [B w] + 2 68 [D one] + 2 67 [v z] + 6 61 [C G J O S U] + 1 60 [g] + 1 59 [u] + 5 57 [Q b d p q] + 6 56 [c l o three five nine] + 1 55 [t] + 4 54 [a e ampersand zero] + 1 53 [six] + 1 52 [s] + 1 49 [eight] + 1 38 [percent] + 1 -69 [underscore] + 1 -89 [at] + 1 -92 [Q] + 4 -105 [bracketleft bracketright braceleft braceright] + 1 -141 [y] + 1 -150 [j] + 1 -164 [g] diff --git a/tests/otfautohint_data/expected_output/dummy/font.otf.vstm.txt b/tests/otfautohint_data/expected_output/dummy/font.otf.vstm.txt new file mode 100644 index 000000000..a9ff4b30a --- /dev/null +++ b/tests/otfautohint_data/expected_output/dummy/font.otf.vstm.txt @@ -0,0 +1,22 @@ +Vertical Stem List for font.otf on Wed Sep 25 12:22:42 2019 +count width glyphs + 20 82 [L a b d h i j k l m n p q r t u one] + 9 84 [E F H I K T U Y] + 6 83 [B D J P R u] + 6 72 [d n p r less greater] + 4 66 [exclam bracketleft bracketright plus] + 3 108 [quotesingle quotedbl] + 3 80 [M N] + 3 70 [b m q] + 2 121 [braceleft braceright] + 2 81 [U f] + 2 78 [M four] + 2 74 [t bar] + 2 71 [a u] + 1 157 [three] + 1 77 [G] + 1 76 [m] + 1 64 [at] + 1 60 [dollar] + 1 57 [asterisk] + 1 54 [at] diff --git a/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/data/com.adobe.type.processedHashMap b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/data/com.adobe.type.processedHashMap new file mode 100644 index 000000000..e377a0ba8 --- /dev/null +++ b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/data/com.adobe.type.processedHashMap @@ -0,0 +1,6 @@ +{ +'a': ['w500l00l1400l140140l0140', ['autohint']], +'after': ['w500l2000l3400l340140l200140', ['autohint']], +'before': ['w500l0200l140200l140340l0340', ['autohint']], +'hashMapVersion': (1, 0), +} diff --git a/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/fontinfo.plist b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/fontinfo.plist new file mode 100644 index 000000000..cf6ade99a --- /dev/null +++ b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/fontinfo.plist @@ -0,0 +1,39 @@ + + + + + ascender + 750 + capHeight + 750 + descender + -250 + guidelines + + postscriptBlueValues + + -10 + 0 + 490 + 500 + + postscriptFamilyBlues + + postscriptFamilyOtherBlues + + postscriptOtherBlues + + postscriptStemSnapH + + 100 + + postscriptStemSnapV + + 100 + + unitsPerEm + 1000 + xHeight + 500 + + diff --git a/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/glyphs/a.glif b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/glyphs/a.glif new file mode 100644 index 000000000..04be506b6 --- /dev/null +++ b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/glyphs/a.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 140 + vstem 0 140 + + + + id + w500l00l1400l140140l0140 + + + + diff --git a/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/glyphs/after.glif b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/glyphs/after.glif new file mode 100644 index 000000000..30bd550be --- /dev/null +++ b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/glyphs/after.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 140 + vstem 200 140 + + + + id + w500l2000l3400l340140l200140 + + + + diff --git a/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/glyphs/before.glif b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/glyphs/before.glif new file mode 100644 index 000000000..9892229cd --- /dev/null +++ b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/glyphs/before.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 200 140 + vstem 0 140 + + + + id + w500l0200l140200l140340l0340 + + + + diff --git a/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/glyphs/contents.plist b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/glyphs/contents.plist new file mode 100644 index 000000000..e631fba45 --- /dev/null +++ b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/glyphs/contents.plist @@ -0,0 +1,12 @@ + + + + + a + a.glif + after + after.glif + before + before.glif + + diff --git a/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/layercontents.plist b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/layercontents.plist new file mode 100644 index 000000000..047e1521a --- /dev/null +++ b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/layercontents.plist @@ -0,0 +1,10 @@ + + + + + + foreground + glyphs + + + diff --git a/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/lib.plist b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/lib.plist new file mode 100644 index 000000000..e1b835072 --- /dev/null +++ b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/lib.plist @@ -0,0 +1,12 @@ + + + + + public.glyphOrder + + a + before + after + + + diff --git a/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/metainfo.plist b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/metainfo.plist new file mode 100644 index 000000000..7b8b34ac6 --- /dev/null +++ b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_hinted.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + com.github.fonttools.ufoLib + formatVersion + 3 + + diff --git a/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/data/com.adobe.type.processedHashMap b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/data/com.adobe.type.processedHashMap new file mode 100644 index 000000000..e377a0ba8 --- /dev/null +++ b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/data/com.adobe.type.processedHashMap @@ -0,0 +1,6 @@ +{ +'a': ['w500l00l1400l140140l0140', ['autohint']], +'after': ['w500l2000l3400l340140l200140', ['autohint']], +'before': ['w500l0200l140200l140340l0340', ['autohint']], +'hashMapVersion': (1, 0), +} diff --git a/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/fontinfo.plist b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/fontinfo.plist new file mode 100644 index 000000000..cf6ade99a --- /dev/null +++ b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/fontinfo.plist @@ -0,0 +1,39 @@ + + + + + ascender + 750 + capHeight + 750 + descender + -250 + guidelines + + postscriptBlueValues + + -10 + 0 + 490 + 500 + + postscriptFamilyBlues + + postscriptFamilyOtherBlues + + postscriptOtherBlues + + postscriptStemSnapH + + 100 + + postscriptStemSnapV + + 100 + + unitsPerEm + 1000 + xHeight + 500 + + diff --git a/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/glyphs/a.glif b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/glyphs/a.glif new file mode 100644 index 000000000..04be506b6 --- /dev/null +++ b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/glyphs/a.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 140 + vstem 0 140 + + + + id + w500l00l1400l140140l0140 + + + + diff --git a/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/glyphs/after.glif b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/glyphs/after.glif new file mode 100644 index 000000000..30bd550be --- /dev/null +++ b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/glyphs/after.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 140 + vstem 200 140 + + + + id + w500l2000l3400l340140l200140 + + + + diff --git a/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/glyphs/before.glif b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/glyphs/before.glif new file mode 100644 index 000000000..9892229cd --- /dev/null +++ b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/glyphs/before.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 200 140 + vstem 0 140 + + + + id + w500l0200l140200l140340l0340 + + + + diff --git a/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/glyphs/contents.plist b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/glyphs/contents.plist new file mode 100644 index 000000000..e631fba45 --- /dev/null +++ b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/glyphs/contents.plist @@ -0,0 +1,12 @@ + + + + + a + a.glif + after + after.glif + before + before.glif + + diff --git a/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/layercontents.plist b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/layercontents.plist new file mode 100644 index 000000000..047e1521a --- /dev/null +++ b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/layercontents.plist @@ -0,0 +1,10 @@ + + + + + + foreground + glyphs + + + diff --git a/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/lib.plist b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/lib.plist new file mode 100644 index 000000000..e1b835072 --- /dev/null +++ b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/lib.plist @@ -0,0 +1,12 @@ + + + + + public.glyphOrder + + a + before + after + + + diff --git a/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/metainfo.plist b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/metainfo.plist new file mode 100644 index 000000000..7b8b34ac6 --- /dev/null +++ b/tests/otfautohint_data/expected_output/dummy/hashmap_dflt_layer_rehinted.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + com.github.fonttools.ufoLib + formatVersion + 3 + + diff --git a/tests/otfautohint_data/expected_output/dummy/print_dflt_fddict_expected.txt b/tests/otfautohint_data/expected_output/dummy/print_dflt_fddict_expected.txt new file mode 100644 index 000000000..cdd6f5e7e --- /dev/null +++ b/tests/otfautohint_data/expected_output/dummy/print_dflt_fddict_expected.txt @@ -0,0 +1,23 @@ +Showing default FDDict Values: + FontName SourceCodePro-Regular + OrigEmSqUnits 1000 + LanguageGroup 0 + DominantV [86] + DominantH [68] + FlexOK true + VCounterChars ( m M T ) + BlueFuzz 0 + BaselineOvershoot -12 + BaselineYCoord 0 + CapHeight 486 + CapOvershoot 12 + LcHeight 574 + LcOvershoot 12 + AscenderHeight 638 + AscenderOvershoot 12 + FigHeight 656 + FigOvershoot 12 + Height5 712 + Height5Overshoot 12 + Baseline5Overshoot -12 + Baseline5 -205 diff --git a/tests/otfautohint_data/expected_output/sparse_masters/MasterSet_Kanji-w0.00.otf b/tests/otfautohint_data/expected_output/sparse_masters/MasterSet_Kanji-w0.00.otf new file mode 100644 index 0000000000000000000000000000000000000000..6e37828c5487290779683d2908938e9439342c68 GIT binary patch literal 6232 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 literal 0 HcmV?d00001 diff --git a/tests/otfautohint_data/expected_output/sparse_masters/MasterSet_Kanji-w439.00.otf b/tests/otfautohint_data/expected_output/sparse_masters/MasterSet_Kanji-w439.00.otf new file mode 100644 index 0000000000000000000000000000000000000000..962d6a90a29824fa06518b9f7acb4bb74d53987f GIT binary patch literal 2552 zcmb7G4Nz3q6+Um@UcBIHg!PS7g}gGTnN)Bgi9aPOZ1_=uf}j+s6Z2%B?DDeUw)2W#>nfu@^q36COX_}6m z>D{^aobQ}-&pG$pyZ7Cab?ZuC8f*g@N}tHjS3e$G^gMw5ApjC8C|~c+Z7FI7h&>Dd zYDxK`%$o;eR{==bh@Yw`DJzhhkb~G?<3Ot$w8n$~czF$g+>1Eu)iuxTKiv{@N3bvU zqJV~NmvH_}#HrqfaI2j_7tVhRF>TOV8$m8bR$7Wfj9+WeQ~Am%h>u|ZtT7M@Pn>~F z%#Wg8Z9#wJPW&^q{y1Q$G+&Iw#m+U>#a@7Vu5_+k_W*||mxKp4Cok;dr zl(b`y@)D#Xit;v?4*iq747qS}lDB`&hCl~=GAWONbg3SmfB-Z?8w9}zHQ;0iE04mm4CjQf2cZQ= zVOb8VuxsE)`5G)_1>~dM)9@%f0?SbE!k?H`1I_49!+~mhN&1UA8gDnER3=*+`O%WSjAzY^e4D(=n!v z*-4W7^^5(}lWU>G@n8}_Re~eMD1E?K@0f>(%y*<3PsIbp5V#}<+>(V`HIH-B_1}#{p27+G) zTmDBp)#q2yle*sT!{};x7?TL8n%}bseFUr+)q!SzIOx+u=_%0?s#rtSs-Zer!*9y- zS}~U*v55N=J*`0Z>p@@j{nVCs+{@X=SGgu{H%aWYEb3fk%a%)xB-3$jEb*Ll@7!qV zIr*OHP)1KN!p1ttI8q}uvPm)DHPXoF3`We?A{7c3h>ic2jJq~R0e?4=hG_I2LgY*_ zOdspWzx>AwZ=An+e(&|dH+byu@aa=;ujQ!;e9C*Z?{m0Xd2Mi{|2>}a=Ql4o8xL*c z&+t=M9kc z5xyGHX=3tBg>59xm^?5NQ8G--&aG&jL|FHWJ==HCF4n|+J85snftKCv^b8whuk_NR zy?grD&(L`?F;`Y8t)AK%kDnfV?&#KiU3BQg(D2c-l&js!PeKE=eIYu0jC3ArIN5lF z{*Hg7IO+E6!{$jo*9`CsM*qMD2KVzg+WJzkul*2x;k#W8O^iBwa=?Ta%{X4%$$KbY zVdf}h<}`JIIkku$+IBp&{~5}sUgLyIm-!rO=JM|-=ePd8>D3nci(%qDQh01bAB|Lw zcPr&#a>ty;ztzl}8ReT9xx&cq{{4gdUZ#~hOb@GJ)GT9WV&Ce&(kCw{!HgB93%vA) z&z=Yz=%k;X`OEb|Zl}1*D{dO(ozLDG;EC=VZvJorUwHe?+jZ~rx{;4=x7~EcX1_JM zPhoB{HVw;ogE$F{FSw;RV}Y4EamK@KhO%tNb;1uaEJC&=pOHO+@((`{^2l$@E-ZZw z!EBy23rw3illFJL8amWT`4m2P|=eSjSA`pUQnS);k1m`?-(|Qf_|HI(*THZvlv#-fH+o j5HA;erFih2f>tx|mGlMP_|bQcHHxpsznf&qR7m+3++g*O literal 0 HcmV?d00001 diff --git a/tests/otfautohint_data/expected_output/sparse_masters/MasterSet_Kanji-w599.00.otf b/tests/otfautohint_data/expected_output/sparse_masters/MasterSet_Kanji-w599.00.otf new file mode 100644 index 0000000000000000000000000000000000000000..b0598d484ad2b288435d01f0aa9bd4ba0289ce08 GIT binary patch literal 2624 zcmb7G4Nz3q6+Um@UV6n1LDn~QG~&||Cuw9|pn^z9_!C7i%K$P84P;?oU=emVyUU8g zB!o?tO2cqpHdQcR)9YP+nMEEWeTe+amzxdjQC9HdJmYC<>Le1I)Vu z0J5WUb^6iAC*uKxJhUIFc2sN-A43h|%{b7;HmC2Y@asnb#OKitHY-lol2FYbQNM&e zvl#)}WO^6l7owfg+!pK*{|+4(Z$X>3IXiqHmZK`H#Uak)Y*SKZA4Fea0Q*0D-av5n z*N~3RjZCq**oYp;Q$#})M_?KVm`!_3ThT6! zNudsT@~Rn5T=K?g|GVWE6|BcB7g`pJzS%IGH;08>*#xifd7;asp^%MrzXLUxL@>`o zWEb|BEv6F^9*2O=yKe@PZF^f*;(_1kDh{^^Rdr z2Ro#}TGaBvg+2|SpdLWa0QxADT?PVgYU2@6>b#pt&K)<8D?Y`DJNh-!j%%;&_&v^g{#a*$OK6u^4aHsf53lOOXb z$fF)gjl3<$AoW`rs|^kToblqy@_*!PMl1-8#!TqeoDF^K$S4Q*?1b$Y&%GW+*@2x` z%7&b6kclJbo{3lyGONa31`gcWX4D>ns{fNIUO(fU@fktM^)h~PC{s}4^M|$>@EL_T zlmeLeEt;K;-KN>uUu5i`GQ80N_>%>OFPC`3%P+(__h?xh>xlEajBWN!{(Sv+6YzqA zAP9>#I|D(*U#SG^OP!t;cj}Hc+1WO`ozLZIOSHS5vm|Rv1ufa6EfY1_ykECWH%*(# z(t@|%dpRMw1ss-TO95(!-8fX^W+#0hr`1^F&- zgR;r#b9&O!va_>N)9v=GRdTvLEnPOI#y{Zck&gS9S+v#f>j1zwDI#N|T%KOL56Tztg3(IsMyZum79I zqyJ+)+3k@rlf1>_#?|G@Ad(2kPLFFf=I|P8GPM`Std2!aNlbs9u-wC; zPZ&MKK4ga&Ji`W`?(S)4w2L{|6O4MdigYYcsS!s@o^gcRU|C^P+#?c{{75*Y5!wGmHPtpOVx5!E&IJ%MD=|A zNr}y5kZZV3ECW*DCTrW{w61$m8K0{SWDwvVyMW8_n`)G;hr;_tK*l9l3dEhkf0DRUxIm*Y{&dZAv6uE)q2cRfa|1ATwy z2XqTilcMvbI(J^(Ha~sCK~5j}@WiQM8huq0`FffI!|ub9qd@B@Ptr&9UfdDWhY8Dh zDKN_DL3W1qGirUU=Nub&ZJ$bL@HzL3oj;-BHM<}0V6>YxupUNtu<)~N2+!~YiN@(? zr30Dd;(@FESNdu1C2~*aeVrS6s3X#gnJ*Hiujtjc7V1mrz>_C@{hjm^b>)j{h^aP= zzep0mBnX!8YRfGvhxp4eoTRO=tQ_R(V3Pi0#+70g$1L;v;``?JSr$xpE!4h}ZZpGQ z<@}!`9`1r<5Q>V+s_-*}|EB=|$1obs^DiL$+Hs-ZLJ$)1YwITdbHu)vjFIQ~x(NpM HJy`ZHeuWc? literal 0 HcmV?d00001 diff --git a/tests/otfautohint_data/input/CID/font.otf b/tests/otfautohint_data/input/CID/font.otf new file mode 100644 index 0000000000000000000000000000000000000000..fd7e260ee678e1038bb186360c93fd53465606dc GIT binary patch literal 234920 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
  • 6N}dcCA>)x194lJ*%d^Qu=!o`d6{+t9u1^ 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 literal 0 HcmV?d00001 diff --git a/tests/otfautohint_data/input/dummy/bad_font.ps b/tests/otfautohint_data/input/dummy/bad_font.ps new file mode 100644 index 0000000000000000000000000000000000000000..3f77c8fb5d83c2304cc06fb9f17b0debf4ec3592 GIT binary patch literal 219047 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�>wATS^YKwx04%?0aqGGpjidEqjM~ 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

    cy2`jb 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 literal 0 HcmV?d00001 diff --git a/tests/otfautohint_data/input/dummy/bad_privatedict_bluevalues.otf b/tests/otfautohint_data/input/dummy/bad_privatedict_bluevalues.otf new file mode 100644 index 0000000000000000000000000000000000000000..08450cb5e0f34d6a1c32af1ecd354daa89c58cdd GIT binary patch literal 1616 zcma)6UuauZ82_DnliPo>b<&RMYB`LEQ`WT2)-tS{OPjThm8CS@C|cZZliMaV$&EL+ zT`Qt<;ENroOvnVGb#FS+Cv^{^zD~yWut^nssQ9vnq9RBl0psu7q<`>1yoYnn_viQh z&i9@3abuH{F$8c4I!+9ajL0XZfBX#aO#KLKbT9goGMi(?Daf2S@- z<7bDic3j>I7!Ok)h{b!tFX~?$VQeq;3yG|m$9}O1==YVLvdm=QjVqTZ-{u@h(O`r{ zns^`eU@Ge_X-haxzUQeMS#v25ZJeSwsPvqfwPNRHuTg&o(1!AM!L8oJVdl#-AtAVG z4WC{+y>je)+p~W{*B{V=d#~L(qxSWyOYKBKJE}3B6|*w$W1RlO-@nl_MZeUJdQ5fa z7J_*wysl00bU&51hz3sAcJUIzLekpeZ_<6brm2clKHFa;IuyeRL=e$_ts3e?vF8HB zsse}&?LBUiIROoLfxGZEQC9a>lLfk{)npB=_@gfC7*pwcc;7CJAC4HS+YLM|zQ!ZoDLSbDz*`_=e!)xkReN}l>3;CjRm3- zu;il%?baEiDoiRQ#)+{#);Z!cWN=t(h?O4Z9At%23?W8o7vpw(ExP+(@wKQJ<4)q7 zmurFft1Q($?r@KjQ}R}oWsud`tU}#bjOiNr);c*tSxwcE<%xXSvJD-40gAihG++J`J*07zl#vQwR!kSyin2z!sDDOwPQaDTJbU~WZb{BO$B_wpA?G@2s}LHt^UF?pF6GK_ zZ(r{rwTAzLJ0v5SjGRyb1vz0AEN9V5hU!VGS|y8BmvI1^5ZY*Kd2?;CG<~P^{ataR z{E1$AwXAnszrS{GZN2erWA(WYhp!KP{N%pMlu + + + + ascender + 750 + capHeight + 750 + copyright + Copyright 2010, 2012 Adobe Systems Incorporated. All Rights Reserved. + descender + -250 + familyName + Source Code Pro + postscriptBlueFuzz + 0 + postscriptBlueScale + 0.0625 + postscriptBlueValues + + -12 + 0 + 486 + + postscriptFamilyBlues + + -12 + 0 + 486 + 498 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyOtherBlues + + -217 + -205 + + postscriptFontName + SourceCodePro-Regular + postscriptForceBold + + postscriptIsFixedPitch + + postscriptOtherBlues + + -217 + -205 + + postscriptStemSnapH + + 67 + + postscriptStemSnapV + + 85 + + postscriptUnderlinePosition + -100 + postscriptUnderlineThickness + 50 + styleName + Regular + trademark + Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + unitsPerEm + 1000 + versionMajor + 1 + versionMinor + 0 + xHeight + 500 + + diff --git a/tests/otfautohint_data/input/dummy/bad_privatedict_bluevalues.ufo/glyphs/A_.glif b/tests/otfautohint_data/input/dummy/bad_privatedict_bluevalues.ufo/glyphs/A_.glif new file mode 100644 index 000000000..131a04666 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/bad_privatedict_bluevalues.ufo/glyphs/A_.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/bad_privatedict_bluevalues.ufo/glyphs/contents.plist b/tests/otfautohint_data/input/dummy/bad_privatedict_bluevalues.ufo/glyphs/contents.plist new file mode 100644 index 000000000..156be5a7a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/bad_privatedict_bluevalues.ufo/glyphs/contents.plist @@ -0,0 +1,8 @@ + + + + + A + A_.glif + + diff --git a/tests/otfautohint_data/input/dummy/bad_privatedict_bluevalues.ufo/groups.plist b/tests/otfautohint_data/input/dummy/bad_privatedict_bluevalues.ufo/groups.plist new file mode 100644 index 000000000..c96917c95 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/bad_privatedict_bluevalues.ufo/groups.plist @@ -0,0 +1,122 @@ + + + + + COMBINING_MARKS + + gravecmb + gravecmb.cap + variacmb + acutecmb + acutecmb.cap + tonoscmb + circumflexcmb + circumflexcmb.cap + tildecmb + tildecmb.cap + macroncmb + macroncmb.cap + overlinecmb + overlinecmb.cap + brevecmb + brevecmb.cyr + brevecmb.cap + brevecmb.cyrcap + dotaccentcmb + dotaccentcmb.cap + dieresiscmb + dieresiscmb.cap + hoicmb + hoicmb.cap + candrabinducmb + candrabinducmb.cap + ringcmb + ringcmb.cap + hungarumlautcmb + hungarumlautcmb.cap + caroncmb + caroncmb.cap + dblgravecmb + dblgravecmb.cap + breveinvertedcmb + breveinvertedcmb.cap + commaturnedabovecmb + aspercmb + commaabovecmb + leniscmb + lefttackbelowcmb + righttackbelowcmb + leftangleabovecmb + horncmb + ringhalfleftbelowcmb + uptackbelowcmb + downtackbelowcmb + plusbelowcmb + minusbelowcmb + dotbelowcmb + dieresisbelowcmb + ringbelowcmb + commabelowcmb + commabelowcmb.a + cedillacmb + cedillacmb.cap + ogonekcmb + ogonekcmb.cap + verticallinebelowcmb + bridgebelowcmb + caronbelowcmb + brevebelowcmb + breveinvertedbelowcmb + tildebelowcmb + macronbelowcmb + tildeoverlaycmb + ringhalfrightbelowcmb + bridgeinvertedbelowcmb + squarebelowcmb + seagullbelowcmb + xabovecmb + perispomenicmb + perispomenicmb.cap + iotasubscriptcmb + dieresisacutecmb + dieresisacutecmb.cap + dieresistonoscmb + dieresisgravecmb + dieresisgravecmb.cap + dialytikagravecmb + dieresistildecmb + dieresismacroncmb + dieresismacroncmb.cap + dieresiscaroncmb + dieresiscaroncmb.cap + circumflexacutecmb + circumflexacutecmb.cap + circumflexgravecmb + circumflexgravecmb.cap + circumflexhoicmb + circumflexhoicmb.cap + circumflextildecmb + circumflextildecmb.cap + breveacutecmb + breveacutecmb.cap + brevegravecmb + brevegravecmb.cap + brevehoicmb + brevehoicmb.cap + brevetildecmb + brevetildecmb.cap + circumflexbrevecmb + circumflexbrevecmb.cap + macronacutecmb + macronacutecmb.cap + carondotaccentcmb + carondotaccentcmb.cap + asperacutecmb + aspergravecmb + aspertildecmb + lenisacutecmb + lenisgravecmb + lenistildecmb + + + diff --git a/tests/otfautohint_data/input/dummy/bad_privatedict_bluevalues.ufo/layercontents.plist b/tests/otfautohint_data/input/dummy/bad_privatedict_bluevalues.ufo/layercontents.plist new file mode 100644 index 000000000..b9c1a4f27 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/bad_privatedict_bluevalues.ufo/layercontents.plist @@ -0,0 +1,10 @@ + + + + + + public.default + glyphs + + + diff --git a/tests/otfautohint_data/input/dummy/bad_privatedict_bluevalues.ufo/metainfo.plist b/tests/otfautohint_data/input/dummy/bad_privatedict_bluevalues.ufo/metainfo.plist new file mode 100644 index 000000000..cf19a1b7c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/bad_privatedict_bluevalues.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + com.github.fonttools.ufoLib + formatVersion + 3 + + diff --git a/tests/otfautohint_data/input/dummy/bad_privatedict_hstems.otf b/tests/otfautohint_data/input/dummy/bad_privatedict_hstems.otf new file mode 100644 index 0000000000000000000000000000000000000000..3d8a8118ea90d5011a6a56d2d4e0a370ef9a6fae GIT binary patch literal 1620 zcma)6U1%It6#nka?j&i}gi2DXjp0%Pt~G{YX<_8fOvB>c6tP@(173ufVR=`cp|nqwm|)N>T)!3 zZfK?b@;<<5qkcS|=!v|be|e0tz0@xzvt}L##3rCWP3td1&Jl#bKrA%&Z+hKl=gocL8lE?-ac1O&n#uJQEUvtJd)O z%D~3Y7h0eG1G@f@7TkaJ&RMmuuUxxF6toi><5@8)^FPMv-~aV1JyY~c?S#)%cWxn= zhr;XH6i*LQd5dV^x!NvXL_|nhn}bbyK-V-?k;-TLi^hiHIE5&p+Amc@ohbHRgjiJo zv7x=sO)@8-0nc+6fhNl8-fFTyC$*Zap#{IyWgTNGeIFm#g$cqHV|BZMr^HtnhJ!qo z;UbMWq~P(q2zt@Sd1PCTP>RALb_O=(1S1N>+Q@R3ID;IL^t$9ytLghJdJg-X9_<6@ z;ke|FFcDj9VLviU-;@4{mzasiD2WO37dTxka#d_2WY76Io+U$;Rw?&08wU$SC1K0Q z5Zb7x3-TYLyz->g{^hhNuG_{#xtgC}lN;&rG5E z1v9Jpxb1ub0S!WkeF)_uUn$@H zvnyEou=RH7;iILG_97re!20B7U%0o%BGUzFO3yVdJ8Qc0(wUV}%bBrdV!7bi*@8Ti zOFC}eaZS&*WI89klr7KY(n?EsG%`GA^*F9{=y7GzS;%>A+Af5Lo&2(!o=bT$(%aX2 zM6Hqk;10`ZCL0S;t#Ca_RjXvN>M{;O6G9tpDQ~VVmZtBOzWY{OFMp<& zUMcJCS0Ak1Ut4c{$5?&#Vk2XdX!QF9eh+NL?BUxUL%{bxo?Lb_=$dowd30q=FUP)89kvsp6!rH!sk-WK DwDd~G literal 0 HcmV?d00001 diff --git a/tests/otfautohint_data/input/dummy/bad_privatedict_hstems.ufo/fontinfo.plist b/tests/otfautohint_data/input/dummy/bad_privatedict_hstems.ufo/fontinfo.plist new file mode 100644 index 000000000..c6c2ba69a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/bad_privatedict_hstems.ufo/fontinfo.plist @@ -0,0 +1,86 @@ + + + + + ascender + 750 + capHeight + 750 + copyright + Copyright 2010, 2012 Adobe Systems Incorporated. All Rights Reserved. + descender + -250 + familyName + Source Code Pro + postscriptBlueFuzz + 0 + postscriptBlueScale + 0.0625 + postscriptBlueValues + + -12 + 0 + 486 + 498 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyBlues + + -12 + 0 + 486 + 498 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyOtherBlues + + -217 + -205 + + postscriptFontName + SourceCodePro-Regular + postscriptForceBold + + postscriptIsFixedPitch + + postscriptOtherBlues + + -217 + -205 + + postscriptStemSnapV + + 85 + + postscriptUnderlinePosition + -100 + postscriptUnderlineThickness + 50 + styleName + Regular + trademark + Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + unitsPerEm + 1000 + versionMajor + 1 + versionMinor + 0 + xHeight + 500 + + diff --git a/tests/otfautohint_data/input/dummy/bad_privatedict_hstems.ufo/glyphs/A_.glif b/tests/otfautohint_data/input/dummy/bad_privatedict_hstems.ufo/glyphs/A_.glif new file mode 100644 index 000000000..131a04666 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/bad_privatedict_hstems.ufo/glyphs/A_.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/bad_privatedict_hstems.ufo/glyphs/contents.plist b/tests/otfautohint_data/input/dummy/bad_privatedict_hstems.ufo/glyphs/contents.plist new file mode 100644 index 000000000..156be5a7a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/bad_privatedict_hstems.ufo/glyphs/contents.plist @@ -0,0 +1,8 @@ + + + + + A + A_.glif + + diff --git a/tests/otfautohint_data/input/dummy/bad_privatedict_hstems.ufo/groups.plist b/tests/otfautohint_data/input/dummy/bad_privatedict_hstems.ufo/groups.plist new file mode 100644 index 000000000..c96917c95 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/bad_privatedict_hstems.ufo/groups.plist @@ -0,0 +1,122 @@ + + + + + COMBINING_MARKS + + gravecmb + gravecmb.cap + variacmb + acutecmb + acutecmb.cap + tonoscmb + circumflexcmb + circumflexcmb.cap + tildecmb + tildecmb.cap + macroncmb + macroncmb.cap + overlinecmb + overlinecmb.cap + brevecmb + brevecmb.cyr + brevecmb.cap + brevecmb.cyrcap + dotaccentcmb + dotaccentcmb.cap + dieresiscmb + dieresiscmb.cap + hoicmb + hoicmb.cap + candrabinducmb + candrabinducmb.cap + ringcmb + ringcmb.cap + hungarumlautcmb + hungarumlautcmb.cap + caroncmb + caroncmb.cap + dblgravecmb + dblgravecmb.cap + breveinvertedcmb + breveinvertedcmb.cap + commaturnedabovecmb + aspercmb + commaabovecmb + leniscmb + lefttackbelowcmb + righttackbelowcmb + leftangleabovecmb + horncmb + ringhalfleftbelowcmb + uptackbelowcmb + downtackbelowcmb + plusbelowcmb + minusbelowcmb + dotbelowcmb + dieresisbelowcmb + ringbelowcmb + commabelowcmb + commabelowcmb.a + cedillacmb + cedillacmb.cap + ogonekcmb + ogonekcmb.cap + verticallinebelowcmb + bridgebelowcmb + caronbelowcmb + brevebelowcmb + breveinvertedbelowcmb + tildebelowcmb + macronbelowcmb + tildeoverlaycmb + ringhalfrightbelowcmb + bridgeinvertedbelowcmb + squarebelowcmb + seagullbelowcmb + xabovecmb + perispomenicmb + perispomenicmb.cap + iotasubscriptcmb + dieresisacutecmb + dieresisacutecmb.cap + dieresistonoscmb + dieresisgravecmb + dieresisgravecmb.cap + dialytikagravecmb + dieresistildecmb + dieresismacroncmb + dieresismacroncmb.cap + dieresiscaroncmb + dieresiscaroncmb.cap + circumflexacutecmb + circumflexacutecmb.cap + circumflexgravecmb + circumflexgravecmb.cap + circumflexhoicmb + circumflexhoicmb.cap + circumflextildecmb + circumflextildecmb.cap + breveacutecmb + breveacutecmb.cap + brevegravecmb + brevegravecmb.cap + brevehoicmb + brevehoicmb.cap + brevetildecmb + brevetildecmb.cap + circumflexbrevecmb + circumflexbrevecmb.cap + macronacutecmb + macronacutecmb.cap + carondotaccentcmb + carondotaccentcmb.cap + asperacutecmb + aspergravecmb + aspertildecmb + lenisacutecmb + lenisgravecmb + lenistildecmb + + + diff --git a/tests/otfautohint_data/input/dummy/bad_privatedict_hstems.ufo/layercontents.plist b/tests/otfautohint_data/input/dummy/bad_privatedict_hstems.ufo/layercontents.plist new file mode 100644 index 000000000..b9c1a4f27 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/bad_privatedict_hstems.ufo/layercontents.plist @@ -0,0 +1,10 @@ + + + + + + public.default + glyphs + + + diff --git a/tests/otfautohint_data/input/dummy/bad_privatedict_hstems.ufo/metainfo.plist b/tests/otfautohint_data/input/dummy/bad_privatedict_hstems.ufo/metainfo.plist new file mode 100644 index 000000000..cf19a1b7c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/bad_privatedict_hstems.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + com.github.fonttools.ufoLib + formatVersion + 3 + + diff --git a/tests/otfautohint_data/input/dummy/bad_privatedict_vstems.otf b/tests/otfautohint_data/input/dummy/bad_privatedict_vstems.otf new file mode 100644 index 0000000000000000000000000000000000000000..8a21208116daac2addf2b1709b69022cb2787ac4 GIT binary patch literal 1620 zcma)6U1%It6#nka?&POSLM18H#&9Wtw$f~pZBvTT+D*0z)zA&uv;++{lbuO+$?ncN zJ4q7}fBL2sR3fZ`kXU@tif`8XqJ6ED7HlOxNzj)*LACQ6?*N3td1zx4#bKrA%&Z;1F#8_$w*hT1?-ac14IE>>JQEUvtJd(@ z%Jh#vUu=Ei59s;>T5#{>Tj$iizVguzL_s^LF`gB(GXG|j> zc__TDP4e_0l{bh6o~iBPc|?Sybx*KK59pevDpL7uf6>@r9H$XQRQsiBs1wEBX^2$? z5F6UN+$3`X8t^Q45on^U?yV*ZbW*Fy8d~sMUDh$G()aO!U6>$TFMoJY6i2&E`2VrO7ePB5ZCtc@&piL=NdNv}&TwVJ-qqUW&B>Cyf; zdN?lmBTU2=TiB1x(s#r^@e(uf7$q@I{sO0qMXri%nCv+}$8%)J(kkVCX5(Ois3dIp zFv7ca#;6J{g~S*!j?X$re1;4zYYnr~W1Iu5For?IDeYq1j;}>`|0}*06=&QTT<~)( zFn^V$y2l;vF>*@YsF8_#F0HhLMA93ABfWjS zN7Wkn5ALvxW-@YI1r+4CU9jCn+X~l{RJBSLt1japG$FK+mh$G>VrlA5>ASn)TKQAG z^io-Gzj}Y|-r9QOTgK{B9}Zm|{N&L7%A`?wva;H~VSH1X3YIP#w<=S?pNz^2yq0dG z<&|Rj#o~JL>*71bFN#JbTWt7;rID7V&b66~p{6ULJ$IV#hC=1dHkE~X_1ar1d24`O z(80fjhz*ZUpwaIa_&u-{)6BO$j)3ofB)RNn&^71U^XST$UXFdGI&3FGDeCWeN_ExW DTCYmR literal 0 HcmV?d00001 diff --git a/tests/otfautohint_data/input/dummy/bad_privatedict_vstems.ufo/fontinfo.plist b/tests/otfautohint_data/input/dummy/bad_privatedict_vstems.ufo/fontinfo.plist new file mode 100644 index 000000000..bab7c0c9b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/bad_privatedict_vstems.ufo/fontinfo.plist @@ -0,0 +1,86 @@ + + + + + ascender + 750 + capHeight + 750 + copyright + Copyright 2010, 2012 Adobe Systems Incorporated. All Rights Reserved. + descender + -250 + familyName + Source Code Pro + postscriptBlueFuzz + 0 + postscriptBlueScale + 0.0625 + postscriptBlueValues + + -12 + 0 + 486 + 498 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyBlues + + -12 + 0 + 486 + 498 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyOtherBlues + + -217 + -205 + + postscriptFontName + SourceCodePro-Regular + postscriptForceBold + + postscriptIsFixedPitch + + postscriptOtherBlues + + -217 + -205 + + postscriptStemSnapH + + 67 + + postscriptUnderlinePosition + -100 + postscriptUnderlineThickness + 50 + styleName + Regular + trademark + Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + unitsPerEm + 1000 + versionMajor + 1 + versionMinor + 0 + xHeight + 500 + + diff --git a/tests/otfautohint_data/input/dummy/bad_privatedict_vstems.ufo/glyphs/A_.glif b/tests/otfautohint_data/input/dummy/bad_privatedict_vstems.ufo/glyphs/A_.glif new file mode 100644 index 000000000..131a04666 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/bad_privatedict_vstems.ufo/glyphs/A_.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/bad_privatedict_vstems.ufo/glyphs/contents.plist b/tests/otfautohint_data/input/dummy/bad_privatedict_vstems.ufo/glyphs/contents.plist new file mode 100644 index 000000000..156be5a7a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/bad_privatedict_vstems.ufo/glyphs/contents.plist @@ -0,0 +1,8 @@ + + + + + A + A_.glif + + diff --git a/tests/otfautohint_data/input/dummy/bad_privatedict_vstems.ufo/groups.plist b/tests/otfautohint_data/input/dummy/bad_privatedict_vstems.ufo/groups.plist new file mode 100644 index 000000000..c96917c95 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/bad_privatedict_vstems.ufo/groups.plist @@ -0,0 +1,122 @@ + + + + + COMBINING_MARKS + + gravecmb + gravecmb.cap + variacmb + acutecmb + acutecmb.cap + tonoscmb + circumflexcmb + circumflexcmb.cap + tildecmb + tildecmb.cap + macroncmb + macroncmb.cap + overlinecmb + overlinecmb.cap + brevecmb + brevecmb.cyr + brevecmb.cap + brevecmb.cyrcap + dotaccentcmb + dotaccentcmb.cap + dieresiscmb + dieresiscmb.cap + hoicmb + hoicmb.cap + candrabinducmb + candrabinducmb.cap + ringcmb + ringcmb.cap + hungarumlautcmb + hungarumlautcmb.cap + caroncmb + caroncmb.cap + dblgravecmb + dblgravecmb.cap + breveinvertedcmb + breveinvertedcmb.cap + commaturnedabovecmb + aspercmb + commaabovecmb + leniscmb + lefttackbelowcmb + righttackbelowcmb + leftangleabovecmb + horncmb + ringhalfleftbelowcmb + uptackbelowcmb + downtackbelowcmb + plusbelowcmb + minusbelowcmb + dotbelowcmb + dieresisbelowcmb + ringbelowcmb + commabelowcmb + commabelowcmb.a + cedillacmb + cedillacmb.cap + ogonekcmb + ogonekcmb.cap + verticallinebelowcmb + bridgebelowcmb + caronbelowcmb + brevebelowcmb + breveinvertedbelowcmb + tildebelowcmb + macronbelowcmb + tildeoverlaycmb + ringhalfrightbelowcmb + bridgeinvertedbelowcmb + squarebelowcmb + seagullbelowcmb + xabovecmb + perispomenicmb + perispomenicmb.cap + iotasubscriptcmb + dieresisacutecmb + dieresisacutecmb.cap + dieresistonoscmb + dieresisgravecmb + dieresisgravecmb.cap + dialytikagravecmb + dieresistildecmb + dieresismacroncmb + dieresismacroncmb.cap + dieresiscaroncmb + dieresiscaroncmb.cap + circumflexacutecmb + circumflexacutecmb.cap + circumflexgravecmb + circumflexgravecmb.cap + circumflexhoicmb + circumflexhoicmb.cap + circumflextildecmb + circumflextildecmb.cap + breveacutecmb + breveacutecmb.cap + brevegravecmb + brevegravecmb.cap + brevehoicmb + brevehoicmb.cap + brevetildecmb + brevetildecmb.cap + circumflexbrevecmb + circumflexbrevecmb.cap + macronacutecmb + macronacutecmb.cap + carondotaccentcmb + carondotaccentcmb.cap + asperacutecmb + aspergravecmb + aspertildecmb + lenisacutecmb + lenisgravecmb + lenistildecmb + + + diff --git a/tests/otfautohint_data/input/dummy/bad_privatedict_vstems.ufo/layercontents.plist b/tests/otfautohint_data/input/dummy/bad_privatedict_vstems.ufo/layercontents.plist new file mode 100644 index 000000000..b9c1a4f27 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/bad_privatedict_vstems.ufo/layercontents.plist @@ -0,0 +1,10 @@ + + + + + + public.default + glyphs + + + diff --git a/tests/otfautohint_data/input/dummy/bad_privatedict_vstems.ufo/metainfo.plist b/tests/otfautohint_data/input/dummy/bad_privatedict_vstems.ufo/metainfo.plist new file mode 100644 index 000000000..cf19a1b7c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/bad_privatedict_vstems.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + com.github.fonttools.ufoLib + formatVersion + 3 + + diff --git a/tests/otfautohint_data/input/dummy/big_glyph.ufo/data/com.adobe.type.processedHashMap b/tests/otfautohint_data/input/dummy/big_glyph.ufo/data/com.adobe.type.processedHashMap new file mode 100644 index 000000000..a95e2068b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/big_glyph.ufo/data/com.adobe.type.processedHashMap @@ -0,0 +1,4 @@ +{ +'big': ['bb090e0b177a1ab9dfe22ea9d9b6f7beb5a96874231e32f7baf51d65c0bf7b586a2e729fbf3ef25425f6f697c8402312cb10758ca2a546bedc9ab61a378a71f1', ['autohint']], +'hashMapVersion': (1, 0), +} diff --git a/tests/otfautohint_data/input/dummy/big_glyph.ufo/fontinfo.plist b/tests/otfautohint_data/input/dummy/big_glyph.ufo/fontinfo.plist new file mode 100644 index 000000000..83fa55912 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/big_glyph.ufo/fontinfo.plist @@ -0,0 +1,79 @@ + + + + + versionMajor + 1 + copyright + Copyright (c) 2012-2019 The Libertinus Project Authors. + unitsPerEm + 1000 + capHeight + 658 + xHeight + 429 + ascender + 800 + descender + -200 + postscriptFontName + BigGlyph + postscriptFullName + BigGlyph + postscriptWeightName + Regular + postscriptBlueValues + + -12 + 0 + 429 + 442 + 460 + 472 + 600 + 610 + 645 + 658 + 688 + 698 + + postscriptOtherBlues + + -238 + -227 + + postscriptFamilyBlues + + -12 + 0 + 429 + 442 + 460 + 472 + 600 + 610 + 645 + 658 + 688 + 698 + + postscriptFamilyOtherBlues + + -238 + -227 + + postscriptStemSnapH + + 36 + + postscriptStemSnapV + + 79 + 86 + + postscriptBlueShift + 6 + postscriptBlueScale + 0.0396 + + diff --git a/tests/otfautohint_data/input/dummy/big_glyph.ufo/glyphs.com.adobe.type.processedglyphs/big.glif b/tests/otfautohint_data/input/dummy/big_glyph.ufo/glyphs.com.adobe.type.processedglyphs/big.glif new file mode 100644 index 000000000..2cea5baa8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/big_glyph.ufo/glyphs.com.adobe.type.processedglyphs/big.glif @@ -0,0 +1,2396 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -9 10 + vstem 751 22 + + + + pointTag + hintRef0001 + stems + + hstem 17 -21 + vstem 579 22 + + + + pointTag + hintRef0002 + stems + + hstem 22 -21 + vstem 537 9 + + + + pointTag + hintRef0003 + stems + + hstem 17 -21 + vstem 537 9 + + + + pointTag + hintRef0004 + stems + + hstem -8 9 + vstem 513 11 + + + + pointTag + hintRef0005 + stems + + hstem 22 -21 + hstem 474.5 12.5 + vstem 180 9 + + + + pointTag + hintRef0006 + stems + + hstem 393 68 + vstem 180 9 + + + + pointTag + hintRef0007 + stems + + hstem 393 68 + vstem 180 9 + + + + pointTag + hintRef0008 + stems + + hstem 482 9 + vstem 113 14 + + + + pointTag + hintRef0009 + stems + + hstem 474.5 12.5 + vstem 113 14 + + + + pointTag + hintRef0010 + stems + + hstem 495 -20 + vstem 113 14 + + + + pointTag + hintRef0011 + stems + + hstem 496 -20 + vstem 99 8 + + + + pointTag + hintRef0012 + stems + + hstem 482 9 + vstem 113 14 + vstem 180 9 + + + + pointTag + hintRef0013 + stems + + hstem 485 -20 + vstem 180 9 + + + + pointTag + hintRef0014 + stems + + hstem 486 -20 + vstem 303 13.5 + + + + pointTag + hintRef0015 + stems + + hstem 489 -20 + vstem 303 13.5 + + + + pointTag + hintRef0016 + stems + + hstem 474.5 12.5 + vstem 303 13.5 + + + + pointTag + hintRef0017 + stems + + hstem 482 7 + vstem 303 13.5 + + + + pointTag + hintRef0018 + stems + + hstem 692 26 + vstem 332 9.5 + + + + pointTag + hintRef0019 + stems + + hstem 692 26 + vstem 345 9 + + + + pointTag + hintRef0020 + stems + + hstem 692 26 + vstem 332 9.5 + + + + pointTag + hintRef0021 + stems + + hstem 692 26 + vstem 345 9 + vstem 419.5 16.5 + + + + pointTag + hintRef0022 + stems + + hstem 692 26 + vstem 463 9 + + + + pointTag + hintRef0023 + stems + + hstem 496 -20 + vstem 472 9 + + + + pointTag + hintRef0024 + stems + + hstem 692 26 + vstem 463 9 + + + + pointTag + hintRef0025 + stems + + hstem 718 -20 + vstem 472 9 + vstem 549.5 12.5 + + + + pointTag + hintRef0026 + stems + + hstem 496 -20 + vstem 579 22 + + + + pointTag + hintRef0027 + stems + + hstem 487 -20 + vstem 579 22 + + + + pointTag + hintRef0028 + stems + + hstem 393 68 + hstem 718 -20 + vstem 751 22 + + + + pointTag + hintRef0029 + stems + + hstem 474.5 12.5 + hstem 716 -20 + vstem 988 15 + + + + pointTag + hintRef0030 + stems + + hstem 489 -20 + vstem 456 7 + vstem 567 30 + vstem 991 12 + + + + pointTag + hintRef0031 + stems + + hstem 393 68 + vstem 988 15 + + + + pointTag + hintRef0032 + stems + + hstem 393 68 + vstem 430 20 + vstem 991 12 + + + + pointTag + hintRef0033 + stems + + hstem -80 13 + hstem -4 14 + hstem 96 13 + hstem 489 -20 + vstem 430 39 + + + + id + c89d06a9ff7000aab70a08fb4ed3a6ac2355bc9f8b0cbc176c32dd743c0f52e35d34f72af598d2545beadd69de2de81f48241e22fa9d2e7a49643bdb74ff517b + + + + diff --git a/tests/otfautohint_data/input/dummy/big_glyph.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist b/tests/otfautohint_data/input/dummy/big_glyph.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist new file mode 100644 index 000000000..fb76c8fc5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/big_glyph.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist @@ -0,0 +1,8 @@ + + + + + big + big.glif + + diff --git a/tests/otfautohint_data/input/dummy/big_glyph.ufo/glyphs/big.glif b/tests/otfautohint_data/input/dummy/big_glyph.ufo/glyphs/big.glif new file mode 100644 index 000000000..03e421b7d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/big_glyph.ufo/glyphs/big.glif @@ -0,0 +1,2067 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/big_glyph.ufo/glyphs/contents.plist b/tests/otfautohint_data/input/dummy/big_glyph.ufo/glyphs/contents.plist new file mode 100644 index 000000000..6f7c21dfa --- /dev/null +++ b/tests/otfautohint_data/input/dummy/big_glyph.ufo/glyphs/contents.plist @@ -0,0 +1,8 @@ + + + + + big + big.glif + + diff --git a/tests/otfautohint_data/input/dummy/big_glyph.ufo/layercontents.plist b/tests/otfautohint_data/input/dummy/big_glyph.ufo/layercontents.plist new file mode 100644 index 000000000..b07680883 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/big_glyph.ufo/layercontents.plist @@ -0,0 +1,14 @@ + + + + + + public.default + glyphs + + + com.adobe.type.processedglyphs + glyphs.com.adobe.type.processedglyphs + + + diff --git a/tests/otfautohint_data/input/dummy/big_glyph.ufo/metainfo.plist b/tests/otfautohint_data/input/dummy/big_glyph.ufo/metainfo.plist new file mode 100644 index 000000000..7b8b34ac6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/big_glyph.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + com.github.fonttools.ufoLib + formatVersion + 3 + + diff --git a/tests/otfautohint_data/input/dummy/decimals.otf b/tests/otfautohint_data/input/dummy/decimals.otf new file mode 100644 index 0000000000000000000000000000000000000000..12d0e8456049a24ab4e0d7fe317e5078a22509ce GIT binary patch literal 24964 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 literal 0 HcmV?d00001 diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/data/com.adobe.type.processedHashMap b/tests/otfautohint_data/input/dummy/decimals.ufo/data/com.adobe.type.processedHashMap new file mode 100644 index 000000000..0747be4d1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/data/com.adobe.type.processedHashMap @@ -0,0 +1,95 @@ +{ +'A': ['c66e6bea0defeebc3e60d8ea81456582d10467b7aedb4c0af9379fa8ec248f5b83b4fd29e9be056f2696f922538f25a9b15a04d9ec235a0606b263862c345a84', ['autohint']], +'B': ['9c20fa4f6e406fa93c5cfba2a0c986f5312c8997140de7b7fb6be8445c10141165cca07ac49765c20f434fcc71600429048d0e794f34a97731d3433c638b8254', ['autohint']], +'C': ['e3327850d4c799784ca062fabd360d216633a4e88692987f7e0ffdfd22672a46797618dca93ce0a0eec6d8696dee0d12e806466661501c9b38accb79a8066638', ['autohint']], +'D': ['dd48b1f818cd3af02039a5d2887d9857d6a1916ec3082922d90143aa1a31928089f9111a5f53a555db6d2c0a5f4f1a81bd1df7fe5cf8451c897dffb7426214ca', ['autohint']], +'E': ['w527l720l382.40l382.456.8l138.456.8l138.4247.2l337.6247.2l337.6304l138.4304l138.4468.8l374.4468.8l374.4524.8l72524.8', ['autohint']], +'F': ['w494l720l138.40l138.4235.2l338.4235.2l338.4291.2l138.4291.2l138.4468.8l374.4468.8l374.4524.8l72524.8', ['autohint']], +'G': ['f4f83bf742afd4c5c3f07877a180a92fa7644728dd9983ec3afa30af9b876de2766d29f9bd1b0764dc2ff855e11642917f6993f8afef985999f51e32c45b4539', ['autohint']], +'H': ['w652l720l138.40l138.4247.2l382.4247.2l382.40l449.60l449.6524.8l382.4524.8l382.4304.8l138.4304.8l138.4524.8l72524.8', ['autohint']], +'I': ['w263l720l138.40l138.4524.8l72524.8', ['autohint']], +'J': ['ea3dab7e51e06ee63643021dfd8059fdda37e1edc1b4dce6620c92133ef87e68cabf54cb4db82b78e8bc4a2d4229a536178e889900e4efcad53819f639b78669', ['autohint']], +'K': ['w579l720l138.40l138.4166.4l228.8272.8l385.60l4600l270.4324.8l434.4524.8l359.2524.8l140.8261.6l138.4261.6l138.4524.8l72524.8', ['autohint']], +'L': ['w486l720l3680l36856.8l138.456.8l138.4524.8l72524.8', ['autohint']], +'M': ['4745bc848d4a9fc2de282cfb7f165d8156838f9c597c5edd1385d3d237fd99f436703a9bbcb823d37b2cf6263f5cac7b8ca5b6fee73e5456dd9770954f9e2cf1', ['autohint']], +'N': ['dd9d31d11b1fead550aeb32749273b9ae9d109ee9a7be77385d4734bc14acd5d3d405022c2970e73edf69625d9fd0fe3394ee1b818d08d668dd2680c401a582e', ['autohint']], +'O': ['093042f92f0662295f9827fbecd087499696790aed04cf8cb397119c49261552743753a09de75960f19a2db9b457ea21dd04a7a503022a024e9bc96f0bf8aa34', ['autohint']], +'P': ['a3bbddd9a98e7fdd77c4798f993e798376539d12d3310a8b39990c8f790df02983ecc030989619db656dd84c3b0611b6abe2f14a97ee8e9f0ef2cfe1db44d745', ['autohint']], +'Q': ['8014fd46a66b0d43078884ac9d9bc1420310059b2c1f88bf034d8b5eb5d816524c21dcc8596a40e4624aaad5b1d95191fe2340aedb48da848be2b5a43e12ce55', ['autohint']], +'R': ['2004463547b5f44213d84467454b94e9692e4e604da25d818b0e59c798bf7faf15b1a8adeb32e2fe37eafd37281fca7b8226e33040159e96150e256668bf2be1', ['autohint']], +'S': ['f76f89aebf8cf4efafe8840f04ad817de954c42606d72b3bf53efab8a56f6fff98bf1edd15ef50874d215a92edd169121661b22935c1e9640288bf827007cd22', ['autohint']], +'T': ['w536l180.80l2480l248468.8l406.4468.8l406.4524.8l22.4524.8l22.4468.8l180.8468.8', ['autohint']], +'U': ['a35f71a73c3249b9fd9f658a43ad6a5e464297963285db6204b83376e8e4b2b7b9e0a50b7204f255a4f9e3544a77683c8749b941f9ce306b133e1ceec3edd9c4', ['autohint']], +'V': ['w515l1680l245.60l412524.8l344524.8l260241.6241.6179.2228.8129.6c209.668l206.468186.4129.6174.4179.2c155.2241.6l71.2524.8l0524.8', ['autohint']], +'W': ['a0314ac0a182838a3e85b8d5c5f138f80c61ad36051266674bee15e8963cf1e032f440cc00ef6f1cb8814b9837256bb816edcbfe3c83b60d31050a8b012c863a', ['autohint']], +'X': ['302f49f7d963a7ed73cf56217cdeaf8e54d5ebebb2fc3277e9236ab9752df3cc5fd538dc806d7a8a5bf8456259bab7ce8abcb474b1d74f4b15b3a1304f81ab4f', ['autohint']], +'Y': ['624f27f90ce92213fb47357caa308e84be26c8abc083b6ddbf15dac75b7b35023f00e73a794c3a5c0dd11732860e0de09a672471ff33e54b4af028e69418e9d6', ['autohint']], +'Z': ['w539l360l397.60l397.656.8l118.456.8l395.2485.6l395.2524.8l60.8524.8l60.8468.8l312468.8l3640', ['autohint']], +'a': ['386ce614a2624b1b76dc2d291227ea12a8a76dc8827715f5bce2ef15097b5fc8be2a5ba6be0e4d73a14f5a233e9ac69206dff25542d167f67a0a494efd6157b8', ['autohint']], +'ampersand': ['f40be25e5f969581a1e6775f80af432ab82ed296780571fce53af5348c3c9278f97a4fd69dcf7c03b04d86f6226ad745fc2e268a0a325c834f454cb0a197c633', ['autohint']], +'asciicircum': ['w497l48227.2l105.6227.2l157.6368l197.6474.4l200.8474.4l240368l292227.2l349.6227.2l228536l169.6536', ['autohint']], +'asciitilde': ['8d64cd2010ded6013d1728c3bc7f11245505a02c7477e308dc15c397b3b3d9d85e16b87e472d7b895d16187a439a9baf6b36042a16b99ddc2b7f73ac136f4b34', ['autohint']], +'asterisk': ['d089f82cc7ee2ade0bc18e2aa8e059ca92aecdb08a3523fff997bc292d8fff1607cb042ecd4280fd28ed704bae3c20f4417bd6b4d59925cdec9650ac06e69403', ['autohint']], +'at': ['cc847c872f01b2e284623f30fcf2c55f654edf8cb03546098d6dd3e6e870e712ee6e0d33e9f614702bd1b00c73337ef9fb56d9fc06e75317207e951dc19bf88c', ['autohint']], +'b': ['2af7bba273d2a071e1f042bbc859d4d2c413bff23d596195ef1d542ca8a1a39dc2b90f4744505709df272e51052e7ae9e596fca2d59d09487f9dceec7e43a550', ['autohint']], +'backslash': ['w350l224.8-128l272-128l58.4568l11.2568', ['autohint']], +'bar': ['w241l73.6-200l120-200l120600l73.6600', ['autohint']], +'braceleft': ['7a370cd41e87a1c14014cb7e77c53cf1e9850ac20a8cb525d9868b325116079fcf99c097a0aed3a74b0116136a9078293421d158c20e47a2c00a3c6402d6401c', ['autohint']], +'braceright': ['c1a63810c7164b725b26f91e8d8653986e7d0edf9d9e587cbada4e7f81326ea32a257cd955fe83c8339bbcf1d1e145adf728b29f153e205682fb8724ce3e030b', ['autohint']], +'bracketleft': ['w303l75.2-121.6l218.4-121.6l218.4-84l124.8-84l124.8528.8l218.4528.8l218.4566.4l75.2566.4', ['autohint']], +'bracketright': ['w303l24.8-121.6l167.2-121.6l167.2566.4l24.8566.4l24.8528.8l117.6528.8l117.6-84l24.8-84', ['autohint']], +'c': ['db664529b007ac18a05bf024e4bd6a9128c066130e763221ed0e846e825f45516722cec090edb831de505689571dfc09bd8357a2b0a7de406eb3868672fd7371', ['autohint']], +'colon': ['0616c9d4d3c671c9492978f7bb36d220f7b54d9facafe0bc4b152368a4dbd3886a3da171cc54a3e57ab471fbea27687dacc874cdfa4625471b3f846d27b7508a', ['autohint']], +'comma': ['8ef681b43cb27bf043e88a36c439dd66c0bc2fdf3db05cc38f0134e138747e3075f243b5e15f700c385356901c7c4e3daebcc6d1b704b8128b6a56457a66bb71', ['autohint']], +'d': ['26feaeec610e26c6c0c62536479a68ac9e93f98bf13cb6deaaf0256c1e938f2a6ffb7a51db980371555964d08f22c667f72deb756c840928acbbd37f3b959db3', ['autohint']], +'dollar': ['7e579a1c379e0aff950697cf8818af085d592c02c2039329b784301f8816ad2990fb0055927b97035fd682e9d652c4e0d2b1190e9d6df3b7462a89d1a1b1a5dd', ['autohint']], +'e': ['0656836ae31412e1917c7e0f35ac21496b6ca2813e74ccdd2eb4b57a3e66a5f7c0a70a1c60cb6f5179679a12349eff50fc3486a8425065328c08bed6a1ed17d0', ['autohint']], +'eight': ['6d2c59cb003d79b09ce33f1b6133c4585db489dcb0ea7dd1fc191b91a4bf2f4ba537397839ea7fac388506030608f46ec6df9e55a98de288f5d944cae0bf1a3f', ['autohint']], +'exclam': ['b3b2463cd9199ac504477beee1b3bdf0554dcc9cbd989a814540e58da7adac3bfb72c811c2d523b86e40358283269b04225d7726cc4e17458b6f0790371c24f3', ['autohint']], +'f': ['bd31828ea4370f91e6f129f66557bb4be0b639ec1d3a1aa34e42235a14ed9149c08d59fffdf75235b2a8fb1cfdbb7385a2d26bcedb442eb9d997e350825a12cc', ['autohint']], +'five': ['dc27f05a74ffb9160e29be2c2a64d122f7540730c2ff10bade9785e53e052c6a789384e26eb1ccec9dc913e17f17084278c4f6aaec1c5e4bbcf9aa5eef61ceb0', ['autohint']], +'four': ['ec3d7d2b4a7311cbdcb94fc541af52bea6f8904a7249cbee856bbcce958cd0ea74ad69677301041311075cbc684710ee8a31b41ba8455d8f5acaf5f75f343059', ['autohint']], +'g': ['77577a839f1d758a236ddc95268812e9bce02fa24270ae15f195048455d139230212d22283331de68f52f6b24d5b47036e689b48fe657b3f1fe83373f17282e0', ['autohint']], +'greater': ['w497l27.2104.8l370.4239.2l370.4292l27.2426.4l27.2369.6l196307.2l303.2267.2l303.2264l196224l27.2161.6', ['autohint']], +'h': ['8676726262f8cd8c3a099f48a6235b1bf966d9c3a336f767d64560ff2610f3e2c6dea4b7633648568b1211bddf50bfa74c90531da3ddf5e07a6d11d16fa0b989', ['autohint']], +'hashMapVersion': (1, 0), +'hyphen': ['w311l32.8175.2l216.8175.2l216.8225.6l32.8225.6', ['autohint']], +'i': ['4b669743da44c9f259421e2caeed59228b6742c6cec2754da2a4c266ec93773553778508fd3a78e27824b433e8e92922218ccef698bbd5ccb5d81556f867f3c5', ['autohint']], +'j': ['504c835cb57bcd2de1b6c5f88b8c60e6015849dc2b5ac7e04b99977d771d51a483f5a52777bb2fb34544d3e444a3b877312e5a9b99c01286c1568e55be0353e4', ['autohint']], +'k': ['w495l65.60l130.40l130.4102.4l203.2187.2l316.80l388.80l240.8232.8l371.2388.8l298.4388.8l132.8184l130.4184l130.4569.6l65.6569.6', ['autohint']], +'l': ['bc0d08dea858b8f74ac93c90fb9d9a0f6a157d35124083934c436ed3f64522d5a7f9c6005996e1bba1d155f7ea0fb5f207c9b47d5b976ade1c69839e638df0f1', ['autohint']], +'less': ['w497l370.4104.8l370.4161.6l201.6224l94.4264l94.4267.2l201.6307.2l370.4369.6l370.4426.4l27.2292l27.2239.2', ['autohint']], +'m': ['73bbc010347fc98ff57871e66a401750651927b717031f2ebace27b173aed6bc33fe8728af37e148302c2a1c211738e4a9953ec392c4e5f2fc40e5a5e775c1c0', ['autohint']], +'n': ['fc37e7e70c9d61592be5b339d89f8c81e5bb22f0079fbe0fe46ef32d3ad4356f2d0b95220745c6cd9ff7ccc115a2c69ada7ef4ca76979367451262e14ccc5c07', ['autohint']], +'nine': ['3e1c712be5f3c4fa92fd658f8672aa56bd4c1ac5234ee85288b93e9809dd7e33443d955c9d6e30ec8012667fdd3d7a6e7531898f094cf30c2d0488e01ba695dd', ['autohint']], +'numbersign': ['146e952f7341bc3bf63638086ea9287ad7738d06539adaba783cb799fc84778df8f5038da18fb312ce67007ece8730bf604171d3b859f76c2a3b4b780b7d2f88', ['autohint']], +'o': ['fa1e7931edfa00092b3ff577a648c3821c41ac2238427a3f89483e34788ccd13ba371a69617e6a0ae5058c66f18c196011fba740c0b7d866c162a18e2b5eec63', ['autohint']], +'one': ['w497l63.20l351.20l351.254.4l245.654.4l245.6510.4l195.2510.4167.2493.6133.6480.8c87.2472.8l87.2430.4l180430.4l18054.4l63.254.4', ['autohint']], +'p': ['2435e621d77b2b671973ed177e8ea33286c57c460f4ceeb69ec70d907b6104dfd40786d90a3347d59f240f9ff86d7e8281d305db181256483beebd5ca7996178', ['autohint']], +'parenleft': ['bf038f979d7b04a4e43b68ff38aacb5029f9d68769558a1d03b2b19e87a4695a45245d36e6a8e2776c6acce81e8b7451c4b0fb6ba3c7602508f5ff3a9fe85350', ['autohint']], +'parenright': ['d9438533ceb42866c6c68e562c24203a65fc2da4c96775ebc7d5a5d22f209ec113fd222727c4c033bba8f2d758b4c0bb39981c8d9a8979aff2607d6885c68511', ['autohint']], +'period': ['w249c100-9.6125.6-9.6147.211.2c147.240147.270.4125.691.2c10091.273.691.25270.4c52405211.273.6-9.6', ['autohint']], +'plus': ['59339129101d66afb988bbe8af8488922c29bf7a401620bd308c9dba6c2a26f9de3e388dcd61da7901be10a71a2ccf5990f4f42575379308ca051f14fc943015', ['autohint']], +'q': ['d385b4bc666e96ffb76686ab5fdf13445c97b69b7cd21654975eb8259d1897e88370deb39a50e782536ae7b8e206a2d72fe90949bc09295e397e7ccaafd24645', ['autohint']], +'question': ['49599125cd026d3d4e2e03415b7fbd5fd8423f16c8a070eabd288c0a493592bcb1be120d9defd46c7461a61c8ad4d395d1521b3a06308b9723d4b0f53f2c3dd2', ['autohint']], +'quotedbl': ['0749bcd81d4cff821073b1d01d61257420c81bcb7831fe530ce3fa8a5d5209933eb622d170ee0574bb3aac12135737cfd374f9ab15c58aa9347e3ccfda3fa379', ['autohint']], +'quotesingle': ['w249l79.2344.8l119.2344.8l132478.4l134.4552l64552l66.4478.4', ['autohint']], +'r': ['a1a3e5a249002aa4bcaec78e105a21dd121036f678d74ffab2e9b4417ef4f8462cb1c77beff938bcfa2768f4b605657833238878d069947ee08017ccfc6040a2', ['autohint']], +'s': ['07429097280e6acf87d50ddf8096e1b39fd29333c05d37c8ac6bb1c73ac6fecc5e84dfab8b4ae917a633a73207bc4f38a75521c3fa228c551717b53fd13db0c9', ['autohint']], +'semicolon': ['8a3bd1890d69cc6e38b0821fa5e430be1b50d80b7c2c9e63232ff75539d4becb35c4cbc7565028baa7c30029d5cfbdde8439baa4a5f5c89bc7e5b8ce0c183a9e', ['autohint']], +'seven': ['w497c141.60l209.60218.4199.2243.2315.2c364469.6l364510.4l35.2510.4l35.2453.6l289.6453.6188.8313.6150.4192', ['autohint']], +'six': ['dcca911fea68b6824846b51739738f41b862e0a83b2e5f80bf519a096a3a868311e94d69725ae6e82d741c8870f0b6e6a808fd353c29b6ff95dd0e9cd355345a', ['autohint']], +'slash': ['w350l8-128l56-128l269.6568l221.6568', ['autohint']], +'space': ['w200', ['autohint']], +'t': ['ee9277d462d3b83b81274a11a19844a44731a3aa04c7a1e1a9f3857c829a1adf136391a1c49463ae976bb1177bb0380a9955d450f3a3e4820583bc2d10f41a31', ['autohint']], +'three': ['78b7ce32e8da3ae4dc27ca43041a8711546c909712fe109437442357b4868c3327bf88ae991987c4751101cfdaf2e4ad95a007a9e5d87690497ba11514bd369c', ['autohint']], +'two': ['f99f560b8c1c696139f1f19e9d683085b7c32f3ba977e9d6cf74d642c1369960b2f4ca5adc404428b8717716343f91f98c8440b80984fe86c7f9b0ecd68de70a', ['autohint']], +'u': ['1a4882fe7d2895d1637eb3c31d4b885e08807e8fa32eff863a8d1cec1ecad8097f62e82ae94369d6e124017c33eca59c7f015e63cc5d46cba8a2243e174214fc', ['autohint']], +'underscore': ['w500l9.6-100.8l390.4-100.8l390.4-56.8l9.6-56.8', ['autohint']], +'v': ['cb876f845d8da46752e5f9350bf58325452393711638ea397ebbddaf642db78d7ed7183bbd309627d2bdf85a8cc8a9d4115fe00d14616748bd8e798446dd8d05', ['autohint']], +'w': ['eb907dde06fc69cf3861b0bf5ce7561e18cc7d9903daffde7e18cc0fb2b7b9b753ce1df486ffa1ce578dddf9d492a6fc5b00133964a03d2e7ebf7bf887b5e62a', ['autohint']], +'x': ['a4b008c460dd4ca97d39d625fff28145570404b583c5be93804bccde7740fda1a82405ca794edb1b37dbd99ff40c89eb314d4668a61203813b6d1b8262f5c00f', ['autohint']], +'y': ['f73b4b4ab2c5cd11ffc676a11f576a8c4d67309b297382825ce0125ddfe59bef3eb72a1da9915f6cb17cc70b5406bef2b43f273fa2882cd54fad8d98adb954dc', ['autohint']], +'z': ['w425l24.80l319.20l319.253.6l10853.6l312.8353.6l312.8388.8l47.2388.8l47.2335.2l229.6335.2l24.835.2', ['autohint']], +'zero': ['84a463e49d24685133f23db14a4933f07dd51748a7216dab779eff0e03ec4a4dc351d38ce74d578987e3a399355dbc5412a02735c4273da8d0f9337f76b4e4eb', ['autohint']], +} diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/fontinfo.plist b/tests/otfautohint_data/input/dummy/decimals.ufo/fontinfo.plist new file mode 100644 index 000000000..2199d9cfd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/fontinfo.plist @@ -0,0 +1,167 @@ + + + + + ascender + 712 + capHeight + 656 + copyright + Copyright 2010, 2012, 2014 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. + descender + -205 + familyName + Source Sans Pro + guidelines + + italicAngle + 0 + openTypeHheaAscender + 984 + openTypeHheaDescender + -273 + openTypeHheaLineGap + 0 + openTypeNameDesigner + Paul D. Hunt + openTypeNameLicense + This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: http://scripts.sil.org/OFL. This Font Software is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the SIL Open Font License for the specific language, permissions and limitations governing your use of this Font Software. + openTypeNameLicenseURL + http://scripts.sil.org/OFL + openTypeNameManufacturer + Adobe Systems Incorporated + openTypeNameManufacturerURL + http://www.adobe.com/type + openTypeOS2CodePageRanges + + 0 + 1 + 2 + 3 + 4 + 7 + 8 + 29 + + openTypeOS2Panose + + 2 + 11 + 5 + 3 + 3 + 4 + 3 + 2 + 2 + 4 + + openTypeOS2Type + + openTypeOS2TypoAscender + 750 + openTypeOS2TypoDescender + -250 + openTypeOS2TypoLineGap + 0 + openTypeOS2UnicodeRanges + + 0 + 1 + 2 + 4 + 5 + 6 + 7 + 9 + 29 + 30 + 32 + 57 + + openTypeOS2VendorID + ADBO + openTypeOS2WinAscent + 984 + openTypeOS2WinDescent + 273 + postscriptBlueFuzz + 0 + postscriptBlueScale + 0.0625 + postscriptBlueValues + + -12 + 0 + 486 + 498 + 518 + 530 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyBlues + + -12 + 0 + 486 + 498 + 518 + 530 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyOtherBlues + + -217 + -205 + + postscriptFontName + SourceSansPro-Regular + postscriptForceBold + + postscriptOtherBlues + + -217 + -205 + + postscriptStemSnapH + + 67 + 78 + + postscriptStemSnapV + + 84 + 95 + + postscriptUnderlinePosition + -75 + postscriptUnderlineThickness + 50 + styleName + Regular + trademark + Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + unitsPerEm + 1000 + versionMajor + 2 + versionMinor + 20 + xHeight + 486 + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif new file mode 100644 index 000000000..ab0fb3e4e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 202.56 65.66 + hstem 582.8 66.64 + vstem 8.38 527.24 + + + + id + c66e6bea0defeebc3e60d8ea81456582d10467b7aedb4c0af9379fa8ec248f5b83b4fd29e9be056f2696f922538f25a9b15a04d9ec235a0606b263862c345a84 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/B_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/B_.glif new file mode 100644 index 000000000..a02d57ba0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/B_.glif @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 6.56 64.68 + hstem 313.3 62.72 + hstem 584.76 64.68 + vstem 94.58 81.34 + vstem 463.06 80.36 + + + + pointTag + hintRef0001 + stems + + hstem 6.56 64.68 + hstem 313.3 62.72 + hstem 584.76 64.68 + vstem 94.58 81.34 + vstem 425.82 80.36 + + + + pointTag + hintRef0002 + stems + + hstem 6.56 64.68 + hstem 313.3 62.72 + hstem 584.76 64.68 + vstem 94.58 81.34 + vstem 463.06 80.36 + + + + id + 9c20fa4f6e406fa93c5cfba2a0c986f5312c8997140de7b7fb6be8445c10141165cca07ac49765c20f434fcc71600429048d0e794f34a97731d3433c638b8254 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/C_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/C_.glif new file mode 100644 index 000000000..55c6a857f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/C_.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -9.6 58.4 + hstem 476 58.4 + vstem 41.6 68.8 + + + + id + e3327850d4c799784ca062fabd360d216633a4e88692987f7e0ffdfd22672a46797618dca93ce0a0eec6d8696dee0d12e806466661501c9b38accb79a8066638 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/D_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/D_.glif new file mode 100644 index 000000000..d2cb14aae --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/D_.glif @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 54.4 + hstem 470.4 54.4 + vstem 72 66.4 + vstem 382.4 68.8 + + + + id + dd48b1f818cd3af02039a5d2887d9857d6a1916ec3082922d90143aa1a31928089f9111a5f53a555db6d2c0a5f4f1a81bd1df7fe5cf8451c897dffb7426214ca + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/E_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/E_.glif new file mode 100644 index 000000000..04064473e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/E_.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 56.8 + hstem 247.2 56.8 + hstem 468.8 56 + vstem 72 66.4 + + + + id + w527l720l382.40l382.456.8l138.456.8l138.4247.2l337.6247.2l337.6304l138.4304l138.4468.8l374.4468.8l374.4524.8l72524.8 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/F_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/F_.glif new file mode 100644 index 000000000..8f01fb4bb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/F_.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 235.2 56 + hstem 468.8 56 + vstem 72 66.4 + + + + id + w494l720l138.40l138.4235.2l338.4235.2l338.4291.2l138.4291.2l138.4468.8l374.4468.8l374.4524.8l72524.8 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/G_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/G_.glif new file mode 100644 index 000000000..11fc8ce65 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/G_.glif @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -9.6 58.4 + hstem 216.8 55.2 + hstem 476 58.4 + vstem 41.6 68.8 + vstem 379.2 60.8 + + + + pointTag + hintRef0001 + stems + + hstem -9.6 58.4 + hstem 216.8 55.2 + hstem 476 58.4 + vstem 41.6 68.8 + vstem 268 172 + + + + pointTag + hintRef0002 + stems + + hstem -9.6 58.4 + hstem 216.8 55.2 + hstem 476 58.4 + vstem 41.6 68.8 + vstem 379.2 60.8 + + + + id + f4f83bf742afd4c5c3f07877a180a92fa7644728dd9983ec3afa30af9b876de2766d29f9bd1b0764dc2ff855e11642917f6993f8afef985999f51e32c45b4539 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/H_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/H_.glif new file mode 100644 index 000000000..b4a73f3a0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/H_.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 247.2 57.6 + vstem 72 66.4 + vstem 382.4 67.2 + + + + id + w652l720l138.40l138.4247.2l382.4247.2l382.40l449.60l449.6524.8l382.4524.8l382.4304.8l138.4304.8l138.4524.8l72524.8 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/I_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/I_.glif new file mode 100644 index 000000000..6b252d784 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/I_.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + vstem 72 66.4 + + + + id + w263l720l138.40l138.4524.8l72524.8 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/J_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/J_.glif new file mode 100644 index 000000000..159f40ef8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/J_.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -9.6 58.4 + vstem 247.2 67.2 + + + + id + ea3dab7e51e06ee63643021dfd8059fdda37e1edc1b4dce6620c92133ef87e68cabf54cb4db82b78e8bc4a2d4229a536178e889900e4efcad53819f639b78669 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/K_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/K_.glif new file mode 100644 index 000000000..8fadedbbb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/K_.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + vstem 72 66.4 + + + + id + w579l720l138.40l138.4166.4l228.8272.8l385.60l4600l270.4324.8l434.4524.8l359.2524.8l140.8261.6l138.4261.6l138.4524.8l72524.8 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/L_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/L_.glif new file mode 100644 index 000000000..c0d7f668f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/L_.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 56.8 + vstem 72 66.4 + + + + id + w486l720l3680l36856.8l138.456.8l138.4524.8l72524.8 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/M_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/M_.glif new file mode 100644 index 000000000..7a1bedeeb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/M_.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 52.8 82.4 + hstem 444 80.8 + vstem 72 60 + vstem 447.2 62.4 + + + + id + 4745bc848d4a9fc2de282cfb7f165d8156838f9c597c5edd1385d3d237fd99f436703a9bbcb823d37b2cf6263f5cac7b8ca5b6fee73e5456dd9770954f9e2cf1 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/N_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/N_.glif new file mode 100644 index 000000000..1b97cc14e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/N_.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 438.4 86.4 + vstem 72 63.2 + vstem 382.4 63.2 + + + + pointTag + hintRef0001 + stems + + hstem 0 86.4 + hstem 438.4 86.4 + vstem 72 63.2 + vstem 382.4 63.2 + + + + id + dd9d31d11b1fead550aeb32749273b9ae9d109ee9a7be77385d4734bc14acd5d3d405022c2970e73edf69625d9fd0fe3394ee1b818d08d668dd2680c401a582e + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/O_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/O_.glif new file mode 100644 index 000000000..67b1c7381 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/O_.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -9.6 58.4 + hstem 476 58.4 + vstem 41.6 68.8 + vstem 420.8 69.6 + + + + id + 093042f92f0662295f9827fbecd087499696790aed04cf8cb397119c49261552743753a09de75960f19a2db9b457ea21dd04a7a503022a024e9bc96f0bf8aa34 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/P_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/P_.glif new file mode 100644 index 000000000..11a42503f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/P_.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 208 54.4 + hstem 471.2 53.6 + vstem 72 66.4 + vstem 352 66.4 + + + + id + a3bbddd9a98e7fdd77c4798f993e798376539d12d3310a8b39990c8f790df02983ecc030989619db656dd84c3b0611b6abe2f14a97ee8e9f0ef2cfe1db44d745 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/Q_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/Q_.glif new file mode 100644 index 000000000..0e8bcb70d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/Q_.glif @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -132 56 + hstem -9.6 14 + hstem 476 58.4 + vstem 41.6 68.8 + vstem 420.8 69.6 + + + + pointTag + hintRef0001 + stems + + hstem -132 56 + hstem -9.6 55.2 + hstem 476 58.4 + vstem 41.6 68.8 + vstem 420.8 69.6 + + + + pointTag + hintRef0002 + stems + + hstem -132 56 + hstem -9.6 14 + hstem 476 58.4 + vstem 41.6 68.8 + vstem 420.8 69.6 + + + + id + 8014fd46a66b0d43078884ac9d9bc1420310059b2c1f88bf034d8b5eb5d816524c21dcc8596a40e4624aaad5b1d95191fe2340aedb48da848be2b5a43e12ce55 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/R_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/R_.glif new file mode 100644 index 000000000..ea3005ae8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/R_.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 221.6 54.4 + hstem 471.2 53.6 + vstem 72 66.4 + vstem 353.6 66.4 + + + + id + 2004463547b5f44213d84467454b94e9692e4e604da25d818b0e59c798bf7faf15b1a8adeb32e2fe37eafd37281fca7b8226e33040159e96150e256668bf2be1 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/S_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/S_.glif new file mode 100644 index 000000000..5798d0ae5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/S_.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -9.6 58.4 + hstem 476 58.4 + vstem 59.2 67.2 + vstem 328 68 + + + + id + f76f89aebf8cf4efafe8840f04ad817de954c42606d72b3bf53efab8a56f6fff98bf1edd15ef50874d215a92edd169121661b22935c1e9640288bf827007cd22 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/T_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/T_.glif new file mode 100644 index 000000000..edbb073b5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/T_.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 468.8 56 + vstem 180.8 67.2 + + + + id + w536l180.80l2480l248468.8l406.4468.8l406.4524.8l22.4524.8l22.4468.8l180.8468.8 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/U_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/U_.glif new file mode 100644 index 000000000..a02bd6b6b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/U_.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -9.6 58.4 + vstem 69.6 66.4 + vstem 382.4 64 + + + + id + a35f71a73c3249b9fd9f658a43ad6a5e464297963285db6204b83376e8e4b2b7b9e0a50b7204f255a4f9e3544a77683c8749b941f9ce306b133e1ceec3edd9c4 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/V_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/V_.glif new file mode 100644 index 000000000..01534a74a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/V_.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 68 + vstem 0 412 + + + + id + w515l1680l245.60l412524.8l344524.8l260241.6241.6179.2228.8129.6c209.668l206.468186.4129.6174.4179.2c155.2241.6l71.2524.8l0524.8 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/W_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/W_.glif new file mode 100644 index 000000000..58e2e582f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/W_.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 69.6 + hstem 435.2 89.6 + vstem 18.4 591.2 + + + + id + a0314ac0a182838a3e85b8d5c5f138f80c61ad36051266674bee15e8963cf1e032f440cc00ef6f1cb8814b9837256bb816edcbfe3c83b60d31050a8b012c863a + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/X_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/X_.glif new file mode 100644 index 000000000..c5a839500 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/X_.glif @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + vstem 12 386.4 + + + + id + 302f49f7d963a7ed73cf56217cdeaf8e54d5ebebb2fc3277e9236ab9752df3cc5fd538dc806d7a8a5bf8456259bab7ce8abcb474b1d74f4b15b3a1304f81ab4f + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif new file mode 100644 index 000000000..cc4191651 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + vstem 156.8 67.2 + + + + id + 624f27f90ce92213fb47357caa308e84be26c8abc083b6ddbf15dac75b7b35023f00e73a794c3a5c0dd11732860e0de09a672471ff33e54b4af028e69418e9d6 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/Z_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/Z_.glif new file mode 100644 index 000000000..3ae13db4b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/Z_.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 56.8 + hstem 468.8 56 + vstem 36 361.6 + + + + id + w539l360l397.60l397.656.8l118.456.8l395.2485.6l395.2524.8l60.8524.8l60.8468.8l312468.8l3640 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/a.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/a.glif new file mode 100644 index 000000000..b753f92ae --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/a.glif @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -9.6 52.8 + hstem 344 54.4 + vstem 41.6 64 + vstem 289.2 57.2 + + + + pointTag + hintRef0001 + stems + + hstem 21 -21 + hstem 344 54.4 + vstem 41.6 64 + vstem 289.2 57.2 + + + + pointTag + hintRef0002 + stems + + hstem 21 -21 + hstem 344 54.4 + vstem 41.6 64 + vstem 280 66.4 + + + + pointTag + hintRef0003 + stems + + hstem -9.6 52.8 + hstem 344 54.4 + vstem 41.6 64 + vstem 280 66.4 + + + + id + 386ce614a2624b1b76dc2d291227ea12a8a76dc8827715f5bce2ef15097b5fc8be2a5ba6be0e4d73a14f5a233e9ac69206dff25542d167f67a0a494efd6157b8 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/ampersand.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/ampersand.glif new file mode 100644 index 000000000..5ff5bfe41 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/ampersand.glif @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -9.6 52.8 + hstem 487.2 47.2 + vstem 25.6 64 + vstem 265.6 53.6 + + + + pointTag + hintRef0001 + stems + + hstem -9.6 52.8 + hstem 487.2 47.2 + vstem 94.4 56.8 + vstem 265.6 53.6 + + + + pointTag + hintRef0002 + stems + + hstem -9.6 52.8 + hstem 487.2 47.2 + vstem 25.6 64 + vstem 265.6 53.6 + + + + id + f40be25e5f969581a1e6775f80af432ab82ed296780571fce53af5348c3c9278f97a4fd69dcf7c03b04d86f6226ad745fc2e268a0a325c834f454cb0a197c633 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/asciicircum.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/asciicircum.glif new file mode 100644 index 000000000..7a75b451f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/asciicircum.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 474.4 61.6 + vstem 48 301.6 + + + + id + w497l48227.2l105.6227.2l157.6368l197.6474.4l200.8474.4l240368l292227.2l349.6227.2l228536l169.6536 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/asciitilde.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/asciitilde.glif new file mode 100644 index 000000000..be81f7efc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/asciitilde.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 205.6 49.6 + vstem 28.8 340 + + + + pointTag + hintRef0001 + stems + + hstem 272.8 49.6 + vstem 28.8 340 + + + + id + 8d64cd2010ded6013d1728c3bc7f11245505a02c7477e308dc15c397b3b3d9d85e16b87e472d7b895d16187a439a9baf6b36042a16b99ddc2b7f73ac136f4b34 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/asterisk.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/asterisk.glif new file mode 100644 index 000000000..2a5454f03 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/asterisk.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 336 233.6 + vstem 143.6 46.4 + + + + id + d089f82cc7ee2ade0bc18e2aa8e059ca92aecdb08a3523fff997bc292d8fff1607cb042ecd4280fd28ed704bae3c20f4417bd6b4d59925cdec9650ac06e69403 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/at.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/at.glif new file mode 100644 index 000000000..5a3cf7d1a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/at.glif @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -124 44 + hstem 39.2 44.8 + hstem 298.4 45.6 + hstem 472.8 44 + vstem 40.8 48 + vstem 199.2 52.8 + vstem 394.4 39.6 + vstem 590.4 46.4 + + + + pointTag + hintRef0001 + stems + + hstem -124 44 + hstem 45.6 44.8 + hstem 298.4 45.6 + hstem 472.8 44 + vstem 40.8 48 + vstem 199.2 52.8 + vstem 394.4 39.6 + vstem 590.4 46.4 + + + + pointTag + hintRef0002 + stems + + hstem -124 44 + hstem 39.2 44.8 + hstem 298.4 45.6 + hstem 472.8 44 + vstem 40.8 48 + vstem 199.2 52.8 + vstem 394.4 39.6 + vstem 590.4 46.4 + + + + pointTag + hintRef0003 + stems + + hstem -124 44 + hstem 45.6 44.8 + hstem 298.4 45.6 + hstem 472.8 44 + vstem 40.8 48 + vstem 199.2 52.8 + vstem 394.4 39.6 + vstem 590.4 46.4 + + + + id + cc847c872f01b2e284623f30fcf2c55f654edf8cb03546098d6dd3e6e870e712ee6e0d33e9f614702bd1b00c73337ef9fb56d9fc06e75317207e951dc19bf88c + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/b.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/b.glif new file mode 100644 index 000000000..094978125 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/b.glif @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -9.6 55.2 + hstem 343.2 55.2 + vstem 65.6 65.6 + vstem 337.6 68 + + + + pointTag + hintRef0001 + stems + + hstem 21 -21 + hstem 343.2 55.2 + vstem 65.6 65.6 + vstem 337.6 68 + + + + pointTag + hintRef0002 + stems + + hstem 21 -21 + hstem 343.2 55.2 + vstem 65.6 55.6 + vstem 337.6 68 + + + + pointTag + hintRef0003 + stems + + hstem -9.6 55.2 + hstem 343.2 55.2 + vstem 65.6 65.6 + vstem 337.6 68 + + + + id + 2af7bba273d2a071e1f042bbc859d4d2c413bff23d596195ef1d542ca8a1a39dc2b90f4744505709df272e51052e7ae9e596fca2d59d09487f9dceec7e43a550 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/backslash.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/backslash.glif new file mode 100644 index 000000000..1cfe15568 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/backslash.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -128 696 + vstem 11.2 260.8 + + + + id + w350l224.8-128l272-128l58.4568l11.2568 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/bar.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/bar.glif new file mode 100644 index 000000000..a11640c64 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/bar.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -200 800 + vstem 73.6 46.4 + + + + id + w241l73.6-200l120-200l120600l73.6600 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/braceleft.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/braceleft.glif new file mode 100644 index 000000000..0a634b517 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/braceleft.glif @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -121.6 37.6 + hstem 201.6 41.6 + hstem 528.8 37.6 + vstem 88.8 53.6 + + + + pointTag + hintRef0001 + stems + + hstem -121.6 37.6 + hstem 201.6 41.6 + hstem 528.8 37.6 + vstem 27.2 72 + + + + pointTag + hintRef0002 + stems + + hstem -121.6 37.6 + hstem 201.6 41.6 + hstem 528.8 37.6 + vstem 88.8 53.6 + + + + pointTag + hintRef0003 + stems + + hstem -121.6 37.6 + hstem 201.6 41.6 + hstem 528.8 37.6 + vstem 27.2 72 + + + + pointTag + hintRef0004 + stems + + hstem -121.6 37.6 + hstem 201.6 41.6 + hstem 528.8 37.6 + vstem 88.8 53.6 + + + + id + 7a370cd41e87a1c14014cb7e77c53cf1e9850ac20a8cb525d9868b325116079fcf99c097a0aed3a74b0116136a9078293421d158c20e47a2c00a3c6402d6401c + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/braceright.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/braceright.glif new file mode 100644 index 000000000..10e4d0607 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/braceright.glif @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -121.6 37.6 + hstem 201.6 41.6 + hstem 528.8 37.6 + vstem 100 53.6 + + + + pointTag + hintRef0001 + stems + + hstem -121.6 37.6 + hstem 201.6 41.6 + hstem 528.8 37.6 + vstem 96 50.4 + + + + pointTag + hintRef0002 + stems + + hstem -121.6 37.6 + hstem 201.6 41.6 + hstem 528.8 37.6 + vstem 143.2 72 + + + + pointTag + hintRef0003 + stems + + hstem -121.6 37.6 + hstem 201.6 41.6 + hstem 528.8 37.6 + vstem 96 50.4 + + + + pointTag + hintRef0004 + stems + + hstem -121.6 37.6 + hstem 201.6 41.6 + hstem 528.8 37.6 + vstem 96 50.4 + + + + pointTag + hintRef0005 + stems + + hstem -121.6 37.6 + hstem 201.6 41.6 + hstem 528.8 37.6 + vstem 100 53.6 + + + + id + c1a63810c7164b725b26f91e8d8653986e7d0edf9d9e587cbada4e7f81326ea32a257cd955fe83c8339bbcf1d1e145adf728b29f153e205682fb8724ce3e030b + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/bracketleft.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/bracketleft.glif new file mode 100644 index 000000000..1cb7f2b20 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/bracketleft.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -121.6 37.6 + hstem 528.8 37.6 + vstem 75.2 49.6 + + + + id + w303l75.2-121.6l218.4-121.6l218.4-84l124.8-84l124.8528.8l218.4528.8l218.4566.4l75.2566.4 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/bracketright.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/bracketright.glif new file mode 100644 index 000000000..ff42d91b0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/bracketright.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -121.6 37.6 + hstem 528.8 37.6 + vstem 117.6 49.6 + + + + id + w303l24.8-121.6l167.2-121.6l167.2566.4l24.8566.4l24.8528.8l117.6528.8l117.6-84l24.8-84 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/c.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/c.glif new file mode 100644 index 000000000..f00725500 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/c.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -9.6 54.4 + hstem 344 54.4 + vstem 36.8 68 + + + + id + db664529b007ac18a05bf024e4bd6a9128c066130e763221ed0e846e825f45516722cec090edb831de505689571dfc09bd8357a2b0a7de406eb3868672fd7371 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/colon.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/colon.glif new file mode 100644 index 000000000..5f5390120 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/colon.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 13.32 -21 + hstem 281.12 80.64 + vstem 41.6 76.16 + + + + pointTag + hintRef0001 + stems + + hstem -7.68 80.64 + hstem 281.12 80.64 + vstem 41.6 76.16 + + + + id + f8d03642fec6ba10a59a18d3a1a967dbce0a5372702b035ecbe7839a7aea8590b61fef5011dac13fc6ebda656c279573cf21b508157569e6ce2cc6fade01d189 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/comma.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/comma.glif new file mode 100644 index 000000000..085940f59 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/comma.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -0.8 92 + vstem 109.6 48.8 + + + + pointTag + hintRef0001 + stems + + hstem -0.8 92 + vstem 54.4 104 + + + + pointTag + hintRef0002 + stems + + hstem 60.8 30.4 + vstem 54.4 104 + + + + pointTag + hintRef0003 + stems + + hstem -0.8 92 + vstem 109.6 48.8 + + + + id + 8ef681b43cb27bf043e88a36c439dd66c0bc2fdf3db05cc38f0134e138747e3075f243b5e15f700c385356901c7c4e3daebcc6d1b704b8128b6a56457a66bb71 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist new file mode 100644 index 000000000..5b0977d56 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist @@ -0,0 +1,188 @@ + + + + + A + A_.glif + B + B_.glif + C + C_.glif + D + D_.glif + E + E_.glif + F + F_.glif + G + G_.glif + H + H_.glif + I + I_.glif + J + J_.glif + K + K_.glif + L + L_.glif + M + M_.glif + N + N_.glif + O + O_.glif + P + P_.glif + Q + Q_.glif + R + R_.glif + S + S_.glif + T + T_.glif + U + U_.glif + V + V_.glif + W + W_.glif + X + X_.glif + Y + Y_.glif + Z + Z_.glif + a + a.glif + ampersand + ampersand.glif + asciicircum + asciicircum.glif + asciitilde + asciitilde.glif + asterisk + asterisk.glif + at + at.glif + b + b.glif + backslash + backslash.glif + bar + bar.glif + braceleft + braceleft.glif + braceright + braceright.glif + bracketleft + bracketleft.glif + bracketright + bracketright.glif + c + c.glif + colon + colon.glif + comma + comma.glif + d + d.glif + dollar + dollar.glif + e + e.glif + eight + eight.glif + exclam + exclam.glif + f + f.glif + five + five.glif + four + four.glif + g + g.glif + greater + greater.glif + h + h.glif + hyphen + hyphen.glif + i + i.glif + j + j.glif + k + k.glif + l + l.glif + less + less.glif + m + m.glif + n + n.glif + nine + nine.glif + numbersign + numbersign.glif + o + o.glif + one + one.glif + p + p.glif + parenleft + parenleft.glif + parenright + parenright.glif + period + period.glif + plus + plus.glif + q + q.glif + question + question.glif + quotedbl + quotedbl.glif + quotesingle + quotesingle.glif + r + r.glif + s + s.glif + semicolon + semicolon.glif + seven + seven.glif + six + six.glif + slash + slash.glif + t + t.glif + three + three.glif + two + two.glif + u + u.glif + underscore + underscore.glif + v + v.glif + w + w.glif + x + x.glif + y + y.glif + z + z.glif + zero + zero.glif + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/d.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/d.glif new file mode 100644 index 000000000..664c5852c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/d.glif @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -9.6 55.2 + hstem 343.2 55.2 + vstem 37.6 68 + vstem 321.2 57.2 + + + + pointTag + hintRef0001 + stems + + hstem 21 -21 + hstem 343.2 55.2 + vstem 37.6 68 + vstem 321.2 57.2 + + + + pointTag + hintRef0002 + stems + + hstem 21 -21 + hstem 343.2 55.2 + vstem 37.6 68 + vstem 312 66.4 + + + + pointTag + hintRef0003 + stems + + hstem -9.6 55.2 + hstem 343.2 55.2 + vstem 37.6 68 + vstem 312 66.4 + + + + id + 26feaeec610e26c6c0c62536479a68ac9e93f98bf13cb6deaaf0256c1e938f2a6ffb7a51db980371555964d08f22c667f72deb756c840928acbbd37f3b959db3 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/dollar.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/dollar.glif new file mode 100644 index 000000000..bf06130eb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/dollar.glif @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -9.6 23.2 + hstem 464.8 55.2 + vstem 61.6 64.8 + vstem 177.6 48 + vstem 284.8 64.8 + + + + pointTag + hintRef0001 + stems + + hstem -9.6 54.4 + hstem 495.2 24.8 + vstem 61.6 64.8 + vstem 177.6 48 + vstem 284.8 64.8 + + + + pointTag + hintRef0002 + stems + + hstem -9.6 23.2 + hstem 495.2 24.8 + vstem 61.6 64.8 + vstem 177.6 48 + vstem 284.8 64.8 + + + + id + 7e579a1c379e0aff950697cf8818af085d592c02c2039329b784301f8816ad2990fb0055927b97035fd682e9d652c4e0d2b1190e9d6df3b7462a89d1a1b1a5dd + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/e.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/e.glif new file mode 100644 index 000000000..615c82466 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/e.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -9.6 52.8 + hstem 178.4 47.2 + hstem 346.4 52 + vstem 36.8 64.8 + vstem 308.8 57.6 + + + + pointTag + hintRef0001 + stems + + hstem -9.6 52.8 + hstem 178.4 47.2 + hstem 346.4 52 + vstem 36.8 64 + vstem 308.8 57.6 + + + + id + 0656836ae31412e1917c7e0f35ac21496b6ca2813e74ccdd2eb4b57a3e66a5f7c0a70a1c60cb6f5179679a12349eff50fc3486a8425065328c08bed6a1ed17d0 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/eight.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/eight.glif new file mode 100644 index 000000000..663bf5942 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/eight.glif @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -9.6 48.8 + hstem 471.2 48.8 + vstem 32.8 59.2 + vstem 301.6 63.2 + + + + pointTag + hintRef0001 + stems + + hstem -9.6 48.8 + hstem 471.2 48.8 + vstem 57.6 60.8 + vstem 289.6 56.8 + + + + pointTag + hintRef0002 + stems + + hstem -9.6 48.8 + hstem 471.2 48.8 + vstem 32.8 59.2 + vstem 301.6 63.2 + + + + pointTag + hintRef0003 + stems + + hstem -9.6 48.8 + hstem 471.2 48.8 + vstem 57.6 60.8 + vstem 289.6 56.8 + + + + pointTag + hintRef0004 + stems + + hstem -9.6 48.8 + hstem 471.2 48.8 + vstem 32.8 59.2 + vstem 301.6 63.2 + + + + id + 6d2c59cb003d79b09ce33f1b6133c4585db489dcb0ea7dd1fc191b91a4bf2f4ba537397839ea7fac388506030608f46ec6df9e55a98de288f5d944cae0bf1a3f + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/exclam.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/exclam.glif new file mode 100644 index 000000000..12896a6ab --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/exclam.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -9.6 100.8 + vstem 88.4 54.4 + + + + pointTag + hintRef0001 + stems + + hstem 11.4 -21 + vstem 68 95.2 + + + + pointTag + hintRef0002 + stems + + hstem -9.6 100.8 + vstem 68 95.2 + + + + id + b3b2463cd9199ac504477beee1b3bdf0554dcc9cbd989a814540e58da7adac3bfb72c811c2d523b86e40358283269b04225d7726cc4e17458b6f0790371c24f3 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/f.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/f.glif new file mode 100644 index 000000000..c9c74ab4b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/f.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 335.2 53.6 + hstem 525.6 53.6 + vstem 76.8 65.6 + + + + pointTag + hintRef0001 + stems + + hstem 21 -21 + hstem 335.2 53.6 + hstem 525.6 53.6 + vstem 24 118.4 + + + + pointTag + hintRef0002 + stems + + hstem 21 -21 + hstem 335.2 53.6 + hstem 525.6 53.6 + vstem 76.8 148 + + + + pointTag + hintRef0003 + stems + + hstem 21 -21 + hstem 335.2 53.6 + hstem 525.6 53.6 + vstem 24 118.4 + + + + id + bd31828ea4370f91e6f129f66557bb4be0b639ec1d3a1aa34e42235a14ed9149c08d59fffdf75235b2a8fb1cfdbb7385a2d26bcedb442eb9d997e350825a12cc + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/five.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/five.glif new file mode 100644 index 000000000..88d16f09a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/five.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -9.6 54.4 + hstem 273.6 49.6 + hstem 453.6 56.8 + vstem 70 59.2 + vstem 292.8 66.4 + + + + id + dc27f05a74ffb9160e29be2c2a64d122f7540730c2ff10bade9785e53e052c6a789384e26eb1ccec9dc913e17f17084278c4f6aaec1c5e4bbcf9aa5eef61ceb0 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/four.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/four.glif new file mode 100644 index 000000000..18970819f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/four.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 193.6 + hstem 440 70.4 + vstem 243.2 62.4 + + + + pointTag + hintRef0001 + stems + + hstem 140.8 52.8 + hstem 440 70.4 + vstem 243.2 132 + + + + pointTag + hintRef0002 + stems + + hstem 0 193.6 + vstem 243.2 62.4 + + + + id + ec3d7d2b4a7311cbdcb94fc541af52bea6f8904a7249cbee856bbcce958cd0ea74ad69677301041311075cbc684710ee8a31b41ba8455d8f5acaf5f75f343059 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/g.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/g.glif new file mode 100644 index 000000000..f2732cc50 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/g.glif @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -179.2 45.6 + hstem -6.4 54.4 + hstem 123.2 44 + hstem 338.4 50.4 + vstem 58.4 55.2 + vstem 329.6 64 + + + + pointTag + hintRef0001 + stems + + hstem -179.2 45.6 + hstem -6.4 54.4 + hstem 123.2 44 + hstem 338.4 50.4 + vstem 50.4 64 + vstem 279.2 60 + + + + pointTag + hintRef0002 + stems + + hstem -179.2 45.6 + hstem 14.6 -21 + hstem 123.2 44 + hstem 338.4 50.4 + vstem 58.4 55.2 + vstem 279.2 60 + + + + pointTag + hintRef0003 + stems + + hstem -179.2 45.6 + hstem -6.4 54.4 + hstem 123.2 44 + hstem 338.4 50.4 + vstem 36 57.6 + vstem 279.2 60 + + + + pointTag + hintRef0004 + stems + + hstem -179.2 45.6 + hstem -6.4 54.4 + hstem 123.2 44 + hstem 350.4 48 + vstem 50.4 64 + vstem 279.2 60 + + + + pointTag + hintRef0005 + stems + + hstem -179.2 45.6 + hstem 21 -21 + hstem 123.2 44 + hstem 338.4 50.4 + vstem 36 57.6 + vstem 279.2 60 + + + + pointTag + hintRef0006 + stems + + hstem -179.2 45.6 + hstem -6.4 54.4 + hstem 123.2 44 + hstem 338.4 50.4 + vstem 50.4 64 + vstem 329.6 64 + + + + id + 77577a839f1d758a236ddc95268812e9bce02fa24270ae15f195048455d139230212d22283331de68f52f6b24d5b47036e689b48fe657b3f1fe83373f17282e0 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/greater.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/greater.glif new file mode 100644 index 000000000..cf52e16c7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/greater.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 104.8 321.6 + vstem 303.2 67.2 + + + + id + w497l27.2104.8l370.4239.2l370.4292l27.2426.4l27.2369.6l196307.2l303.2267.2l303.2264l196224l27.2161.6 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/h.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/h.glif new file mode 100644 index 000000000..e2a12611e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/h.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 341.6 56.8 + vstem 65.6 65.6 + vstem 311.2 65.6 + + + + id + 8676726262f8cd8c3a099f48a6235b1bf966d9c3a336f767d64560ff2610f3e2c6dea4b7633648568b1211bddf50bfa74c90531da3ddf5e07a6d11d16fa0b989 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/hyphen.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/hyphen.glif new file mode 100644 index 000000000..c21ea02a8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/hyphen.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 175.2 50.4 + vstem 32.8 184 + + + + id + w311l32.8175.2l216.8175.2l216.8225.6l32.8225.6 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/i.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/i.glif new file mode 100644 index 000000000..c015b2267 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/i.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 468.8 84.8 + vstem 65.6 65.6 + + + + pointTag + hintRef0001 + stems + + hstem 21 -21 + hstem 468.8 84.8 + vstem 53.6 91.2 + + + + id + 4b669743da44c9f259421e2caeed59228b6742c6cec2754da2a4c266ec93773553778508fd3a78e27824b433e8e92922218ccef698bbd5ccb5d81556f867f3c5 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/j.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/j.glif new file mode 100644 index 000000000..ccbdbc235 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/j.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -173.6 53.6 + hstem 468.8 84.8 + vstem 66.4 65.6 + + + + pointTag + hintRef0001 + stems + + hstem -173.6 53.6 + hstem 468.8 84.8 + vstem 54.4 90.4 + + + + id + 504c835cb57bcd2de1b6c5f88b8c60e6015849dc2b5ac7e04b99977d771d51a483f5a52777bb2fb34544d3e444a3b877312e5a9b99c01286c1568e55be0353e4 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/k.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/k.glif new file mode 100644 index 000000000..f90eac87c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/k.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + vstem 65.6 64.8 + + + + id + w495l65.60l130.40l130.4102.4l203.2187.2l316.80l388.80l240.8232.8l371.2388.8l298.4388.8l132.8184l130.4184l130.4569.6l65.6569.6 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/l.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/l.glif new file mode 100644 index 000000000..c995dd0be --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/l.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -9.6 54.4 + vstem 65.6 65.6 + + + + id + bc0d08dea858b8f74ac93c90fb9d9a0f6a157d35124083934c436ed3f64522d5a7f9c6005996e1bba1d155f7ea0fb5f207c9b47d5b976ade1c69839e638df0f1 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/less.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/less.glif new file mode 100644 index 000000000..d9a7ea042 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/less.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 104.8 321.6 + vstem 27.2 67.2 + + + + id + w497l370.4104.8l370.4161.6l201.6224l94.4264l94.4267.2l201.6307.2l370.4369.6l370.4426.4l27.2292l27.2239.2 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/m.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/m.glif new file mode 100644 index 000000000..1637f9255 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/m.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 341.6 56.8 + vstem 65.6 65.6 + vstem 301.6 65.6 + vstem 536.8 65.6 + + + + pointTag + hintRef0001 + stems + + hstem 21 -21 + hstem 341.6 56.8 + vstem 65.6 57.2 + vstem 301.6 65.6 + vstem 536.8 65.6 + + + + pointTag + hintRef0002 + stems + + hstem 21 -21 + hstem 341.6 56.8 + vstem 65.6 65.6 + vstem 301.6 65.6 + vstem 536.8 65.6 + + + + id + 73bbc010347fc98ff57871e66a401750651927b717031f2ebace27b173aed6bc33fe8728af37e148302c2a1c211738e4a9953ec392c4e5f2fc40e5a5e775c1c0 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/n.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/n.glif new file mode 100644 index 000000000..b7e509941 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/n.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 341.6 56.8 + vstem 65.6 65.6 + vstem 311.2 65.6 + + + + pointTag + hintRef0001 + stems + + hstem 21 -21 + hstem 341.6 56.8 + vstem 65.6 57.2 + vstem 311.2 65.6 + + + + pointTag + hintRef0002 + stems + + hstem 21 -21 + hstem 341.6 56.8 + vstem 65.6 65.6 + vstem 311.2 65.6 + + + + id + fc37e7e70c9d61592be5b339d89f8c81e5bb22f0079fbe0fe46ef32d3ad4356f2d0b95220745c6cd9ff7ccc115a2c69ada7ef4ca76979367451262e14ccc5c07 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/nine.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/nine.glif new file mode 100644 index 000000000..090f1e0ce --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/nine.glif @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -9.6 54.4 + hstem 198.4 49.6 + hstem 468 52 + vstem 32 61.6 + vstem 296.8 61.6 + + + + id + 3e1c712be5f3c4fa92fd658f8672aa56bd4c1ac5234ee85288b93e9809dd7e33443d955c9d6e30ec8012667fdd3d7a6e7531898f094cf30c2d0488e01ba695dd + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/numbersign.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/numbersign.glif new file mode 100644 index 000000000..82e7c9309 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/numbersign.glif @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 163.2 45.6 + hstem 327.2 46.4 + vstem 28 345.6 + + + + id + 146e952f7341bc3bf63638086ea9287ad7738d06539adaba783cb799fc84778df8f5038da18fb312ce67007ece8730bf604171d3b859f76c2a3b4b780b7d2f88 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/o.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/o.glif new file mode 100644 index 000000000..935189081 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/o.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -9.6 54.4 + hstem 344 54.4 + vstem 36.8 68 + vstem 328.8 68 + + + + id + fa1e7931edfa00092b3ff577a648c3821c41ac2238427a3f89483e34788ccd13ba371a69617e6a0ae5058c66f18c196011fba740c0b7d866c162a18e2b5eec63 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/one.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/one.glif new file mode 100644 index 000000000..3f2d85412 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/one.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 54.4 + hstem 430.4 80 + vstem 63.2 182.4 + + + + pointTag + hintRef0001 + stems + + hstem 0 54.4 + hstem 430.4 80 + vstem 180 171.2 + + + + pointTag + hintRef0002 + stems + + hstem 0 54.4 + hstem 430.4 80 + vstem 180 65.6 + + + + pointTag + hintRef0003 + stems + + hstem 0 54.4 + hstem 430.4 80 + vstem 63.2 182.4 + + + + id + w497l63.20l351.20l351.254.4l245.654.4l245.6510.4l195.2510.4167.2493.6133.6480.8c87.2472.8l87.2430.4l180430.4l18054.4l63.254.4 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/p.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/p.glif new file mode 100644 index 000000000..aee379cf1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/p.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -9.6 55.2 + hstem 343.2 55.2 + vstem 65.6 65.6 + vstem 337.6 68 + + + + pointTag + hintRef0001 + stems + + hstem -9.6 55.2 + hstem 343.2 55.2 + vstem 65.6 57.2 + vstem 337.6 68 + + + + pointTag + hintRef0002 + stems + + hstem -9.6 55.2 + hstem 343.2 55.2 + vstem 65.6 65.6 + vstem 337.6 68 + + + + id + 2435e621d77b2b671973ed177e8ea33286c57c460f4ceeb69ec70d907b6104dfd40786d90a3347d59f240f9ff86d7e8281d305db181256483beebd5ca7996178 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/parenleft.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/parenleft.glif new file mode 100644 index 000000000..61eb05e98 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/parenleft.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -140.8 726.4 + vstem 65.6 54.4 + + + + id + bf038f979d7b04a4e43b68ff38aacb5029f9d68769558a1d03b2b19e87a4695a45245d36e6a8e2776c6acce81e8b7451c4b0fb6ba3c7602508f5ff3a9fe85350 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/parenright.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/parenright.glif new file mode 100644 index 000000000..360ba91f9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/parenright.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -140.8 726.4 + vstem 122.4 54.4 + + + + id + d9438533ceb42866c6c68e562c24203a65fc2da4c96775ebc7d5a5d22f209ec113fd222727c4c033bba8f2d758b4c0bb39981c8d9a8979aff2607d6885c68511 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/period.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/period.glif new file mode 100644 index 000000000..d27fdb0ee --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/period.glif @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 11.4 -21 + vstem 52 95.2 + + + + pointTag + hintRef0001 + stems + + hstem -9.6 100.8 + vstem 52 95.2 + + + + id + w249c100-9.6125.6-9.6147.211.2c147.240147.270.4125.691.2c10091.273.691.25270.4c52405211.273.6-9.6 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/plus.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/plus.glif new file mode 100644 index 000000000..f4df7b192 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/plus.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 239.2 49.6 + vstem 172.8 52 + + + + id + 59339129101d66afb988bbe8af8488922c29bf7a401620bd308c9dba6c2a26f9de3e388dcd61da7901be10a71a2ccf5990f4f42575379308ca051f14fc943015 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/q.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/q.glif new file mode 100644 index 000000000..77ac50e5d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/q.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -9.6 55.2 + hstem 343.2 55.2 + vstem 37.6 68 + vstem 312 66.4 + + + + pointTag + hintRef0001 + stems + + hstem -9.6 55.2 + hstem 343.2 55.2 + vstem 37.6 68 + vstem 322.4 56 + + + + pointTag + hintRef0002 + stems + + hstem -9.6 55.2 + hstem 343.2 55.2 + vstem 37.6 68 + vstem 312 66.4 + + + + id + d385b4bc666e96ffb76686ab5fdf13445c97b69b7cd21654975eb8259d1897e88370deb39a50e782536ae7b8e206a2d72fe90949bc09295e397e7ccaafd24645 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/question.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/question.glif new file mode 100644 index 000000000..9c5aafce2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/question.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 11.4 -21 + hstem 491.2 54.4 + vstem 111.2 95.2 + vstem 237.6 64 + + + + pointTag + hintRef0001 + stems + + hstem -9.6 100.8 + hstem 491.2 54.4 + vstem 111.2 95.2 + vstem 237.6 64 + + + + id + 49599125cd026d3d4e2e03415b7fbd5fd8423f16c8a070eabd288c0a493592bcb1be120d9defd46c7461a61c8ad4d395d1521b3a06308b9723d4b0f53f2c3dd2 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/quotedbl.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/quotedbl.glif new file mode 100644 index 000000000..c8eab4b14 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/quotedbl.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 275.84 165.76 + vstem 52.16 54.4 + vstem 193.76 54.4 + + + + id + 6d0a3a22e779199843fae08643b46298b3257e4ae6650cd4ac53de255669797e1631bd1458e54b78073f84e96c3d07556c3b01cd998448bfa7aac7702c62fe16 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/quotesingle.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/quotesingle.glif new file mode 100644 index 000000000..3c570e812 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/quotesingle.glif @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 344.8 207.2 + vstem 65.2 68 + + + + id + w249l79.2344.8l119.2344.8l132478.4l134.4552l64552l66.4478.4 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/r.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/r.glif new file mode 100644 index 000000000..a9c9fe36e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/r.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 339.2 59.2 + vstem 65.6 65.6 + + + + pointTag + hintRef0001 + stems + + hstem 21 -21 + hstem 339.2 59.2 + vstem 65.6 57.2 + + + + pointTag + hintRef0002 + stems + + hstem 21 -21 + hstem 339.2 59.2 + vstem 65.6 65.6 + + + + id + a1a3e5a249002aa4bcaec78e105a21dd121036f678d74ffab2e9b4417ef4f8462cb1c77beff938bcfa2768f4b605657833238878d069947ee08017ccfc6040a2 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/s.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/s.glif new file mode 100644 index 000000000..e20967cf0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/s.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -9.6 51.2 + hstem 347.2 51.2 + vstem 41.6 63.2 + vstem 246.4 63.2 + + + + id + 07429097280e6acf87d50ddf8096e1b39fd29333c05d37c8ac6bb1c73ac6fecc5e84dfab8b4ae917a633a73207bc4f38a75521c3fa228c551717b53fd13db0c9 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/semicolon.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/semicolon.glif new file mode 100644 index 000000000..97a2930bb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/semicolon.glif @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -0.64 73.6 + hstem 281.12 80.64 + vstem 41.6 76.16 + + + + pointTag + hintRef0001 + stems + + hstem -0.64 73.6 + hstem 281.12 80.64 + vstem 87.68 39.04 + + + + pointTag + hintRef0002 + stems + + hstem -0.64 73.6 + hstem 281.12 80.64 + vstem 43.52 83.2 + + + + pointTag + hintRef0003 + stems + + hstem 48.64 24.32 + hstem 281.12 80.64 + vstem 84.8 41.92 + + + + pointTag + hintRef0004 + stems + + hstem -0.64 73.6 + hstem 281.12 80.64 + vstem 87.68 39.04 + + + + id + 9ac63e1d8304df6b4a7907505eb57f13975b9d4bf0a5aeb3749933e35e34ffe9b719ac31baeb7fc9b06b0863fb0046d31c6173c5e791caf0f1d7480c2019ffe8 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/seven.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/seven.glif new file mode 100644 index 000000000..e601ed3fe --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/seven.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 453.6 56.8 + vstem 141.6 68 + + + + id + w497c141.60l209.60218.4199.2243.2315.2c364469.6l364510.4l35.2510.4l35.2453.6l289.6453.6188.8313.6150.4192 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/six.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/six.glif new file mode 100644 index 000000000..484230dec --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/six.glif @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -9.6 52 + hstem 262.4 49.6 + hstem 464.8 55.2 + vstem 38.4 62.4 + vstem 303.2 62.4 + + + + id + dcca911fea68b6824846b51739738f41b862e0a83b2e5f80bf519a096a3a868311e94d69725ae6e82d741c8870f0b6e6a808fd353c29b6ff95dd0e9cd355345a + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/slash.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/slash.glif new file mode 100644 index 000000000..3805679d9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/slash.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -128 696 + vstem 8 261.6 + + + + id + w350l8-128l56-128l269.6568l221.6568 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/t.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/t.glif new file mode 100644 index 000000000..4ab7c59fa --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/t.glif @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -9.6 53.6 + hstem 335.2 162.4 + vstem 76.8 66.4 + + + + pointTag + hintRef0001 + stems + + hstem -9.6 53.6 + hstem 335.2 53.6 + vstem 76.8 66.4 + + + + pointTag + hintRef0002 + stems + + hstem -9.6 53.6 + hstem 335.2 162.4 + vstem 76.8 66.4 + + + + pointTag + hintRef0003 + stems + + hstem -9.6 53.6 + hstem 335.2 162.4 + vstem 84 59.2 + + + + pointTag + hintRef0004 + stems + + hstem -9.6 53.6 + hstem 335.2 51.6 + vstem 76.8 66.4 + + + + pointTag + hintRef0005 + stems + + hstem -9.6 53.6 + hstem 335.2 162.4 + vstem 76.8 66.4 + + + + id + ee9277d462d3b83b81274a11a19844a44731a3aa04c7a1e1a9f3857c829a1adf136391a1c49463ae976bb1177bb0380a9955d450f3a3e4820583bc2d10f41a31 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/three.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/three.glif new file mode 100644 index 000000000..9f0d8a87a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/three.glif @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -9.6 54.4 + hstem 240 50.4 + hstem 466.4 53.6 + vstem 127.2 119.2 + vstem 290.4 66.4 + + + + pointTag + hintRef0001 + stems + + hstem -9.6 54.4 + hstem 240 50.4 + hstem 466.4 53.6 + vstem 272 67.2 + + + + pointTag + hintRef0002 + stems + + hstem -9.6 54.4 + hstem 240 50.4 + hstem 466.4 53.6 + vstem 127.2 119.2 + vstem 290.4 66.4 + + + + id + 78b7ce32e8da3ae4dc27ca43041a8711546c909712fe109437442357b4868c3327bf88ae991987c4751101cfdaf2e4ad95a007a9e5d87690497ba11514bd369c + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/two.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/two.glif new file mode 100644 index 000000000..9c941114f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/two.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 56.8 + hstem 466.4 53.6 + vstem 272 64 + + + + id + f99f560b8c1c696139f1f19e9d683085b7c32f3ba977e9d6cf74d642c1369960b2f4ca5adc404428b8717716343f91f98c8440b80984fe86c7f9b0ecd68de70a + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/u.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/u.glif new file mode 100644 index 000000000..5ebd9c9c9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/u.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -9.6 56.8 + vstem 60 66.4 + vstem 312.4 57.2 + + + + pointTag + hintRef0001 + stems + + hstem 21 -21 + vstem 60 66.4 + vstem 312.4 57.2 + + + + pointTag + hintRef0002 + stems + + hstem 21 -21 + vstem 60 66.4 + vstem 304 65.6 + + + + pointTag + hintRef0003 + stems + + hstem -9.6 56.8 + vstem 60 66.4 + vstem 304 65.6 + + + + id + 1a4882fe7d2895d1637eb3c31d4b885e08807e8fa32eff863a8d1cec1ecad8097f62e82ae94369d6e124017c33eca59c7f015e63cc5d46cba8a2243e174214fc + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/underscore.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/underscore.glif new file mode 100644 index 000000000..98718be7d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/underscore.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -100.8 44 + vstem 9.6 380.8 + + + + id + w500l9.6-100.8l390.4-100.8l390.4-56.8l9.6-56.8 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/v.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/v.glif new file mode 100644 index 000000000..c22edd0de --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/v.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 53.6 + vstem 9.6 354.4 + + + + id + cb876f845d8da46752e5f9350bf58325452393711638ea397ebbddaf642db78d7ed7183bbd309627d2bdf85a8cc8a9d4115fe00d14616748bd8e798446dd8d05 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/w.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/w.glif new file mode 100644 index 000000000..e1c0c1a49 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/w.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 56 + hstem 320.8 68 + vstem 19.2 536 + + + + id + eb907dde06fc69cf3861b0bf5ce7561e18cc7d9903daffde7e18cc0fb2b7b9b753ce1df486ffa1ce578dddf9d492a6fc5b00133964a03d2e7ebf7bf887b5e62a + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/x.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/x.glif new file mode 100644 index 000000000..1842cb20f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/x.glif @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + vstem 11.2 334.4 + + + + id + a4b008c460dd4ca97d39d625fff28145570404b583c5be93804bccde7740fda1a82405ca794edb1b37dbd99ff40c89eb314d4668a61203813b6d1b8262f5c00f + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/y.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/y.glif new file mode 100644 index 000000000..c8948fa6f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/y.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -167.2 54.4 + vstem 9.6 354.4 + + + + id + f73b4b4ab2c5cd11ffc676a11f576a8c4d67309b297382825ce0125ddfe59bef3eb72a1da9915f6cb17cc70b5406bef2b43f273fa2882cd54fad8d98adb954dc + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/z.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/z.glif new file mode 100644 index 000000000..74b8c3f02 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/z.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 53.6 + hstem 335.2 53.6 + vstem 24.8 294.4 + + + + id + w425l24.80l319.20l319.253.6l10853.6l312.8353.6l312.8388.8l47.2388.8l47.2335.2l229.6335.2l24.835.2 + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/zero.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/zero.glif new file mode 100644 index 000000000..201e04af3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs.com.adobe.type.processedglyphs/zero.glif @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -9.6 52.8 + hstem 467.2 52.8 + vstem 35.2 64 + vstem 298.4 64 + + + + id + 84a463e49d24685133f23db14a4933f07dd51748a7216dab779eff0e03ec4a4dc351d38ce74d578987e3a399355dbc5412a02735c4273da8d0f9337f76b4e4eb + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/A_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/A_.glif new file mode 100644 index 000000000..d121e51a6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/A_.glif @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/B_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/B_.glif new file mode 100644 index 000000000..faf547f04 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/B_.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/C_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/C_.glif new file mode 100644 index 000000000..b8ce02b07 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/C_.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/D_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/D_.glif new file mode 100644 index 000000000..0fba6c3f5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/D_.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/E_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/E_.glif new file mode 100644 index 000000000..bb5261f3b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/E_.glif @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/F_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/F_.glif new file mode 100644 index 000000000..cd60cbdd8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/F_.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/G_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/G_.glif new file mode 100644 index 000000000..1c36e7f28 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/G_.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/H_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/H_.glif new file mode 100644 index 000000000..d70c6344e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/H_.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/I_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/I_.glif new file mode 100644 index 000000000..ce818a204 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/I_.glif @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/J_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/J_.glif new file mode 100644 index 000000000..b650f6aa4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/J_.glif @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/K_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/K_.glif new file mode 100644 index 000000000..a2275f462 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/K_.glif @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/L_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/L_.glif new file mode 100644 index 000000000..9088d6dfa --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/L_.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/M_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/M_.glif new file mode 100644 index 000000000..36cc781fe --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/M_.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/N_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/N_.glif new file mode 100644 index 000000000..cf43a3ed6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/N_.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/O_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/O_.glif new file mode 100644 index 000000000..55951cffa --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/O_.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/P_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/P_.glif new file mode 100644 index 000000000..84a810f4b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/P_.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/Q_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/Q_.glif new file mode 100644 index 000000000..3ed4a1c45 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/Q_.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/R_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/R_.glif new file mode 100644 index 000000000..8e5e2f17c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/R_.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/S_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/S_.glif new file mode 100644 index 000000000..ab78516e5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/S_.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/T_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/T_.glif new file mode 100644 index 000000000..9367558f5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/T_.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/U_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/U_.glif new file mode 100644 index 000000000..94d082e72 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/U_.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/V_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/V_.glif new file mode 100644 index 000000000..6bfb1498d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/V_.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/W_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/W_.glif new file mode 100644 index 000000000..95a0b80eb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/W_.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/X_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/X_.glif new file mode 100644 index 000000000..56a66f7b0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/X_.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/Y_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/Y_.glif new file mode 100644 index 000000000..278cb9eae --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/Y_.glif @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/Z_.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/Z_.glif new file mode 100644 index 000000000..e1ef236c1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/Z_.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/a.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/a.glif new file mode 100644 index 000000000..b95b46c5a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/a.glif @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/ampersand.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/ampersand.glif new file mode 100644 index 000000000..3eb70df5e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/ampersand.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/asciicircum.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/asciicircum.glif new file mode 100644 index 000000000..a76befe74 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/asciicircum.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/asciitilde.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/asciitilde.glif new file mode 100644 index 000000000..2218a11e5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/asciitilde.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/asterisk.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/asterisk.glif new file mode 100644 index 000000000..f072b2788 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/asterisk.glif @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/at.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/at.glif new file mode 100644 index 000000000..afcb717f0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/at.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/b.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/b.glif new file mode 100644 index 000000000..cbaf90c51 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/b.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/backslash.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/backslash.glif new file mode 100644 index 000000000..c56719b66 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/backslash.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/bar.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/bar.glif new file mode 100644 index 000000000..a73a9c60d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/bar.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/braceleft.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/braceleft.glif new file mode 100644 index 000000000..734a1825d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/braceleft.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/braceright.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/braceright.glif new file mode 100644 index 000000000..f9913483b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/braceright.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/bracketleft.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/bracketleft.glif new file mode 100644 index 000000000..1c4923c31 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/bracketleft.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/bracketright.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/bracketright.glif new file mode 100644 index 000000000..51d7ad360 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/bracketright.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/c.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/c.glif new file mode 100644 index 000000000..da7113d4f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/c.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/colon.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/colon.glif new file mode 100644 index 000000000..8d1c1dde1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/colon.glif @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/comma.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/comma.glif new file mode 100644 index 000000000..4a34fd632 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/comma.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/contents.plist b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/contents.plist new file mode 100644 index 000000000..c5fb1c6d1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/contents.plist @@ -0,0 +1,190 @@ + + + + + A + A_.glif + B + B_.glif + C + C_.glif + D + D_.glif + E + E_.glif + F + F_.glif + G + G_.glif + H + H_.glif + I + I_.glif + J + J_.glif + K + K_.glif + L + L_.glif + M + M_.glif + N + N_.glif + O + O_.glif + P + P_.glif + Q + Q_.glif + R + R_.glif + S + S_.glif + T + T_.glif + U + U_.glif + V + V_.glif + W + W_.glif + X + X_.glif + Y + Y_.glif + Z + Z_.glif + a + a.glif + ampersand + ampersand.glif + asciicircum + asciicircum.glif + asciitilde + asciitilde.glif + asterisk + asterisk.glif + at + at.glif + b + b.glif + backslash + backslash.glif + bar + bar.glif + braceleft + braceleft.glif + braceright + braceright.glif + bracketleft + bracketleft.glif + bracketright + bracketright.glif + c + c.glif + colon + colon.glif + comma + comma.glif + d + d.glif + dollar + dollar.glif + e + e.glif + eight + eight.glif + exclam + exclam.glif + f + f.glif + five + five.glif + four + four.glif + g + g.glif + greater + greater.glif + h + h.glif + hyphen + hyphen.glif + i + i.glif + j + j.glif + k + k.glif + l + l.glif + less + less.glif + m + m.glif + n + n.glif + nine + nine.glif + numbersign + numbersign.glif + o + o.glif + one + one.glif + p + p.glif + parenleft + parenleft.glif + parenright + parenright.glif + period + period.glif + plus + plus.glif + q + q.glif + question + question.glif + quotedbl + quotedbl.glif + quotesingle + quotesingle.glif + r + r.glif + s + s.glif + semicolon + semicolon.glif + seven + seven.glif + six + six.glif + slash + slash.glif + space + space.glif + t + t.glif + three + three.glif + two + two.glif + u + u.glif + underscore + underscore.glif + v + v.glif + w + w.glif + x + x.glif + y + y.glif + z + z.glif + zero + zero.glif + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/d.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/d.glif new file mode 100644 index 000000000..5b88faa9b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/d.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/dollar.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/dollar.glif new file mode 100644 index 000000000..2530d2d9c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/dollar.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/e.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/e.glif new file mode 100644 index 000000000..056f06737 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/e.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/eight.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/eight.glif new file mode 100644 index 000000000..976ecc14f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/eight.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/exclam.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/exclam.glif new file mode 100644 index 000000000..b9273a9ef --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/exclam.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/f.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/f.glif new file mode 100644 index 000000000..233cfe756 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/f.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/five.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/five.glif new file mode 100644 index 000000000..a948cac31 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/five.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/four.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/four.glif new file mode 100644 index 000000000..c018fe802 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/four.glif @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/g.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/g.glif new file mode 100644 index 000000000..fd406102b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/g.glif @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/greater.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/greater.glif new file mode 100644 index 000000000..a906d4b8d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/greater.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/h.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/h.glif new file mode 100644 index 000000000..bcd4e1c27 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/h.glif @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/hyphen.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/hyphen.glif new file mode 100644 index 000000000..9c9c0917d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/hyphen.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/i.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/i.glif new file mode 100644 index 000000000..e7ce41530 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/i.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/j.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/j.glif new file mode 100644 index 000000000..56dc434b0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/j.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/k.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/k.glif new file mode 100644 index 000000000..047be3333 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/k.glif @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/l.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/l.glif new file mode 100644 index 000000000..95fd4cbcb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/l.glif @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/layerinfo.plist b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/layerinfo.plist new file mode 100644 index 000000000..1e96c942b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/layerinfo.plist @@ -0,0 +1,5 @@ + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/less.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/less.glif new file mode 100644 index 000000000..50651e8b1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/less.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/m.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/m.glif new file mode 100644 index 000000000..86766cf1f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/m.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/n.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/n.glif new file mode 100644 index 000000000..b804988eb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/n.glif @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/nine.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/nine.glif new file mode 100644 index 000000000..76946ab99 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/nine.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/numbersign.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/numbersign.glif new file mode 100644 index 000000000..b1e8d4470 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/numbersign.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/o.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/o.glif new file mode 100644 index 000000000..418a1e719 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/o.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/one.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/one.glif new file mode 100644 index 000000000..7a99c52f5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/one.glif @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/p.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/p.glif new file mode 100644 index 000000000..72e5d89f3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/p.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/parenleft.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/parenleft.glif new file mode 100644 index 000000000..927b6dfb7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/parenleft.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/parenright.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/parenright.glif new file mode 100644 index 000000000..02ab2f105 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/parenright.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/period.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/period.glif new file mode 100644 index 000000000..b9abb0579 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/period.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/plus.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/plus.glif new file mode 100644 index 000000000..5840a2c57 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/plus.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/q.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/q.glif new file mode 100644 index 000000000..9f10a078b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/q.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/question.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/question.glif new file mode 100644 index 000000000..32b034ef9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/question.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/quotedbl.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/quotedbl.glif new file mode 100644 index 000000000..8596629de --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/quotedbl.glif @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/quotesingle.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/quotesingle.glif new file mode 100644 index 000000000..8f1e46377 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/quotesingle.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/r.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/r.glif new file mode 100644 index 000000000..fdc085bdd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/r.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/s.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/s.glif new file mode 100644 index 000000000..1ed23f176 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/s.glif @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/semicolon.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/semicolon.glif new file mode 100644 index 000000000..7557e243d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/semicolon.glif @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/seven.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/seven.glif new file mode 100644 index 000000000..0411167d2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/seven.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/six.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/six.glif new file mode 100644 index 000000000..3389017a0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/six.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/slash.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/slash.glif new file mode 100644 index 000000000..d1ecd941f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/slash.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/space.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/space.glif new file mode 100644 index 000000000..ac21dc0ea --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/space.glif @@ -0,0 +1,5 @@ + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/t.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/t.glif new file mode 100644 index 000000000..b72e3fbb6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/t.glif @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/three.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/three.glif new file mode 100644 index 000000000..b094e34dd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/three.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/two.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/two.glif new file mode 100644 index 000000000..e3be0fac3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/two.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/u.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/u.glif new file mode 100644 index 000000000..6b1420e08 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/u.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/underscore.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/underscore.glif new file mode 100644 index 000000000..efe21b733 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/underscore.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/v.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/v.glif new file mode 100644 index 000000000..7bf6438d6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/v.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/w.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/w.glif new file mode 100644 index 000000000..214fc6f49 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/w.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/x.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/x.glif new file mode 100644 index 000000000..eb73484bc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/x.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/y.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/y.glif new file mode 100644 index 000000000..6a2ebf669 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/y.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/z.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/z.glif new file mode 100644 index 000000000..2d9a0114d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/z.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/zero.glif b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/zero.glif new file mode 100644 index 000000000..ba102b96f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/glyphs/zero.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/layercontents.plist b/tests/otfautohint_data/input/dummy/decimals.ufo/layercontents.plist new file mode 100644 index 000000000..b07680883 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/layercontents.plist @@ -0,0 +1,14 @@ + + + + + + public.default + glyphs + + + com.adobe.type.processedglyphs + glyphs.com.adobe.type.processedglyphs + + + diff --git a/tests/otfautohint_data/input/dummy/decimals.ufo/metainfo.plist b/tests/otfautohint_data/input/dummy/decimals.ufo/metainfo.plist new file mode 100644 index 000000000..7b8b34ac6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/decimals.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + com.github.fonttools.ufoLib + formatVersion + 3 + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/data/com.adobe.type.processedHashMap b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/data/com.adobe.type.processedHashMap new file mode 100644 index 000000000..452553ab7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/data/com.adobe.type.processedHashMap @@ -0,0 +1,98 @@ +{ +'A': ['w600l320l1170l232367255440276512c297588l301588321512343440c366367l4800l5680l347656l253656l148200l449200l449267l148267', ['autohint']], +'B': ['c1a659f8bdabb30c497ef94300482ae44a02a43ad06133ec80b03f30ee51b2ea60fcbfa2b5fe8981d84b686506d3c3f3c83307e5ee80ad1e2e5fba5b3c1e2c2e', ['autohint']], +'C': ['f175041e7641af48e9354112ccc8f0bfb84843bf80bf6a92f058377c4132c3f2d65f256917d7d2d66b4c2e1da6f43d04c0fd2ef4023165f100113762e0b2c53f', ['autohint']], +'D': ['w600l870l25304460553122c553331553539446656c249656l87656l17068l170588l243588393588467496c46733146716539368c24368', ['autohint']], +'E': ['w600l1140l5300l53071l19871l198309l470309l470380l198380l198586l520586l520656l114656', ['autohint']], +'F': ['w600l1330l2170l217294l487294l487364l217364l217586l536586l536656l133656', ['autohint']], +'G': ['d73610e48f033186b1c85082a4b5adf81f9748d3ac1d2954f216c2de761694f5197bce041b2e71025e72a5aec7c19d83ece2ce90be4eb13265e1a77339104793', ['autohint']], +'H': ['w600l790l1630l163309l437309l4370l5210l521656l437656l437381l163381l163656l79656', ['autohint']], +'I': ['w600l950l5050l50571l34271l342586l505586l505656l95656l95586l258586l25871l9571', ['autohint']], +'J': ['w600c276-12439-1249388c493210l493657l135657l135587l410587l41021741010936861c274612236117089c133148l819712622203-12', ['autohint']], +'K': ['w600l980l1820l182209l556656l461656l185327l182327l182656l98656l4860l5800l334432l283366', ['autohint']], +'L': ['w600l1340l5410l54171l21671l216656l134656', ['autohint']], +'M': ['c28cb807c8b5808a1423fc6f792dcec2f431693173fd53b678d962a176d5ee42f11d4f93ad604b214f1e72a64000a80eaaf77d4c2f164cd88375a905cfab6b53', ['autohint']], +'N': ['74e3965f25e670e174d077ee093febe689a4601ee951ba76164d9e1276dadbd01cd9a9cd96ac1b0f3dc902df8a4acfb09ba2958cfade43d59f0b2e25c21526c8', ['autohint']], +'O': ['03891f26f004230f02cec75f367f460107d778a18e292fb45f98619a6a0c31e6e3a61d13440c94603e0c22e8da010bdc909b6b444d3311b9dd9034f9e52480db', ['autohint']], +'P': ['5f61823e6efba0709e8bcaed479d97cc8b4b3d66cf1071d432ea2ed8fc680ebc92db5f18a8bb4f161f8ea6d59c1025c0849dd8dc3e4ecfa84e62f939121dd322', ['autohint']], +'Q': ['ceaf0f38bd3086b64264d83457987a5efc7737a31367cd941f462bd1eb5a28d038208268e343172835570f90939aec7decbc2908f8019950097d2ac7c6fc4270', ['autohint']], +'R': ['b5ac4498a28beb96f5e7fb10a17e9497013560ecda22148896fd240d7bacc2f2ab6916b85951d93268a51ac6d09c6b77fab63538fac1ec0e5b0cc187879475f1', ['autohint']], +'S': ['1724915dc652c64aae38de96f4ebf3479f2fe1f18faa2d57430afc9502de2522545a32d1163fc292492925cd412377138af7c76ac901eed183992d3c54824abb', ['autohint']], +'T': ['w600l2580l3420l342586l558586l558656l42656l42586l258586', ['autohint']], +'U': ['w600c301-12429-1252160c521248l521656l440656l44024644011038061c3016122261163110c163246l163656l79656l792487960172-12', ['autohint']], +'V': ['w600l2520l3490l557656l472656l367302345224328162c30485l30085276162260224c237302l131656l43656', ['autohint']], +'W': ['0f0370dadd9b8633255f58a956487058c2b3055da58feab57904878373a935921c0d4d50dde7a4288cf236b323eac7d678f497d65921cfd4eb07d353178ba6cb', ['autohint']], +'X': ['4364e181d90665976be4ce98c4c37df3e0eebd8c53ab6414287e1827a9f31b70ff268791b8bf52d9f2121686b5a398208ff9145c32af2a52a7ff808ea94d8991', ['autohint']], +'Y': ['w600l2580l3420l342234l562656l476656l381462356411330361c304308l300308273361250411c225461l126656l38656l258234', ['autohint']], +'Z': ['w600l650l5390l53971l16771l534607l534657l97657l97587l431587l6550', ['autohint']], +'a': ['cbe04e8e713fe5aae516060eb43d25fc97a3898f6776b7aa66795ccdee099de5471687749ae73d57267be4ae0b4018faa6f079cd99d42d0adc741254d0812377', ['autohint']], +'ampersand': ['c572d65f3649efb510d33a7c3f972fa336d4187ea3312a947b1318257fdb58f87bc875430de182a46154aab2c77782f3a4eb42eb865ec165a68ec7eed3c50c4d', ['autohint']], +'asciicircum': ['w600l111284l183284l249460l298593l302593l351460l417284l489284l336670l264670', ['autohint']], +'asciitilde': ['5fcb94382d9b5cea789f6a2d29b5a9aee9c10615961a5d3e746f7163f97dab9d3bb1d3dfc2f6763c59bcc2264d7c23a5524fc791b299fc6e327da9481cb5aad4', ['autohint']], +'asterisk': ['w600l180111l300270l420111l462141l354306l516376l500422l333367l324556l276556l267367l100422l84376l246306l138141', ['autohint']], +'at': ['3624e896b755b3406bfe1c35edb6c8dd52878d9195fd155baf4d7c935fffd9c48d9fe9234adfa46a16db5238c20f5858cf388b6844fd8117296e8bfa705fc64b', ['autohint']], +'b': ['842415f0127bdb82e9e1421ad6c80cc1359451785c8f71a28e54d5476e3bee61e17045bbd890e3b0b08f382686c6b015f113d1a7a24dcaa1eabc09f0ff1f096c', ['autohint']], +'backslash': ['w600l427-160l501-160l173710l99710', ['autohint']], +'bar': ['w600l263-250l337-250l337750l263750', ['autohint']], +'braceleft': ['02bfb4240c08ccc820d952481ca67606a06859286daed1b458d886807870cec97321e8f5537d4d6c6e68c1fe04d25d3bf87e811b88162857cad16dafa885f715', ['autohint']], +'braceright': ['aae48ea61dbfcd1f63276d1a8289db0bd36e1144f58605429f35e356b684c326c34857668e833517752ba0a163f5e534b695fc51f782002fe82c5b382371f44c', ['autohint']], +'bracketleft': ['w600l225-152l502-152l502-105l291-105l291661l502661l502708l225708', ['autohint']], +'bracketright': ['w600l98-152l375-152l375708l98708l98661l309661l309-105l98-105', ['autohint']], +'c': ['e0e0adbd09a042e383df9d048e196b31f5d626a4c26355d66fc3ae0cee53a905fb39f4c6707e14997792e75014c25790f331d45038ce574a02d76e97997fcb86', ['autohint']], +'colon': ['1ef63e19cf268bf3a5d938f4ee7413b56b77afe0b85840cf9404d0cd887ea45894141d684408c93ce8f463644fdaca5b887de1517ce8fc43958bbaec7f11e73a', ['autohint']], +'comma': ['1fc5c4111eae07dc5d05b0f235cbe82d46affc3e12365a73ae71a918515dd2da52ab03c6d02149159bb9014bf48eadb8fb4dc8063c9fab4251538589a7785086', ['autohint']], +'d': ['a0f86281e580d74d508910f068dd63a6f3d7e3a7556e2542431bce223c9293789eb74e06b2cd23f3aa522a9cae23ac8ab4661954b1cd60feef6407d6ea97122a', ['autohint']], +'dollar': ['561de306b85f85ae68849435569bbc5dc4f65a9e7302b52b3c82e57c6cbc133df9d2da65cf05a66c6dcedf4a9cf466c09e94f5a6208fcaa3227f188cdefdf69e', ['autohint']], +'e': ['66f1d1da4c0a4eda43d42a712364b129cc682c92af87bdc38bf30ed3d4cf45bd9f7c7a48f03f1af5f8ccd15af5d2e8d944f6635aa8f87000e7c6d0fc4af73627', ['autohint']], +'eight': ['3edcc7a39cacc274efd3de7744a959a0e805246b1146b62058b0767e382647d37149f543da0ef99ade0d0204e2d8ac0677db73b49089628a0e5b46c8b8aa3303', ['autohint']], +'equal': ['w600l85406l515406l515468l85468l85192l515192l515254l85254', ['autohint']], +'exclam': ['w600l272232l328232l338576l340670l260670l262576c300-12340-1237318c37366373113340142c300142260142227113c2276622718260-12', ['autohint']], +'f': ['f11d83866fdc9cb639c84d62c749f6d298d9b5aef72d5fd9e2641b66e9ded92680f0d395625840160e1dc3c127ad2d38a4f4b0b4bc2c4a41f00f158abd475c5f', ['autohint']], +'five': ['fd8fd14d8f2dab416e3b37c5293ece4ee27049e03197a7135ba4c186892202b39307c89a6c3fd14933ac995603965a6928656757696bf683f4e6abea72baccde', ['autohint']], +'four': ['w600l3680l4460l446638l358638l39231l39176l545176l545242l130242l303460324491348522c368553l373553371518369475c368440', ['autohint']], +'g': ['c0a1ac707506e9a15af37ef9aadbf7fff110df090241aa18cf3e665d85a2e769c1a02816cea1d9c2d47b1ca58faaa27139991dd63c72e54573071c52936ec393', ['autohint']], +'grave': ['w600l321568l364609l222777l164721', ['autohint']], +'greater': ['w600l10748l480301l480363l107616l107537l408334l408330l107127', ['autohint']], +'h': ['d88d83825c963410efb2235c3303d61f85df6b998eddf63c5e38b8b103451ba27afd783feaa0de9b85e0440c52d908d456b383ff85cf6728a4374cb75adc1db8', ['autohint']], +'hashMapVersion': (1, 0), +'hyphen': ['w600l85299l515299l515361l85361', ['autohint']], +'i': ['w600l3160l3980l398486l90486l90419l316419c348588385588414613c414652414690385716c348716311716282690c282652282613311588', ['autohint']], +'j': ['eaee6e75f2df0f120102bb28564f93cc52c076d9e21ec4018633d94917c8a7ed25c24a7c667a92b4bfd1df7b2d1477e0dae1c5d50650fa6f583364ff03866779', ['autohint']], +'k': ['w600l1060l1880l188132l548486l454486l192230l188230l188712l106712l4820l5740l342312l292259', ['autohint']], +'l': ['w600c407-12460-12492-2c53717l516784836345356c425563675632986c329157l329712l74712l74645l247645l24716324748304-12', ['autohint']], +'less': ['w600l49348l493127l192330l192334l493537l493616l120363l120301', ['autohint']], +'m': ['58ec38f5290aa1be15ca0c5b49bab0d9aaf84c33984ecbd988858b64313d8f374bb7d78d297c9e71dd6fc9cc9e9d77e54ecab60bf75bded6e43ea2f1c2b1a9d3', ['autohint']], +'n': ['3309286488ca6fbf31cf7f636de890d9314b6d294d387c886b956b2c2c6b1fff372259e0846bba086c9cca076970bc1bb339e1b12cd9f2c0cab0970a0a53e8f1', ['autohint']], +'nine': ['c15021ca8739d02b329a3173cfd7b412b9d62744b26512ecf5d80104fdaf020b6fccb2faf8d2475f2888ab7805831675f71d8a00f6480e957d976bf31ea6b2f8', ['autohint']], +'numbersign': ['w600l3280l3820l461650l408650l1420l1960l275650l222650l107409l519409l519467l107467l87204l499204l499261l87261', ['autohint']], +'o': ['fb7aa123bbc160e9e3c10e5d66e45a5edff3cdcf2b0a08caedb1632cff4b1dda08c03f3cec55e4f523a71e855c013ce3372444e2e0bf0da6316fcb456400dd5f', ['autohint']], +'one': ['w600l970l5300l53068l36368l363638l302638261616213601c138591l138538l281538l28168l9768', ['autohint']], +'p': ['8631a5cd0b50191c8c15c72b7997bfa7c44de88c5bfc90641878b05a952a3399c120e7ff5dcd5b9de59b350b7f077f37729a66038b9da49e537d1d31fbb2fe96', ['autohint']], +'parenleft': ['w600c433-176l478-134344-21282110c282278282446344577c478690l433732294624208471c20827820885294-68', ['autohint']], +'parenright': ['w600l167-176306-6839285c392278392471306624c167732l122690256577318446c318278318110256-21c122-134', ['autohint']], +'percent': ['b5b299aba2f1f9d41c6af2844746671a15e5107460b086d680bc04c9fd77f36bf9933f66bf27d8f096d07b5e9a708d315f24670fdc989a61f8f506dd8e594c80', ['autohint']], +'period': ['w600c300-12345-1238122c38172381123345157c300157255157219123c2197221922255-12', ['autohint']], +'plus': ['w600l267104l333104l333299l515299l515361l333361l333556l267556l267361l85361l85299l267299', ['autohint']], +'q': ['e3729f6d21fc91f21f158b06c352b71a163a0ed3967b0a6dbbb475184c710eb0d475c8c5f43b1dd6a3d8ca4e58fcf422c893b21d6f311c24536cd5a4200a052d', ['autohint']], +'question': ['4f103f067bd66f79f5337a89f046a38d3b3259e413d5585764b803557922a956ecdb5e54606c32eb0f83da193e093f2450a6d75effcd64995164f58c9b5e7930', ['autohint']], +'quotedbl': ['w600l157352l213352l238577l240687l130687l132577l387352l443352l468577l470687l360687l362577', ['autohint']], +'quotesingle': ['w600l272352l328352l353577l355687l245687l247577', ['autohint']], +'r': ['w600l1460l2280l228285286386355424c428424466424484419c518407l537478507493477498c441498351498275449c224371l221371l214486l146486', ['autohint']], +'s': ['56b1f9bfc89b0c945678d9f87ef8c184ce832a9e987cc17f515039335bfee115c0a8ee0a9746a4288c91932f11da950668aba1699b0100742e1391929ab43f93', ['autohint']], +'semicolon': ['309fa4967c2912379b6f3cd12db53173eacf4374dcb635a187633df3bc05cc18ccb1ae9d2f0a1638e97c1772bcf96efe20a9ac290305584089c04e148791ebba', ['autohint']], +'seven': ['w600c2260l3120321250363394c532587l532638l70638l70567l438567292388237242', ['autohint']], +'six': ['fd5ebb173e0851c13d15604a1e5582e9dd45f773219c2a0c81c1f6b7a78fcc897fac1e7a03b6112be5399e51ad0e77785b2f9688a0bb5808b543e61a325e33b6', ['autohint']], +'slash': ['w600l99-160l173-160l501710l427710', ['autohint']], +'space': ['w600', ['autohint']], +'t': ['b864697e1ed822b2172a976ea1e447fa252897b192091b7c7fd96b3ff69cd0a3c710dbc5390c541e8e4971325caea5af6c704981f615809254d164b46fbfc9a2', ['autohint']], +'three': ['d970315bd58c77ac76afde2edf8355b4b403fbf2c479e90f37d45e2eaa0fbfa0a18a4d37fb5e7c92e319e64a371ec1ca98b15a8e32cd5decc473084a2f529055', ['autohint']], +'two': ['332efa73d25c3f88b12c47f30984ae2b9c65db632910f44bd0cf2d05fa470cb84517daeea6eda8a6c3faaf62e45dc82e941b34976b414192e7b51ff2fdbf0e29', ['autohint']], +'u': ['7e83ab2666e28058a2a8e23b9de7f69fa0d5054cc3496c6c95f9b7e1eaf77b3e7375284efca7360fa634e70dc58c21a149fcca1113c959c289faf9e9f80bdc37', ['autohint']], +'underscore': ['w600l60-140l540-140l540-69l60-69', ['autohint']], +'v': ['w600l2560l3480l549486l470486l358210338161322113c30567l30167284113266161c246210l134486l51486', ['autohint']], +'w': ['0c36aee3612d48a039f364e68be300293ffecc4e3e4da220da64a15eaddfe64b32934d44f3b527d9f6e0c44ea9c2c57641f361e9af8c5f4c86af3f9f10b65f2e', ['autohint']], +'x': ['ff9aea08f0bc42c8259f637b5326e360666808b01387e4c775b36afc318bc0cc55bd55b6e7a33143a66d6b0b38bbdd122d273d2ba21d78c17ca9044a24c9e5d3', ['autohint']], +'y': ['7322c4145e4364bcf9aacf4c38118938b93f4327b2ecbba17db25a78b8b4353623112ded6716117097d378611687a3676267a21f5de4938e21e9f11217cc8e5a', ['autohint']], +'z': ['w600l710l5310l53167l18867l522442l522486l108486l108419l404419l7144', ['autohint']], +'zero': ['08b69485b9586a6f473afe6df1300c6b8c70ccc9ccde3c2b3d019b95edbc100d385e716ca072c124bfb19d0027b79f6a3d830368f4f8d57571fedc757326e695', ['autohint']], +} diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/fontinfo.plist b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/fontinfo.plist new file mode 100644 index 000000000..0a5776c6a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/fontinfo.plist @@ -0,0 +1,90 @@ + + + + + ascender + 750 + capHeight + 750 + copyright + Copyright 2010, 2012 Adobe Systems Incorporated. All Rights Reserved. + descender + -250 + familyName + Source Code Pro + postscriptBlueFuzz + 0 + postscriptBlueScale + 0.0625 + postscriptBlueValues + + -12 + 0 + 486 + 498 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyBlues + + -12 + 0 + 486 + 498 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyOtherBlues + + -217 + -205 + + postscriptFontName + SourceCodePro-Regular + postscriptForceBold + + postscriptIsFixedPitch + + postscriptOtherBlues + + -217 + -205 + + postscriptStemSnapH + + 67 + + postscriptStemSnapV + + 85 + + postscriptUnderlinePosition + -100 + postscriptUnderlineThickness + 50 + styleName + Regular + trademark + Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + unitsPerEm + 1000 + versionMajor + 1 + versionMinor + 0 + xHeight + 500 + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/A_.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/A_.glif new file mode 100644 index 000000000..bf6853068 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/A_.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 200 67 + hstem 588 68 + vstem 32 536 + + + + id + w600l320l1170l232367255440276512c297588l301588321512343440c366367l4800l5680l347656l253656l148200l449200l449267l148267 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/B_.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/B_.glif new file mode 100644 index 000000000..b9933ed6b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/B_.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 70 + hstem 310 70 + hstem 586 70 + vstem 99 83 + vstem 465 82 + + + + pointTag + hintRef0001 + stems + + hstem 0 70 + hstem 310 70 + hstem 586 70 + vstem 99 83 + vstem 428 82 + + + + pointTag + hintRef0002 + stems + + hstem 0 70 + hstem 310 70 + hstem 586 70 + vstem 99 83 + vstem 465 82 + + + + id + c1a659f8bdabb30c497ef94300482ae44a02a43ad06133ec80b03f30ee51b2ea60fcbfa2b5fe8981d84b686506d3c3f3c83307e5ee80ad1e2e5fba5b3c1e2c2e + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/C_.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/C_.glif new file mode 100644 index 000000000..e4fffccd3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/C_.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -12 73 + hstem 595 73 + vstem 65 86 + + + + id + f175041e7641af48e9354112ccc8f0bfb84843bf80bf6a92f058377c4132c3f2d65f256917d7d2d66b4c2e1da6f43d04c0fd2ef4023165f100113762e0b2c53f + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/D_.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/D_.glif new file mode 100644 index 000000000..cf7b3d661 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/D_.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 68 + hstem 588 68 + vstem 87 83 + vstem 467 86 + + + + id + w600l870l25304460553122c553331553539446656c249656l87656l17068l170588l243588393588467496c46733146716539368c24368 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/E_.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/E_.glif new file mode 100644 index 000000000..377a800c8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/E_.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 71 + hstem 309 71 + hstem 586 70 + vstem 114 84 + + + + id + w600l1140l5300l53071l19871l198309l470309l470380l198380l198586l520586l520656l114656 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/F_.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/F_.glif new file mode 100644 index 000000000..3b564bae9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/F_.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 294 70 + hstem 586 70 + vstem 133 84 + + + + id + w600l1330l2170l217294l487294l487364l217364l217586l536586l536656l133656 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/G_.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/G_.glif new file mode 100644 index 000000000..cbbb00afb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/G_.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -12 73 + hstem 271 69 + hstem 595 73 + vstem 53 87 + vstem 456 77 + + + + id + d73610e48f033186b1c85082a4b5adf81f9748d3ac1d2954f216c2de761694f5197bce041b2e71025e72a5aec7c19d83ece2ce90be4eb13265e1a77339104793 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/H_.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/H_.glif new file mode 100644 index 000000000..5369f0d72 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/H_.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 309 72 + hstem 656 -20 + vstem 79 84 + vstem 437 84 + + + + id + w600l790l1630l163309l437309l4370l5210l521656l437656l437381l163381l163656l79656 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/I_.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/I_.glif new file mode 100644 index 000000000..708055ae6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/I_.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 71 + hstem 586 70 + vstem 258 84 + + + + id + w600l950l5050l50571l34271l342586l505586l505656l95656l95586l258586l25871l9571 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/J_.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/J_.glif new file mode 100644 index 000000000..1a0dc69d2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/J_.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -12 73 + hstem 587 70 + vstem 410 83 + + + + id + w600c276-12439-1249388c493210l493657l135657l135587l410587l41021741010936861c274612236117089c133148l819712622203-12 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/K_.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/K_.glif new file mode 100644 index 000000000..a145cbed2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/K_.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 656 -20 + vstem 98 84 + + + + id + w600l980l1820l182209l556656l461656l185327l182327l182656l98656l4860l5800l334432l283366 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/L_.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/L_.glif new file mode 100644 index 000000000..4be5a689b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/L_.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 71 + hstem 656 -20 + vstem 134 82 + + + + id + w600l1340l5410l54171l21671l216656l134656 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/M_.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/M_.glif new file mode 100644 index 000000000..193d92916 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/M_.glif @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 174 96 + hstem 560 96 + vstem 72 78 + vstem 462 66 + + + + pointTag + hintRef0001 + stems + + hstem 21 -21 + hstem 174 96 + hstem 560 96 + vstem 72 78 + vstem 448 80 + + + + id + c28cb807c8b5808a1423fc6f792dcec2f431693173fd53b678d962a176d5ee42f11d4f93ad604b214f1e72a64000a80eaaf77d4c2f164cd88375a905cfab6b53 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/N_.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/N_.glif new file mode 100644 index 000000000..ff9d42bad --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/N_.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 548 108 + vstem 82 80 + vstem 438 80 + + + + pointTag + hintRef0001 + stems + + hstem 0 108 + hstem 656 -20 + vstem 82 80 + vstem 438 80 + + + + id + 74e3965f25e670e174d077ee093febe689a4601ee951ba76164d9e1276dadbd01cd9a9cd96ac1b0f3dc902df8a4acfb09ba2958cfade43d59f0b2e25c21526c8 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/O_.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/O_.glif new file mode 100644 index 000000000..ed137952c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/O_.glif @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -12 73 + hstem 595 73 + vstem 48 86 + vstem 466 86 + + + + id + 03891f26f004230f02cec75f367f460107d778a18e292fb45f98619a6a0c31e6e3a61d13440c94603e0c22e8da010bdc909b6b444d3311b9dd9034f9e52480db + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/P_.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/P_.glif new file mode 100644 index 000000000..486e654e8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/P_.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 260 68 + hstem 589 67 + vstem 102 83 + vstem 459 84 + + + + id + 5f61823e6efba0709e8bcaed479d97cc8b4b3d66cf1071d432ea2ed8fc680ebc92db5f18a8bb4f161f8ea6d59c1025c0849dd8dc3e4ecfa84e62f939121dd322 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/Q_.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/Q_.glif new file mode 100644 index 000000000..39c353883 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/Q_.glif @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -163 71 + hstem -12 14.5 + hstem 595 73 + vstem 48 86 + vstem 466 86 + + + + pointTag + hintRef0001 + stems + + hstem -163 71 + hstem -12 69 + hstem 595 73 + vstem 48 86 + vstem 466 86 + + + + pointTag + hintRef0002 + stems + + hstem -163 71 + hstem -12 14.5 + hstem 595 73 + vstem 48 86 + vstem 466 86 + + + + pointTag + hintRef0003 + stems + + hstem -163 71 + hstem 20 -21 + hstem 595 73 + vstem 48 86 + vstem 466 86 + + + + id + ceaf0f38bd3086b64264d83457987a5efc7737a31367cd941f462bd1eb5a28d038208268e343172835570f90939aec7decbc2908f8019950097d2ac7c6fc4270 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/R_.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/R_.glif new file mode 100644 index 000000000..23e64fcec --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/R_.glif @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 277 68 + hstem 589 67 + vstem 100 83 + vstem 450 83 + + + + id + b5ac4498a28beb96f5e7fb10a17e9497013560ecda22148896fd240d7bacc2f2ab6916b85951d93268a51ac6d09c6b77fab63538fac1ec0e5b0cc187879475f1 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/S_.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/S_.glif new file mode 100644 index 000000000..18900fb8c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/S_.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -12 73 + hstem 595 73 + vstem 98 85 + vstem 452 85 + + + + id + 1724915dc652c64aae38de96f4ebf3479f2fe1f18faa2d57430afc9502de2522545a32d1163fc292492925cd412377138af7c76ac901eed183992d3c54824abb + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/T_.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/T_.glif new file mode 100644 index 000000000..53885c213 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/T_.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 586 70 + vstem 258 84 + + + + id + w600l2580l3420l342586l558586l558656l42656l42586l258586 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/U_.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/U_.glif new file mode 100644 index 000000000..9ef27fd8b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/U_.glif @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -12 73 + hstem 656 -20 + vstem 79 84 + vstem 440 81 + + + + id + w600c301-12429-1252160c521248l521656l440656l44024644011038061c3016122261163110c163246l163656l79656l792487960172-12 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/V_.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/V_.glif new file mode 100644 index 000000000..5b14437be --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/V_.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 85 + hstem 656 -20 + vstem 43 514 + + + + id + w600l2520l3490l557656l472656l367302345224328162c30485l30085276162260224c237302l131656l43656 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/W_.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/W_.glif new file mode 100644 index 000000000..220ec67de --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/W_.glif @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 93 + hstem 382 106 + hstem 657 -20 + vstem 10 580 + + + + id + 0f0370dadd9b8633255f58a956487058c2b3055da58feab57904878373a935921c0d4d50dde7a4288cf236b323eac7d678f497d65921cfd4eb07d353178ba6cb + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/X_.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/X_.glif new file mode 100644 index 000000000..3fe13b6d3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/X_.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 656 -20 + vstem 54 492 + + + + id + 4364e181d90665976be4ce98c4c37df3e0eebd8c53ab6414287e1827a9f31b70ff268791b8bf52d9f2121686b5a398208ff9145c32af2a52a7ff808ea94d8991 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/Y_.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/Y_.glif new file mode 100644 index 000000000..aaeb9244a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/Y_.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 656 -20 + vstem 258 84 + + + + id + w600l2580l3420l342234l562656l476656l381462356411330361c304308l300308273361250411c225461l126656l38656l258234 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/Z_.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/Z_.glif new file mode 100644 index 000000000..14c0f6411 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/Z_.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 71 + hstem 587 70 + vstem 65 474 + + + + id + w600l650l5390l53971l16771l534607l534657l97657l97587l431587l6550 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/a.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/a.glif new file mode 100644 index 000000000..682208a01 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/a.glif @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -12 66 + hstem 430 68 + vstem 81 80 + vstem 444.5 70.5 + + + + pointTag + hintRef0001 + stems + + hstem 21 -21 + hstem 430 68 + vstem 81 80 + vstem 444.5 70.5 + + + + pointTag + hintRef0002 + stems + + hstem 21 -21 + hstem 430 68 + vstem 81 80 + vstem 433 82 + + + + pointTag + hintRef0003 + stems + + hstem -12 66 + hstem 430 68 + vstem 81 80 + vstem 433 82 + + + + id + cbe04e8e713fe5aae516060eb43d25fc97a3898f6776b7aa66795ccdee099de5471687749ae73d57267be4ae0b4018faa6f079cd99d42d0adc741254d0812377 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/ampersand.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/ampersand.glif new file mode 100644 index 000000000..b3bd47660 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/ampersand.glif @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -12 66 + hstem 609 59 + vstem 42 80 + vstem 325 67 + + + + pointTag + hintRef0001 + stems + + hstem -12 66 + hstem 609 59 + vstem 121 71 + vstem 325 67 + + + + pointTag + hintRef0002 + stems + + hstem -12 66 + hstem 609 59 + vstem 42 80 + vstem 325 67 + + + + id + c572d65f3649efb510d33a7c3f972fa336d4187ea3312a947b1318257fdb58f87bc875430de182a46154aab2c77782f3a4eb42eb865ec165a68ec7eed3c50c4d + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/asciicircum.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/asciicircum.glif new file mode 100644 index 000000000..87cb246c8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/asciicircum.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 593 77 + vstem 111 378 + + + + id + w600l111284l183284l249460l298593l302593l351460l417284l489284l336670l264670 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/asciitilde.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/asciitilde.glif new file mode 100644 index 000000000..fd80e7bed --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/asciitilde.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 257 62 + vstem 76 448 + + + + pointTag + hintRef0001 + stems + + hstem 341 62 + vstem 76 448 + + + + id + 5fcb94382d9b5cea789f6a2d29b5a9aee9c10615961a5d3e746f7163f97dab9d3bb1d3dfc2f6763c59bcc2264d7c23a5524fc791b299fc6e327da9481cb5aad4 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/asterisk.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/asterisk.glif new file mode 100644 index 000000000..2fc333aeb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/asterisk.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 111 445 + vstem 271.5 57 + + + + id + w600l180111l300270l420111l462141l354306l516376l500422l333367l324556l276556l267367l100422l84376l246306l138141 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/at.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/at.glif new file mode 100644 index 000000000..4a5d66d9e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/at.glif @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -144 55 + hstem 88 58 + hstem 580 55 + vstem 49 63 + vstem 224 66 + vstem 488 58 + + + + pointTag + hintRef0001 + stems + + hstem -144 55 + hstem 88 58 + hstem 580 55 + vstem 49 63 + vstem 224 66 + vstem 492.5 53.5 + + + + pointTag + hintRef0002 + stems + + hstem -144 55 + hstem 88 58 + hstem 580 55 + vstem 49 63 + vstem 224 66 + vstem 482 64 + + + + id + 3624e896b755b3406bfe1c35edb6c8dd52878d9195fd155baf4d7c935fffd9c48d9fe9234adfa46a16db5238c20f5858cf388b6844fd8117296e8bfa705fc64b + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/b.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/b.glif new file mode 100644 index 000000000..d0f54b1d0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/b.glif @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -12 69 + hstem 429 69 + hstem 712 -20 + vstem 93 82 + vstem 455 85 + + + + pointTag + hintRef0001 + stems + + hstem 21 -21 + hstem 429 69 + hstem 712 -20 + vstem 93 82 + vstem 455 85 + + + + pointTag + hintRef0002 + stems + + hstem 21 -21 + hstem 429 69 + hstem 712 -20 + vstem 93 69.5 + vstem 455 85 + + + + pointTag + hintRef0003 + stems + + hstem -12 69 + hstem 429 69 + hstem 712 -20 + vstem 93 82 + vstem 455 85 + + + + id + 842415f0127bdb82e9e1421ad6c80cc1359451785c8f71a28e54d5476e3bee61e17045bbd890e3b0b08f382686c6b015f113d1a7a24dcaa1eabc09f0ff1f096c + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/backslash.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/backslash.glif new file mode 100644 index 000000000..a6013f43a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/backslash.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -160 870 + vstem 99 402 + + + + id + w600l427-160l501-160l173710l99710 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/bar.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/bar.glif new file mode 100644 index 000000000..4a0f9f9ec --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/bar.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -250 1000 + vstem 263 74 + + + + id + w600l263-250l337-250l337750l263750 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/braceleft.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/braceleft.glif new file mode 100644 index 000000000..9272e3a82 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/braceleft.glif @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -152 47 + hstem 252 52 + hstem 661 47 + vstem 256 70 + + + + pointTag + hintRef0001 + stems + + hstem -152 47 + hstem 252 52 + hstem 661 47 + vstem 265 67 + + + + pointTag + hintRef0002 + stems + + hstem -152 47 + hstem 252 52 + hstem 661 47 + vstem 265 67 + + + + pointTag + hintRef0003 + stems + + hstem -152 47 + hstem 252 52 + hstem 661 47 + vstem 256 70 + + + + pointTag + hintRef0004 + stems + + hstem -152 47 + hstem 252 52 + hstem 661 47 + vstem 265 67 + + + + pointTag + hintRef0005 + stems + + hstem -152 47 + hstem 252 52 + hstem 661 47 + vstem 120 121 + + + + pointTag + hintRef0006 + stems + + hstem -152 47 + hstem 252 52 + hstem 661 47 + vstem 265 67 + + + + id + 02bfb4240c08ccc820d952481ca67606a06859286daed1b458d886807870cec97321e8f5537d4d6c6e68c1fe04d25d3bf87e811b88162857cad16dafa885f715 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/braceright.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/braceright.glif new file mode 100644 index 000000000..6f53ed6b9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/braceright.glif @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -152 47 + hstem 252 52 + hstem 661 47 + vstem 275 69 + + + + pointTag + hintRef0001 + stems + + hstem -152 47 + hstem 252 52 + hstem 661 47 + vstem 269 66 + + + + pointTag + hintRef0002 + stems + + hstem -152 47 + hstem 252 52 + hstem 661 47 + vstem 359 121 + + + + pointTag + hintRef0003 + stems + + hstem -152 47 + hstem 252 52 + hstem 661 47 + vstem 269 66 + + + + pointTag + hintRef0004 + stems + + hstem -152 47 + hstem 252 52 + hstem 661 47 + vstem 275 69 + + + + pointTag + hintRef0005 + stems + + hstem -152 47 + hstem 252 52 + hstem 661 47 + vstem 269 66 + + + + pointTag + hintRef0006 + stems + + hstem -152 47 + hstem 252 52 + hstem 661 47 + vstem 275 69 + + + + id + aae48ea61dbfcd1f63276d1a8289db0bd36e1144f58605429f35e356b684c326c34857668e833517752ba0a163f5e534b695fc51f782002fe82c5b382371f44c + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/bracketleft.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/bracketleft.glif new file mode 100644 index 000000000..ed70b02bc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/bracketleft.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -152 47 + hstem 661 47 + vstem 225 66 + + + + id + w600l225-152l502-152l502-105l291-105l291661l502661l502708l225708 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/bracketright.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/bracketright.glif new file mode 100644 index 000000000..a847d5055 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/bracketright.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -152 47 + hstem 661 47 + vstem 309 66 + + + + id + w600l98-152l375-152l375708l98708l98661l309661l309-105l98-105 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/c.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/c.glif new file mode 100644 index 000000000..c2be616f2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/c.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -12 68 + hstem 430 68 + vstem 80 85 + + + + id + e0e0adbd09a042e383df9d048e196b31f5d626a4c26355d66fc3ae0cee53a905fb39f4c6707e14997792e75014c25790f331d45038ce574a02d76e97997fcb86 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/colon.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/colon.glif new file mode 100644 index 000000000..a8509e222 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/colon.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -12 169 + hstem 346 169 + vstem 219 162 + + + + id + 1ef63e19cf268bf3a5d938f4ee7413b56b77afe0b85840cf9404d0cd887ea45894141d684408c93ce8f463644fdaca5b887de1517ce8fc43958bbaec7f11e73a + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/comma.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/comma.glif new file mode 100644 index 000000000..ce8817136 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/comma.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -192 -21 + hstem 4 151 + vstem 323 73 + + + + pointTag + hintRef0001 + stems + + hstem -192 -21 + hstem 106 49 + vstem 323 73 + + + + id + 1fc5c4111eae07dc5d05b0f235cbe82d46affc3e12365a73ae71a918515dd2da52ab03c6d02149159bb9014bf48eadb8fb4dc8063c9fab4251538589a7785086 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/contents.plist b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/contents.plist new file mode 100644 index 000000000..5ea2011fa --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/contents.plist @@ -0,0 +1,196 @@ + + + + + A + A_.glif + B + B_.glif + C + C_.glif + D + D_.glif + E + E_.glif + F + F_.glif + G + G_.glif + H + H_.glif + I + I_.glif + J + J_.glif + K + K_.glif + L + L_.glif + M + M_.glif + N + N_.glif + O + O_.glif + P + P_.glif + Q + Q_.glif + R + R_.glif + S + S_.glif + T + T_.glif + U + U_.glif + V + V_.glif + W + W_.glif + X + X_.glif + Y + Y_.glif + Z + Z_.glif + a + a.glif + ampersand + ampersand.glif + asciicircum + asciicircum.glif + asciitilde + asciitilde.glif + asterisk + asterisk.glif + at + at.glif + b + b.glif + backslash + backslash.glif + bar + bar.glif + braceleft + braceleft.glif + braceright + braceright.glif + bracketleft + bracketleft.glif + bracketright + bracketright.glif + c + c.glif + colon + colon.glif + comma + comma.glif + d + d.glif + dollar + dollar.glif + e + e.glif + eight + eight.glif + equal + equal.glif + exclam + exclam.glif + f + f.glif + five + five.glif + four + four.glif + g + g.glif + grave + grave.glif + greater + greater.glif + h + h.glif + hyphen + hyphen.glif + i + i.glif + j + j.glif + k + k.glif + l + l.glif + less + less.glif + m + m.glif + n + n.glif + nine + nine.glif + numbersign + numbersign.glif + o + o.glif + one + one.glif + p + p.glif + parenleft + parenleft.glif + parenright + parenright.glif + percent + percent.glif + period + period.glif + plus + plus.glif + q + q.glif + question + question.glif + quotedbl + quotedbl.glif + quotesingle + quotesingle.glif + r + r.glif + s + s.glif + semicolon + semicolon.glif + seven + seven.glif + six + six.glif + slash + slash.glif + space + space.glif + t + t.glif + three + three.glif + two + two.glif + u + u.glif + underscore + underscore.glif + v + v.glif + w + w.glif + x + x.glif + y + y.glif + z + z.glif + zero + zero.glif + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/d.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/d.glif new file mode 100644 index 000000000..c20d39229 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/d.glif @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -12 69 + hstem 429 69 + hstem 712 -20 + vstem 60 85 + vstem 435.5 71.5 + + + + pointTag + hintRef0001 + stems + + hstem 21 -21 + hstem 429 69 + hstem 712 -20 + vstem 60 85 + vstem 435.5 71.5 + + + + pointTag + hintRef0002 + stems + + hstem 21 -21 + hstem 429 69 + hstem 712 -20 + vstem 60 85 + vstem 425 82 + + + + pointTag + hintRef0003 + stems + + hstem -12 69 + hstem 429 69 + hstem 712 -20 + vstem 60 85 + vstem 425 82 + + + + id + a0f86281e580d74d508910f068dd63a6f3d7e3a7556e2542431bce223c9293789eb74e06b2cd23f3aa522a9cae23ac8ab4661954b1cd60feef6407d6ea97122a + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/dollar.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/dollar.glif new file mode 100644 index 000000000..24dfa4e24 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/dollar.glif @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 34 68 + hstem 550 68 + vstem 114 80 + vstem 276 60 + vstem 431 81 + + + + pointTag + hintRef0001 + stems + + hstem 34 29 + hstem 587 31 + vstem 114 80 + vstem 276 60 + vstem 431 81 + + + + id + 561de306b85f85ae68849435569bbc5dc4f65a9e7302b52b3c82e57c6cbc133df9d2da65cf05a66c6dcedf4a9cf466c09e94f5a6208fcaa3227f188cdefdf69e + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/e.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/e.glif new file mode 100644 index 000000000..a6ebf77d9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/e.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -12 66 + hstem 220 64 + hstem 433 65 + vstem 123 27 + vstem 464 74 + + + + pointTag + hintRef0001 + stems + + hstem -12 66 + hstem 220 64 + hstem 433 65 + vstem 68 82 + vstem 464 74 + + + + id + 66f1d1da4c0a4eda43d42a712364b129cc682c92af87bdc38bf30ed3d4cf45bd9f7c7a48f03f1af5f8ccd15af5d2e8d944f6635aa8f87000e7c6d0fc4af73627 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/eight.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/eight.glif new file mode 100644 index 000000000..798bb7284 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/eight.glif @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -12 61 + hstem 589 61 + vstem 68 75 + vstem 452 79 + + + + pointTag + hintRef0001 + stems + + hstem -12 61 + hstem 589 61 + vstem 108 75 + vstem 432 71 + + + + pointTag + hintRef0002 + stems + + hstem -12 61 + hstem 589 61 + vstem 68 75 + vstem 452 79 + + + + pointTag + hintRef0003 + stems + + hstem -12 61 + hstem 589 61 + vstem 108 75 + vstem 432 71 + + + + pointTag + hintRef0004 + stems + + hstem -12 61 + hstem 589 61 + vstem 68 75 + vstem 452 79 + + + + id + 3edcc7a39cacc274efd3de7744a959a0e805246b1146b62058b0767e382647d37149f543da0ef99ade0d0204e2d8ac0677db73b49089628a0e5b46c8b8aa3303 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/equal.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/equal.glif new file mode 100644 index 000000000..cf5e6e273 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/equal.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 192 62 + hstem 406 62 + vstem 85 430 + + + + id + w600l85406l515406l515468l85468l85192l515192l515254l85254 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/exclam.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/exclam.glif new file mode 100644 index 000000000..0e1d5c8e6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/exclam.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -12 154 + vstem 267 66 + + + + pointTag + hintRef0001 + stems + + hstem 9 -21 + vstem 227 146 + + + + pointTag + hintRef0002 + stems + + hstem -12 154 + vstem 227 146 + + + + id + w600l272232l328232l338576l340670l260670l262576c300-12340-1237318c37366373113340142c300142260142227113c2276622718260-12 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/f.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/f.glif new file mode 100644 index 000000000..17f5e5b4e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/f.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 419 67 + hstem 657 67 + vstem 242 81 + + + + id + f11d83866fdc9cb639c84d62c749f6d298d9b5aef72d5fd9e2641b66e9ded92680f0d395625840160e1dc3c127ad2d38a4f4b0b4bc2c4a41f00f158abd475c5f + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/five.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/five.glif new file mode 100644 index 000000000..28e56d434 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/five.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -12 68 + hstem 342 62 + hstem 567 71 + vstem 439 83 + + + + id + fd8fd14d8f2dab416e3b37c5293ece4ee27049e03197a7135ba4c186892202b39307c89a6c3fd14933ac995603965a6928656757696bf683f4e6abea72baccde + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/four.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/four.glif new file mode 100644 index 000000000..f60cf8cfe --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/four.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 242 + hstem 553 85 + vstem 368 78 + + + + pointTag + hintRef0001 + stems + + hstem 176 66 + hstem 553 85 + vstem 368 177 + + + + pointTag + hintRef0002 + stems + + hstem 0 242 + hstem 553 85 + vstem 368 78 + + + + id + w600l3680l4460l446638l358638l39231l39176l545176l545242l130242l303460324491348522c368553l373553371518369475c368440 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/g.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/g.glif new file mode 100644 index 000000000..e6448d0ee --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/g.glif @@ -0,0 +1,205 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -224 60 + hstem -8 68 + hstem 154 55 + hstem 419 67 + vstem 102 69 + vstem 485 81 + + + + pointTag + hintRef0001 + stems + + hstem -224 60 + hstem -8 68 + hstem 154 55 + hstem 419 67 + vstem 100 79 + vstem 403 76 + + + + pointTag + hintRef0002 + stems + + hstem -224 60 + hstem -8 68 + hstem 154 55 + hstem 438 60 + vstem 100 79 + vstem 403 76 + + + + pointTag + hintRef0003 + stems + + hstem -224 60 + hstem 21 -21 + hstem 154 55 + hstem 419 67 + vstem 102 69 + vstem 403 76 + + + + pointTag + hintRef0004 + stems + + hstem -224 60 + hstem -8 68 + hstem 154 55 + hstem 419 67 + vstem 72 71 + vstem 403 76 + + + + pointTag + hintRef0005 + stems + + hstem -224 60 + hstem -8 68 + hstem 154 55 + hstem 438 60 + vstem 100 79 + vstem 403 76 + + + + pointTag + hintRef0006 + stems + + hstem -224 60 + hstem 21 -21 + hstem 154 55 + hstem 419 67 + vstem 72 71 + vstem 403 76 + + + + pointTag + hintRef0007 + stems + + hstem -224 60 + hstem -8 68 + hstem 154 55 + hstem 419 67 + vstem 100 79 + vstem 485 81 + + + + id + c0a1ac707506e9a15af37ef9aadbf7fff110df090241aa18cf3e665d85a2e769c1a02816cea1d9c2d47b1ca58faaa27139991dd63c72e54573071c52936ec393 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/grave.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/grave.glif new file mode 100644 index 000000000..e658ab986 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/grave.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 721 -20 + vstem 164 200 + + + + id + w600l321568l364609l222777l164721 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/greater.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/greater.glif new file mode 100644 index 000000000..5d200954f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/greater.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 48 568 + vstem 408 72 + + + + id + w600l10748l480301l480363l107616l107537l408334l408330l107127 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/h.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/h.glif new file mode 100644 index 000000000..7ef93ffd2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/h.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 427 71 + hstem 712 -20 + vstem 93 82 + vstem 441 82 + + + + id + d88d83825c963410efb2235c3303d61f85df6b998eddf63c5e38b8b103451ba27afd783feaa0de9b85e0440c52d908d456b383ff85cf6728a4374cb75adc1db8 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/hyphen.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/hyphen.glif new file mode 100644 index 000000000..8b61aec2e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/hyphen.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 299 62 + vstem 85 430 + + + + id + w600l85299l515299l515361l85361 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/i.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/i.glif new file mode 100644 index 000000000..279e63efa --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/i.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 419 67 + hstem 588 128 + vstem 316 82 + + + + pointTag + hintRef0001 + stems + + hstem 21 -21 + hstem 419 67 + hstem 588 128 + vstem 282 132 + + + + id + w600l3160l3980l398486l90486l90419l316419c348588385588414613c414652414690385716c348716311716282690c282652282613311588 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/j.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/j.glif new file mode 100644 index 000000000..1bab19e3c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/j.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -217 67 + hstem 419 67 + hstem 588 128 + vstem 316 82 + + + + pointTag + hintRef0001 + stems + + hstem -217 67 + hstem 419 67 + hstem 588 128 + vstem 282 132 + + + + id + eaee6e75f2df0f120102bb28564f93cc52c076d9e21ec4018633d94917c8a7ed25c24a7c667a92b4bfd1df7b2d1477e0dae1c5d50650fa6f583364ff03866779 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/k.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/k.glif new file mode 100644 index 000000000..411115084 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/k.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 486 -20 + hstem 712 -20 + vstem 106 82 + + + + id + w600l1060l1880l188132l548486l454486l192230l188230l188712l106712l4820l5740l342312l292259 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/l.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/l.glif new file mode 100644 index 000000000..70f26484f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/l.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -12 68 + hstem 645 67 + vstem 247 82 + + + + id + w600c407-12460-12492-2c53717l516784836345356c425563675632986c329157l329712l74712l74645l247645l24716324748304-12 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/less.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/less.glif new file mode 100644 index 000000000..c6d6834cb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/less.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 48 568 + vstem 120 72 + + + + id + w600l49348l493127l192330l192334l493537l493616l120363l120301 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/m.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/m.glif new file mode 100644 index 000000000..03bfd09b9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/m.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 427 71 + vstem3 58 82 270 76 476 82 + + + + pointTag + hintRef0001 + stems + + hstem 21 -21 + hstem 486 -20 + vstem3 58 82 270 76 476 82 + + + + id + 58ec38f5290aa1be15ca0c5b49bab0d9aaf84c33984ecbd988858b64313d8f374bb7d78d297c9e71dd6fc9cc9e9d77e54ecab60bf75bded6e43ea2f1c2b1a9d3 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/n.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/n.glif new file mode 100644 index 000000000..bbddfe97e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/n.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 427 71 + vstem 93 82 + vstem 441 82 + + + + pointTag + hintRef0001 + stems + + hstem 21 -21 + hstem 427 71 + vstem 93 71.5 + vstem 441 82 + + + + pointTag + hintRef0002 + stems + + hstem 21 -21 + hstem 486 -20 + vstem 93 71.5 + vstem 441 82 + + + + pointTag + hintRef0003 + stems + + hstem 21 -21 + hstem 486 -20 + vstem 93 82 + vstem 441 82 + + + + id + 3309286488ca6fbf31cf7f636de890d9314b6d294d387c886b956b2c2c6b1fff372259e0846bba086c9cca076970bc1bb339e1b12cd9f2c0cab0970a0a53e8f1 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/nine.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/nine.glif new file mode 100644 index 000000000..5b2d5803e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/nine.glif @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -12 68 + hstem 248 62 + hstem 585 65 + vstem 67 78 + vstem 446 78 + + + + id + c15021ca8739d02b329a3173cfd7b412b9d62744b26512ecf5d80104fdaf020b6fccb2faf8d2475f2888ab7805831675f71d8a00f6480e957d976bf31ea6b2f8 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/numbersign.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/numbersign.glif new file mode 100644 index 000000000..72fa021e9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/numbersign.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 261 + hstem 409 241 + vstem 87 432 + + + + pointTag + hintRef0001 + stems + + hstem 204 57 + hstem 409 58 + vstem 87 432 + + + + id + w600l3280l3820l461650l408650l1420l1960l275650l222650l107409l519409l519467l107467l87204l499204l499261l87261 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/o.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/o.glif new file mode 100644 index 000000000..71cb6a804 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/o.glif @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -12 68 + hstem 430 68 + vstem 60 85 + vstem 455 85 + + + + id + fb7aa123bbc160e9e3c10e5d66e45a5edff3cdcf2b0a08caedb1632cff4b1dda08c03f3cec55e4f523a71e855c013ce3372444e2e0bf0da6316fcb456400dd5f + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/one.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/one.glif new file mode 100644 index 000000000..b27e15f32 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/one.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 68 + hstem 538 100 + vstem 281 82 + + + + id + w600l970l5300l53068l36368l363638l302638261616213601c138591l138538l281538l28168l9768 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/p.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/p.glif new file mode 100644 index 000000000..a5a5b8ceb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/p.glif @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -184 -21 + hstem -12 69 + hstem 429 69 + vstem 93 82 + vstem 455 85 + + + + pointTag + hintRef0001 + stems + + hstem -184 -21 + hstem -12 69 + hstem 429 69 + vstem 93 71.5 + vstem 455 85 + + + + pointTag + hintRef0002 + stems + + hstem -184 -21 + hstem -12 69 + hstem 486 -20 + vstem 93 71.5 + vstem 455 85 + + + + pointTag + hintRef0003 + stems + + hstem -184 -21 + hstem -12 69 + hstem 486 -20 + vstem 93 82 + vstem 455 85 + + + + pointTag + hintRef0004 + stems + + hstem -184 -21 + hstem -12 69 + hstem 429 69 + vstem 93 82 + vstem 455 85 + + + + id + 8631a5cd0b50191c8c15c72b7997bfa7c44de88c5bfc90641878b05a952a3399c120e7ff5dcd5b9de59b350b7f077f37729a66038b9da49e537d1d31fbb2fe96 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/parenleft.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/parenleft.glif new file mode 100644 index 000000000..75925894f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/parenleft.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -176 908 + vstem 208 74 + + + + id + w600c433-176l478-134344-21282110c282278282446344577c478690l433732294624208471c20827820885294-68 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/parenright.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/parenright.glif new file mode 100644 index 000000000..e326eb198 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/parenright.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -176 908 + vstem 318 74 + + + + id + w600l167-176306-6839285c392278392471306624c167732l122690256577318446c318278318110256-21c122-134 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/percent.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/percent.glif new file mode 100644 index 000000000..0cc9eaaf8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/percent.glif @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -12 50 + hstem 321 50 + hstem 601 49 + vstem 27 61 + vstem 244 61 + vstem 512 61 + + + + pointTag + hintRef0001 + stems + + hstem -12 50 + hstem 268 49 + vstem 295 61 + vstem 512 61 + + + + id + b5b299aba2f1f9d41c6af2844746671a15e5107460b086d680bc04c9fd77f36bf9933f66bf27d8f096d07b5e9a708d315f24670fdc989a61f8f506dd8e594c80 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/period.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/period.glif new file mode 100644 index 000000000..3ad740754 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/period.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -12 169 + vstem 219 162 + + + + id + w600c300-12345-1238122c38172381123345157c300157255157219123c2197221922255-12 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/plus.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/plus.glif new file mode 100644 index 000000000..3a9cbcc5f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/plus.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 299 62 + vstem 267 66 + + + + id + w600l267104l333104l333299l515299l515361l333361l333556l267556l267361l85361l85299l267299 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/q.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/q.glif new file mode 100644 index 000000000..6d7b34a41 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/q.glif @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -184 -21 + hstem -12 69 + hstem 486 -20 + vstem 60 85 + vstem 425 82 + + + + pointTag + hintRef0001 + stems + + hstem -184 -21 + hstem -12 69 + hstem 486 -20 + vstem 60 85 + vstem 437.5 69.5 + + + + pointTag + hintRef0002 + stems + + hstem -184 -21 + hstem -12 69 + hstem 429 69 + vstem 60 85 + vstem 425 82 + + + + id + e3729f6d21fc91f21f158b06c352b71a163a0ed3967b0a6dbbb475184c710eb0d475c8c5f43b1dd6a3d8ca4e58fcf422c893b21d6f311c24536cd5a4200a052d + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/question.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/question.glif new file mode 100644 index 000000000..2c34d4dc6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/question.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 9 -21 + hstem 614 68 + vstem 213 146 + vstem 398 81 + + + + pointTag + hintRef0001 + stems + + hstem -12 154 + hstem 614 68 + vstem 213 146 + vstem 398 81 + + + + id + 4f103f067bd66f79f5337a89f046a38d3b3259e413d5585764b803557922a956ecdb5e54606c32eb0f83da193e093f2450a6d75effcd64995164f58c9b5e7930 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/quotedbl.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/quotedbl.glif new file mode 100644 index 000000000..6e2de87b6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/quotedbl.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 352 335 + vstem 131 108 + vstem 361 108 + + + + id + w600l157352l213352l238577l240687l130687l132577l387352l443352l468577l470687l360687l362577 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/quotesingle.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/quotesingle.glif new file mode 100644 index 000000000..ce2a4d898 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/quotesingle.glif @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 352 335 + vstem 246 108 + + + + id + w600l272352l328352l353577l355687l245687l247577 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/r.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/r.glif new file mode 100644 index 000000000..7ceca3cf7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/r.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 424 74 + vstem 146 82 + + + + pointTag + hintRef0001 + stems + + hstem 21 -21 + hstem 424 74 + vstem 146 71.5 + + + + pointTag + hintRef0002 + stems + + hstem 21 -21 + hstem 486 -20 + vstem 146 71.5 + + + + pointTag + hintRef0003 + stems + + hstem 21 -21 + hstem 486 -20 + vstem 146 82 + + + + id + w600l1460l2280l228285286386355424c428424466424484419c518407l537478507493477498c441498351498275449c224371l221371l214486l146486 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/s.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/s.glif new file mode 100644 index 000000000..09daf8465 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/s.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -12 64 + hstem 434 64 + vstem 101 83 + vstem 443 83 + + + + id + 56b1f9bfc89b0c945678d9f87ef8c184ce832a9e987cc17f515039335bfee115c0a8ee0a9746a4288c91932f11da950668aba1699b0100742e1391929ab43f93 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/semicolon.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/semicolon.glif new file mode 100644 index 000000000..39a9f00f4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/semicolon.glif @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -192 -21 + hstem 4 151 + hstem 346 169 + vstem 219 162 + + + + pointTag + hintRef0001 + stems + + hstem -192 -21 + hstem 4 151 + hstem 346 169 + vstem 323 73 + + + + pointTag + hintRef0002 + stems + + hstem -192 -21 + hstem 106 49 + hstem 346 169 + vstem 323 73 + + + + id + 309fa4967c2912379b6f3cd12db53173eacf4374dcb635a187633df3bc05cc18ccb1ae9d2f0a1638e97c1772bcf96efe20a9ac290305584089c04e148791ebba + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/seven.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/seven.glif new file mode 100644 index 000000000..3b0efcfa3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/seven.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 567 71 + vstem 226 86 + + + + id + w600c2260l3120321250363394c532587l532638l70638l70567l438567292388237242 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/six.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/six.glif new file mode 100644 index 000000000..dfbdd2a50 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/six.glif @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -12 65 + hstem 328 62 + hstem 581 69 + vstem 77 77 + vstem 456 78 + + + + id + fd5ebb173e0851c13d15604a1e5582e9dd45f773219c2a0c81c1f6b7a78fcc897fac1e7a03b6112be5399e51ad0e77785b2f9688a0bb5808b543e61a325e33b6 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/slash.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/slash.glif new file mode 100644 index 000000000..76716fd55 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/slash.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -160 870 + vstem 99 402 + + + + id + w600l99-160l173-160l501710l427710 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/space.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/space.glif new file mode 100644 index 000000000..9a1384257 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/space.glif @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/t.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/t.glif new file mode 100644 index 000000000..98faabb96 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/t.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -12 67 + hstem 419 67 + vstem 206 82 + + + + pointTag + hintRef0001 + stems + + hstem -12 67 + hstem 419 67 + vstem 214.5 73.5 + + + + pointTag + hintRef0002 + stems + + hstem -12 67 + hstem 419 67 + vstem 206 82 + + + + id + b864697e1ed822b2172a976ea1e447fa252897b192091b7c7fd96b3ff69cd0a3c710dbc5390c541e8e4971325caea5af6c704981f615809254d164b46fbfc9a2 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/three.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/three.glif new file mode 100644 index 000000000..0a1099af4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/three.glif @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -12 68 + hstem 300 63 + hstem 583 67 + vstem 203 157 + vstem 435 83 + + + + pointTag + hintRef0001 + stems + + hstem -12 68 + hstem 300 63 + hstem 583 67 + vstem 203 157 + vstem 412 84 + + + + pointTag + hintRef0002 + stems + + hstem -12 68 + hstem 300 63 + hstem 583 67 + vstem 435 83 + + + + id + d970315bd58c77ac76afde2edf8355b4b403fbf2c479e90f37d45e2eaa0fbfa0a18a4d37fb5e7c92e319e64a371ec1ca98b15a8e32cd5decc473084a2f529055 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/two.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/two.glif new file mode 100644 index 000000000..990a56696 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/two.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 71 + hstem 583 67 + vstem 408 79 + + + + id + 332efa73d25c3f88b12c47f30984ae2b9c65db632910f44bd0cf2d05fa470cb84517daeea6eda8a6c3faaf62e45dc82e941b34976b414192e7b51ff2fdbf0e29 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/u.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/u.glif new file mode 100644 index 000000000..19a9bb92e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/u.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -12 71 + hstem 486 -20 + vstem 77 83 + vstem 434.5 70.5 + + + + pointTag + hintRef0001 + stems + + hstem 21 -21 + hstem 486 -20 + vstem 77 83 + vstem 434.5 70.5 + + + + pointTag + hintRef0002 + stems + + hstem 21 -21 + hstem 486 -20 + vstem 77 83 + vstem 423 82 + + + + pointTag + hintRef0003 + stems + + hstem -12 71 + hstem 486 -20 + vstem 77 83 + vstem 423 82 + + + + id + 7e83ab2666e28058a2a8e23b9de7f69fa0d5054cc3496c6c95f9b7e1eaf77b3e7375284efca7360fa634e70dc58c21a149fcca1113c959c289faf9e9f80bdc37 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/underscore.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/underscore.glif new file mode 100644 index 000000000..4f6bf4a6f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/underscore.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -140 71 + vstem 60 480 + + + + id + w600l60-140l540-140l540-69l60-69 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/v.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/v.glif new file mode 100644 index 000000000..bfda181c5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/v.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 67 + hstem 486 -20 + vstem 51 498 + + + + id + w600l2560l3480l549486l470486l358210338161322113c30567l30167284113266161c246210l134486l51486 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/w.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/w.glif new file mode 100644 index 000000000..d910be4b8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/w.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 70 + hstem 376 80 + vstem 8 584 + + + + pointTag + hintRef0001 + stems + + hstem 0 70 + hstem 486 -20 + vstem 8 584 + + + + pointTag + hintRef0002 + stems + + hstem 0 70 + hstem 376 80 + vstem 8 584 + + + + pointTag + hintRef0003 + stems + + hstem 0 70 + hstem 486 -20 + vstem 8 584 + + + + id + 0c36aee3612d48a039f364e68be300293ffecc4e3e4da220da64a15eaddfe64b32934d44f3b527d9f6e0c44ea9c2c57641f361e9af8c5f4c86af3f9f10b65f2e + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/x.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/x.glif new file mode 100644 index 000000000..80acf5699 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/x.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + hstem 486 -20 + vstem 64 471 + + + + id + ff9aea08f0bc42c8259f637b5326e360666808b01387e4c775b36afc318bc0cc55bd55b6e7a33143a66d6b0b38bbdd122d273d2ba21d78c17ca9044a24c9e5d3 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/y.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/y.glif new file mode 100644 index 000000000..94581ae12 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/y.glif @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -209 68 + hstem 486 -20 + vstem 49 502 + + + + id + 7322c4145e4364bcf9aacf4c38118938b93f4327b2ecbba17db25a78b8b4353623112ded6716117097d378611687a3676267a21f5de4938e21e9f11217cc8e5a + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/z.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/z.glif new file mode 100644 index 000000000..b73c6e6c7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/z.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 67 + hstem 419 67 + vstem 71 460 + + + + id + w600l710l5310l53167l18867l522442l522486l108486l108419l404419l7144 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/zero.glif b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/zero.glif new file mode 100644 index 000000000..85a4fccf1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/glyphs/zero.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem -12 66 + hstem 261 133 + hstem 584 66 + vstem 71 77 + vstem 238 124 + vstem 452 77 + + + + id + 08b69485b9586a6f473afe6df1300c6b8c70ccc9ccde3c2b3d019b95edbc100d385e716ca072c124bfb19d0027b79f6a3d830368f4f8d57571fedc757326e695 + + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/groups.plist b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/groups.plist new file mode 100644 index 000000000..c96917c95 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/groups.plist @@ -0,0 +1,122 @@ + + + + + COMBINING_MARKS + + gravecmb + gravecmb.cap + variacmb + acutecmb + acutecmb.cap + tonoscmb + circumflexcmb + circumflexcmb.cap + tildecmb + tildecmb.cap + macroncmb + macroncmb.cap + overlinecmb + overlinecmb.cap + brevecmb + brevecmb.cyr + brevecmb.cap + brevecmb.cyrcap + dotaccentcmb + dotaccentcmb.cap + dieresiscmb + dieresiscmb.cap + hoicmb + hoicmb.cap + candrabinducmb + candrabinducmb.cap + ringcmb + ringcmb.cap + hungarumlautcmb + hungarumlautcmb.cap + caroncmb + caroncmb.cap + dblgravecmb + dblgravecmb.cap + breveinvertedcmb + breveinvertedcmb.cap + commaturnedabovecmb + aspercmb + commaabovecmb + leniscmb + lefttackbelowcmb + righttackbelowcmb + leftangleabovecmb + horncmb + ringhalfleftbelowcmb + uptackbelowcmb + downtackbelowcmb + plusbelowcmb + minusbelowcmb + dotbelowcmb + dieresisbelowcmb + ringbelowcmb + commabelowcmb + commabelowcmb.a + cedillacmb + cedillacmb.cap + ogonekcmb + ogonekcmb.cap + verticallinebelowcmb + bridgebelowcmb + caronbelowcmb + brevebelowcmb + breveinvertedbelowcmb + tildebelowcmb + macronbelowcmb + tildeoverlaycmb + ringhalfrightbelowcmb + bridgeinvertedbelowcmb + squarebelowcmb + seagullbelowcmb + xabovecmb + perispomenicmb + perispomenicmb.cap + iotasubscriptcmb + dieresisacutecmb + dieresisacutecmb.cap + dieresistonoscmb + dieresisgravecmb + dieresisgravecmb.cap + dialytikagravecmb + dieresistildecmb + dieresismacroncmb + dieresismacroncmb.cap + dieresiscaroncmb + dieresiscaroncmb.cap + circumflexacutecmb + circumflexacutecmb.cap + circumflexgravecmb + circumflexgravecmb.cap + circumflexhoicmb + circumflexhoicmb.cap + circumflextildecmb + circumflextildecmb.cap + breveacutecmb + breveacutecmb.cap + brevegravecmb + brevegravecmb.cap + brevehoicmb + brevehoicmb.cap + brevetildecmb + brevetildecmb.cap + circumflexbrevecmb + circumflexbrevecmb.cap + macronacutecmb + macronacutecmb.cap + carondotaccentcmb + carondotaccentcmb.cap + asperacutecmb + aspergravecmb + aspertildecmb + lenisacutecmb + lenisgravecmb + lenistildecmb + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/layercontents.plist b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/layercontents.plist new file mode 100644 index 000000000..b9c1a4f27 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/layercontents.plist @@ -0,0 +1,10 @@ + + + + + + public.default + glyphs + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/lib.plist b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/lib.plist new file mode 100644 index 000000000..1f79fe92a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/lib.plist @@ -0,0 +1,104 @@ + + + + + public.glyphOrder + + space + A + B + C + D + E + F + G + H + I + J + K + L + M + N + O + P + Q + R + S + T + U + V + W + X + Y + Z + a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + t + u + v + w + x + y + z + ampersand + zero + one + two + three + four + five + six + seven + eight + nine + period + comma + colon + semicolon + exclam + question + quotesingle + quotedbl + hyphen + underscore + parenleft + parenright + bracketleft + bracketright + braceleft + braceright + slash + bar + backslash + asterisk + at + numbersign + dollar + percent + plus + equal + less + greater + asciicircum + asciitilde + grave + + + diff --git a/tests/otfautohint_data/input/dummy/defaultlayer.ufo/metainfo.plist b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/metainfo.plist new file mode 100644 index 000000000..7b8b34ac6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/defaultlayer.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + com.github.fonttools.ufoLib + formatVersion + 3 + + diff --git a/tests/otfautohint_data/input/dummy/empty_metainfo.ufo/metainfo.plist b/tests/otfautohint_data/input/dummy/empty_metainfo.ufo/metainfo.plist new file mode 100644 index 000000000..50e6689cf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/empty_metainfo.ufo/metainfo.plist @@ -0,0 +1,4 @@ + + + + diff --git a/tests/otfautohint_data/input/dummy/font.cff b/tests/otfautohint_data/input/dummy/font.cff new file mode 100644 index 0000000000000000000000000000000000000000..c0d68f2fbda82eb9f472f7f564b1590525371960 GIT binary patch literal 9018 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 Stks>?Wo_ErY13AFWc9zZnI~`n literal 0 HcmV?d00001 diff --git a/tests/otfautohint_data/input/dummy/font.otf b/tests/otfautohint_data/input/dummy/font.otf new file mode 100644 index 0000000000000000000000000000000000000000..bf4fe9756ffe42755fb88a9e7f39b51b011c7267 GIT binary patch literal 16628 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 JDoYjRe*meSYirS*IB-poYo#QyBh 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�I2NPp2$fdDXFpk;c`xKg zo_~4c(v)lqG24OdpCUK0@uuDk4s#K#{hGZi`g7mx+~gy+06cXyxTvO&1v{&Y_{3A(;=HRg*hX~TGHF+{TF+5OuEFRXxs)=GS1V`_DbpWjlwH>B=@ibrHZ$sI z*I?tT?w|FEX=Y;*2s*dQ#mIrjy}pgJe8-jCl(yxNe!o<`JfSeE_@2Iu2DWD}<6pPb z#d>@o8G9$e6SHM!mBHf1fE)(cY+ zk$d>1Nq^nu#;FVjJLZ?(B*$7u`A0q)ycW6h>gc7Bg1HwjW}T`(<;j)jLv>6GIdV~v=RIuTz;>>JTV-rhCkxv_T0hbP4tixrpW+vMGpLVZ^o}g^K8tG~ z14x?vg_i!baE_~Jg=fF7c$30|vlZFd1x?gzgtIyaSN+cIlCgG{jlFq#%Dyew_H#s) zvfY~E*j@EZ$BKIT2j83`US|kN+U2>3_iSP2Ztu<-N!GvIvWx$!&7pg)cQ+RJb>7?$ zP+le`79Ce=DIz>&-@&I z&c%;Jp88nVQ5wZ2BF0HU#-Oy@lNE>gtb$KPu9PgiEt+g|X|x#Im~66k-+}rydg|;F z+=TJiG|Bj-jN^x5%bq9_XRTPZd1Yu+NFObix*Mc_;7W^0^G+ee=DlOtBJ!<>^ysFR zi}SbXNc(8ths`lw)ID|NtOx&z!I&0Wman<3vUZ|aN5=tnf4X-e4Q$`^y+CSf**Sr8p5_kI5zJdQaVQLU$_osbk%ct51)PNF4Qa^=iT zs~8*Q&8KA&4sG*2NXarIe7o6v+>q4e#37kO+(aj-L(1~=mo9!1=4(=={=UC$fNpIr zfJ`R6vSX2tdwgTwUpvCAMr6)dbEvX$XQ0xZGxt)r5{_N9Km2Ii%az{oGisq|TKgFB zxxshn;fck%E##E4<9Fp__OW%CU3yV{C6Hi}bn|PrXO3Ov@~+b&h4H)Zl@vBL$B?N! zkbIhT;zZ|-V|HN{v3WqbcSlkxS*2%ynautT?JA3*k%w-OcnVpqvuX&mGL?D5S z^QpDvg>OvxtL>6ocs6E9iF^BHn}FI64q7AY$C{q~g$DYYbtymJm1-*XRTw|(p%#dB zC7VbyUo7Qe3Coj7pg0uw`_g0`&MQU~A<6lkJPZLQeNku8^DTP~?^x+gB->laaY_(- zYi=!1E?hbu!j*X}Yx}jcUQ1#9<#(kGjVg@J7L#O>h1hm=>Akbh`(W%OLm8r%f2md0 zC}Fi$x8O_E4$DrTm*Bv7-%HZL_e_`)?qvOB3-NdbPTiIw@Jb2Zzg=P6FyZYcE=f9(FGCihc# zNv!l&me7Bg-78`Ko}DJcbIrF~C3V}!t%&-puO;3ye)RP|GubQem9yPtVvPQ!?Tj*n zMdX}Mt8^uo!G2?k^;h51Ut266+M77gxbawtG3xTvAAZ&wo`_N-E3Y_o{LZ+ zyDYGAiJdCR-8@SE&2q|=w%%gjlrHQudz7FWm@6O?$ApUtueu49lQJ)6h$bDRGz`kM z_>yAss=e)FGsS+LJ^nl8WM+)&DiT^MGi-maJ#|eMMAN`7V5*eTQ z|1Pxh8N0>-hxn?}XpZ4~Ia?eSR2JRs24r++IGkl=3_0I-8`*P4WEOB6vWy>A+7eKy z{Zaqi?DH&=V_jEX$pwxMpVm#G{GfPa@k7^z#D}a=zvum19cp(tw7Xq1C(=+;79X_x zHeLKV}A|((qbydXleli>>g)9L*}(*6E_}maYZw{yF#BvmhXv!7H8s6^ONMSPQWaOBPYuy3K()0|V}HGu%5PkWnzv9#e7CR3vAZ;{l!OtvB@b<^HDn%uh`3uSK_xZ&|`e4Vvaig{tk5$}dJU(#SG~b9^M}Xud4Rt6FKB(wWps3(Qyr z7(4R5{vbaUbXI29h*_Jc?Pc?+tg*C;#N$RjQOy==E=q6Dhc(7mnb4dd&TSnMeYWeu zp+zq9pqzlF>Q*mT3jN?PN$O20(-U--Md2%r-T?*0?c+wbW|Gqn4ESz-&l7lPb4tyZ z0iL5%JLuU{R2=vAh99h_O7=#zOP_8r7#-VfV>NTfV9P+whgXTV+3BymSf8}eDYGe& zx_Do3{zzWw-;+^ ziZo{%q`f&g1`i&Z>Q$!Nocv+iewW(Y%WXy_sWrmemvf@@i8~Gsez}o-&4@Hg;DQZ# zW&K4BX`C<*f9;*|@MZ0&MA8h+B zy!m)u+AL**tCW567iUU8-fs{5uAg!`rIyWjIPY~idH$QBg)O{uk&^pYyj8pHbK*)W zE#HOse4f}?c)dJD&Am@-1v$P|NCv6Jeoz%6f2PGpOnK^EnAokWP8XP~KIUbQs5FlU z#_aVqe(AkKw~+C=>hZGdjVbJu&zw=^W-I91w0I<&QS+FzT=6kF%E@`h(9X!)Iu`An zm#iWLN+o1_cVz91U4V31~1%T&rszN<>KJ|n?7YVG_T!C_7Dit+1Z9BE>7JGGXYg){f;t&EzZ=Hl$~ ze_ZkURDhn<_V0=LVXrNWaF5WgA7>Ni562$5T_JU$J#X(eud2Pn$NnMSVR8M6GbY*NAbFfN#L*K0V9CaRePnBsM6vUI?5*0FijQzWh-&4y?t0D@W z^m%8D`}uMkO?vEV-&z#!AL1c7EBo+E|6#K%?(?mcVjdTspI{@AJ}$W12Ys~_V;|ln zgg;iNJ>Eanx8=px>+UT@`OLj^`l|n!h7-%Kf+4eGdwxu1OzrGceXQvl5xxD@lO85~ zo|Ea+4VR~n4uxH~@`R*6ggGI(L(n2u>edXA{JaUn^||^MXCcz0X=BfY+XD@4O49G{ z<@dF*ZmtS*6H(Q_`hbE_VkB9I+Fjy6(|f}`@12EIYQ*8_gYvft7m0Qf zr#&yfanr0>ltzWM?7K--_*0Yb4@4#+terC|*ceAO z?$5Zg5xMP=+V%MRl?g|g>%1y$UQzZ$BWe;K)Y2~=W(l}JsZAR(rcWq%m`dO&;5~C` zIY5KYy6fJ@z60Hb)LIICdgXk&d3}EJt1mW|v{TO%vt%?j$lR%_?sMy9wkNlSd_mIm z&abx(davXN7uvbLw1sMuvVbsUkMFzhB3o%*Q17W0;Z% zVer6R#sg2sZd4}d_uX(Uy28NYPxEHUU^V3Ir&B`Jf+=P!mx-7b?if^xsN!{}CdS#k z@fSTa!`Ywaw=Ja)#M0_ceb25dWL%@jk@1`~kZk*OTcqs*#bA=&m#eCqCHd!mpHDlz zkrd8r7i6B!B;S>I5Im>u7V$uNre45yZpTe+)g|LV3*)whm@^lTa63>f>7YP&(rs(; z+WXd6y-#ivyS_M(&+_2>RlfPC;0Yr;;T_v*6MT2nNoqMZCG(LL-_n01&sOQq^l>v` zr;DNW$|$M9Zd$AT-v%hOIN4JB+5#WFtDhX#O=r=cf8@GRij;?e9Fp%6`>uuTBfHWc zOO~~5;-$AquvGlzty{^29*)1@l_O?$}C;nvb3lEh3~srqZQ4UV&8u}dSt{?_VQaq$L2SQ(@ANyhNQ!_ zo}(qZ4DNkkx2Q@v=gOWu|Ka$p%I-KVzsIv5X|JpGRyXl-sivHa^IP7QyUM$*dnAl- z>B_FL7-ziEJP9Mks+vE|A6!qjZ1HWzZ& zJps7#IFQ}4?k_5keE^7Z0e}} zZV^%JMwFtdd*t!qjf5w!`P#-eSe`C0yXWJ{D>PAUfAHJL{607NSz4MMKTf@^+3gxn z4Sy|+rp-2b7MR9eO8F3HzJ9Y%rDoGKjq5$1_$w~DV-7N3oUCk{_@Z}6&IW7I70?6@ zE*_WNKCrRK`j&W(5T7fGawBXm&u!%jp^Z?LDqFoUdcg1Goh9P)ne&|!{AJmnu6fS)qsQWEm|}HHCgmLeo2M^l9F9u<;uzmJ_ilHWQvLR~AOB(jw(S$x z-K-Zo7szLC&=%>Pp;7UCMs2t7fNAZTW*3Ufw&s_knc`v|ncqGBq=97hfl|K~ zV@G5g=TMip?>h=diSkD^YV3uJ6z8>t3pzV>WYTrI9rK?FPDCk;CTZ7MUx?@oIbm4# z@xaQitJjwUS?PzU_^=ZlvInjz z!l&kGF7unoq~f`w!m+RF%1#1TGZ>3tjG10%LPm zKo+^m_g8-?U>mzif1=OmIfkq9B zmIr%n*5qY|OL*NA;Ma#lrZ}lJxrpu8FI7(QSN};UmC+oX)oKb$bi#qB2aZ{83Ey0H zK-ev1&)aV_El!7C%6WJ;eWjew$Pf21i;)(8y)br5M|Qhjo%TV;AMsyuks@7JaXvQ{ zhw^=<3d=XrbSj?tv2RW3!X_K8pNUn_>KOBK+&wC=RO!StCc&$4{r>XgjE=O_9_nQy z!{fUB{C^eHsNo}yQw2$|i8oIW3vY>ixqrtSlT(x|!`Q+SG2izA&Idg$-;_m3?MykO zdB$mTqMEM;nb$n=6T6vMCR3I7wr+{)`pPE7#F+iNkLQ_8zGdC+5nB2%bTuZn+4nvx zbAoNjLjpNdsruavQjsmDTb{1C{EpzJplAPhRFK%E;q83gGxajh+j5fpH9m_^+Me%o zE+A@pTk8Iv(%#~|jLG$yA%WKBuwawg$W+Ver0W-A9m9K(kxN%0fuZ2xjbit)-0+cO z!w-V}<(9j11-)i`h+~zuC5y109roN2gd_u3UddhOf2y*4Tbx#YGQ=b5}}pOnsn0j6GZ)__5dLaeE}9E&^J#NsdL@;EFGY_wH1=jpYPyuo zO#0{Dc-0+r{K2#DK_v~$s>!z9`->EEGKL+dlgsPexE_T#u)WT{n-}xtokeT59>dEB zj@ZD4^MR$;J+=u*g_iENo24~*oYY zGwr?~!NsoPW09-ib3`r6*rlFDMv$=EyMoxf?dh^h&#O)ccKG!IH}k@c;&*k8A!{<62Z%UW-MT3n9ktz%>DG3%c_D9?8U+LzTD5t9M=at5Wb%ycNBk5bMDeM>wy{kNLSvyS?41CY*L( z`r!3LRVh!~4Wq89M@=p>32DB~tMR{lfjQ*)1M}9~lGC>iCg>fpXi44`*_!3y8&(ni zcyJ-8?a|Tz*V%>ro5XUbq^(UHx;a>I7C$HYPzH8p&{tznF~J z=KP&&XDa8U<(2nNw-RrpH2DvQN8_Z)XX6tT0$%&fgrfCA?5vnRXLWq2 z@s}O2Dw!gR?o-#C^ePu!Gmg7lP}SkH->BrnNjVh;BH0;^`y6aN?GGg`KTN!zml15M zecAcVrqHP-AEO-q0OF!|?AADexsJX`ua zjEB|?@45wQF0{dJyqvuHUi+>B_CNmxr;`Dw1G+Z ze4C$wh)T51MqU1|2Xg8xqsOjq^L#vhPe+xR&;64)=t&!TgdQ ziC^7C)|VNM@0MJME4?phVKW>@tmdZLTN_XN+!QuarD-{G)|TtoR%Oq4GV@eR0+nNR zSrqLh4te1lx+N+)=_{y|!V$N3aOUOd+SW;V!(o=xUyChP_3DqB2uGr z8B+3zKCYQT>gK0XV(0(vxVe{%+bQGPBCC9zsnga&PfebfbQMck_TQ9NG%USmAP-getK3MHQX?Bv?kA^VSakNHEcTd$>m*9k^L8S-cJ?Cm= z*wra_-5s}9U`3`WW_9J}<-yEvmWpmWeIB(h+t`Kwa7xm@+?J4>Al-TP_Rd^_;z;zR zWcKaq8TWcR)Nay_O*Ib$G$=`)x_>}KDsIAC^F-%KQ(NX7@A@Q`1K&ORB3bo5nWo&I z;FpxH-daMJu)r;%UwTV(+PPFZGLz|&vf)tf9TlU@{%_NEk+XxfS0~k<7#Doi!zQv94@*_gv?y=JX_I6$rccxb%h#nl> znG_j#xTf>WjgFyg#bVAY&)aRB)k^brkyN|A4bzIZcgWqBqh_+u$KWe%LRxS6&SuQm zv4AL^TFoXdQ)rkq4>5j;N;`3|Utb~Oy6%KyPDgrqwyJ=Ni9-MFj0G?1X3;EOsq+dZ z+lKwWc2T;`AqP}xJ{g6(h1ml#H30_8F@jZrV zXXhn{48!PDF9A-qQyPq4Dl*_pJq-N&7^E?`v+PGTGdsOcwEW#k8*P?Bt#i z`(($U%bR-Z$6dS~3T_H;is*f(Z2fV7P?qjes)@a=dieF>j~9nxR15jqE)je$Kkb}b z9u?~jJ@F;yyY}a+&a-?BLZM=*Rdw}k{4IgJaY!sJ)@9D!BcCkquD3FoiyA&z%4xoH z@8uzi{jokJNKREjPS6Nhs3Ws?O<+9F;Xu3{K3p(-@1c zix7Qkm6dVH|E*3*yv}OZLECZb{lAmApf2N=O>r43Hq2Cu+HLG#m3eLSg=)|-xl9pK zRT_>k(;L(>nQ!~b+-(m8=GG?h@B2P2=JUyr?m@Q8{=+s*492n_+@?g-$FnXOIqWc! zYjyK%t~n;U+iTw{!<8@n{=`{BoHgJ0YQ$VGHhLX8dNS1E^*fV3?p0GFX>+3Uyo810 zKGjnr2X3@HkD6jGOG6E$SsS7K`h)s^-$#ntEEXGwdr8XnBzzj>r=dM@+HmhbtR-Tq zNY+9z9DnWH+lqo-CoUbe?>#hyf^f#r~mfoyNtrc417e9`zY&cQn(V`_+OQH=KdJo{t{s1*&cqtrljE8LR?wH_Z z^kF}7y#Ade@$`-GjDrnq2OQqeR&Ff*>r-9DqRb=v1vJ8KttS%(7+!6AoSyyFr7KVE zXfRzA&D``>5vu77(^vQ)A?vxpJ>pDrZ~DkfL*d+ZbDquiwNfFbdsX856rOF`V|y}^ zF^ntzfUe82VTL%F-#^&?{4Uct`0;3_g8YE<6^139>iztw!FKT-f|i|$Y-Rs*Z;3OPe&to(Km&+G+`$c)Q?Y=H?(^M-*zC!T?dSRJ1%6-mx za*t!popxWL%9#C_Wy)#nR{9-}mg`4N*@{9l-kp$N>*}uwO`+^C9C=3WJ_oORyER_x zEjjGlRs6V4-Z+$WG3%AUpmMC+el(xV9A>CWO6PXqW7Ed^uz~5H`%N4@`;H7aUVO17 zK$bz?x^0`eb9$kz;ieun!Hz~I4fY+C;d*aHlb6>-&pz&b$ z>r%!K^DEhllS&_Lul~NRwR_xq{us@l7ATmIwytRPo4>_fc+%kEjl;{+%-g)k6RMYG zOf9Ne%b)Yz*mtbKc5vvRNnpxhE(WJ4Y4&RbjpN_>V+!0C4}UN7#2P~f>m9TA?GUai zdRMCw)yqL2A$sG0R7FF{pFc?UU;A7j*N-1ttBWXlKSdAU-blx%9j6syObFP>RP>8>axf7qX3r*xBtK>qvV2kUP?etitG!T;Hv zeD{Tt(R+Lf9x8>Y>e&qqPo2(xtKL_w6VJR*w94P`?wU!M zoP7SNpzsU%6T5?Fg=wmfQ!d=Hcvh&iS8kcxhuiIB%uQQWBhzj(^=G(ZQ(sI^LaCI! zyLFQFk$iDi^?msdQB<#s72k*J=~&MVj=!2eAZTr;)ZNeF$1*>j3BQJoYuE|JSgPL< zZ=;-SVE!26Bp;uCXfC%vgFitiB2H{2Ge+IDuJrPGRvwqFq0A3wq=p?==lkAz30&>j zpO2N$i~s&P=}(1h@R;*`yF`eS8hpPyS+k+#YU`&MwL~BJFd~lLDn%VV-74=e`Dg{L z9tzJCD|;S+6BAtJFAvlB*QXy25E50jV2FO)ef;B*3`OCM4Ay_Qw46cr+*k00I#syW za7awS@WcImvRfNm6>TOqu~kyG&czLJH*gJ?HVi1+8Q0jC=n)5`b1B@pM_fW^k~>xw zdf&ZUBj0$xVdvaZ7BhQeT$J)Xr@$7&G>WJfldR`m(p|`e-8SOm*B@i4LiQ; z!n?JZJ7fu;r3$`wev%cvn!mD}G?V76%t>B-0~ck%lE+kG4@iC(Je~R&+4bzZMHLx; z3F-DQE2b=uVg+weOk8^Jo2^z;%2GBK8~OaXSR;Ce9Ii2Hi?K9WLgfQm?<>lW@@@ z`bC}a$TKxY+iCrlh7TN!wnq*+gq+K{Si5Gr*7!(gIO6>#wP3%t13#qfoqV>0_+8!q za5L4JcW-M6w+7H2QR; zSQ56pmF`JGfK=$V{my2g$;BcswOcz$Pw22m7oX}RYZ5IKHCWd8$dnXZNaU`x+~``1Zt;`o}!3>>+ll zSw7UXYfLDH*Rd<~O~pnA|9HI8wY4w%cL^={9Dbc6Rn(PGLvB21R6SOEba3nD_u(IJ zyEk<`@jjEIYx6oqA>*6Vcur_xyGMohYGm2+!8+py51!lHCO&vw5ZiRV24EcLeC*gR z?A7I~+&o!ylw&`vCboNuMtp7iR2vze;7T%oNBlW0+pVBy_2os%bxuMDmR~U_{r*M5 zpNe5D7|r&HzIdjnch}mL9TFc{FWk~yNq){cbzJ<#%U4rm;r+MTZ*&~E?9i?n(Pzlu zg|b;y(xPos<|!LXNB8kA93QipxvP~PJ`f(Ux!J2jc<7ysmOhWd8y^jA%lwzzuX$_h zC>y9MMpetk$`iRS3v(=I_PtIH(=VN*YYq3Y_|~<2i1YPENB%i3vAb6k3OPl2h+@2V z2wqkjPu8zK@}9XtIKO#J`NC(%yAk~Q`jlx~>?-^8E=JfNt!%J7CsHT;nO1^Ke0pUM zWw?b<-_loGX{+R$w~V)hsXcekQKb=VnqSrO*?i~F%V4>Ealy9ix@xD(Kc&iFJ005b zNs&%whthqI3BIEp8}Y2aQ+`=yPkmRF>4aT}r)ZbB=S9mS-D&r$Vx`wqrQPT7)vqI3Ezi$U8D!gU7Sw;$tS_oRaX^ThF4-z`%AAvznoF~2cPrQU zeWnTO{ylpRrEH1GVk19H6!-MvbivX24;G{>uZ?EuKX{6YlBY24@m$osdUiaHr7PRf zbGIOK@2;d&S^ACG{#+|QqvQhPkZ zLpnrTV)ZO_YX{O2a%|=!^ChWDmtXLV`VyTEB>J=VN!z`>R-JKdhFWQZBHo8Dq7ha&K>| zV~88IP~WGqkLR)d_YV6c^ZVqzX#s;uhXv?Pw~C6LOSlr`NMAhJW%gk-l8@`2`jMxK zo1ZpSD1W63bwArF94lT&qBMDv)yUv$a!uCbL#h!ml@-)Jf-Hk`Ozx$}p0>Iil`&uF z95_c!cw6z>#7%cfiT3v={r+4d;yqsHj*pM5q{=A#FYexgEv%-=7RBA&-QC^Y-QC?G zxVr>*5AGh^g1ZL@1b5d!aBec+3*S4LIro_}XJ+ns?hn{qt5$bc*RHOrK5iP>Isj~= z{LxNMZ98gLXjw%AZ|rAryd;e=F56QaDRsFy!Rsv-IR@$Q#6}eEeksK{LIV@va(Q>` zz;5NKK6g38!E@DCjYPRjbKsDzjLWfX0VXT}`0m3Rh3@f@q=%7V29lf!>b)xN}Yqlt1?#Y*f(Xm0q+D%lFKc4tnR zJheyJxdcFXy3I*$GM@|PaD2(|7Y3E;e|M`OOJ#m-@aaVJF~mN>)U~2=oLbe!Tec#R zJd0a){DB*?$bg=QkLG?4O#yaQIf+!8JcPM+YW)M2Td!M;lh)vkd^4xdyC0lfJMw+`4a240#__VYTmypuq7Zck~A=m|oQkt*l-6gWz~ zsdHS zwg6(yFc(ki?P0{#FPVC=OFCl?S10Fop+odHG5FkGgnH+3o8L&3atPW&RY!NUF}sb9 zN`6zt4^W~=F2{?hisFCw>)(UXNZ`k8tU&|hD&IXSG`^c~f$Bz=Uq#M|Daas=SDoNg z83)rYe>ZZD)DsaR`xYwFo%*$XZ^Ifj;OS_^M`8wfTrM2MQA0Y{{mXlb|8MJ~3yixP z9hRB}807ce73A|ue(Ne#zd&8bvP*_;R)(ll^OsWX5lE_8omEo?A@o7x2u8+*f`frA zHN9hB)ksHS*hA{Q@#=acS!i5zE~vG&2=UM?)~O0R<})p%If{Z%)?WL3!Q(at+p2b` zlNWH#a}}=5ZDOd1*Y4&K#ToK9n$JGsFw%D4`O7vmeK+j(TD~z*7#-f)JZzN;=@r<;oG6w@zkbj7h@Y-a7|E;A(|}6y z=YT_>&l2BG;+u%S7D!y%L0OoIDe#^g9Qcq9yO$q@UG1doTt_)ODt2g{-;Gv1#sixC z(9NT`8Tm%tQ-2s>F$sqsv(3J@DyBs`zAC(5yIUs2k5bfTetx z;N=%TFb#1n%lfT;nP@)n4B&T4emOAz;qo`+l0>Q1bwqTq$!A)CL~&DH?>DXgw?@hS z)cUn~fdBm0FJj@63Z+njX$75!{@agZj8;Um><_%5B;qV>|@07vX#4?r>#TRcs1J)n9Ck&X{$7M90RI`5d_k z#L|a06B4@N(-IRn0yhR(okYNI9)Gn237Zp?p#(nb2<_}HZ~)t0B>z-UVr19T^tI#R z12(`H?$8gDCCrZRS8xAYM6FwoGTY;RJ=#j^c&=7TDEZQ;kij z5>3TOkl1&(^9}hnF>320cs7!_I>pS;l7Xw8Do*hyx)tSiNBCnO=8P(_Ouq5-o30}* zp1>=aC@@=k5r1nYSPk}57MRp=Dk0?f!!?=roQuB#0V`B=NJ9B*)a)Bev6Bo&!{Pe0 zaqD3uXgDI(8Y=CG4XRgezP-5@thjw-)^H1re*U?~du&rz7MW5%z16~eJXrLi6VPjI z{TZIZm_b+boR^GY2ZLd)Lq4#qkaJR5zHpT%!H8@0o#9J54IA?}qQeTC_Jr>b+zbD) zJpV%lsK{xh6gCUfqe9}kvQIo!*HN)2?n*V}r(DLa+fE`TFG4~EBgWkiH+cdlp9&}x(p5kK)S~sHFWJrr^V#V)hGj{jf zoJ{z1?mvCBUg#qapU=M@YF`yVbp&4S?CM`jJgB~-5CW@I#S$Ygv4T*$f;+f*&$4)% zu8p%FwB-0IMljo!`*+(rT{9@#J&N49Y9D*yI$wa9!y)zs>+|p_`YNPdbLFMZ$xYO* zQVsgSZZ|C1v>Do>f0#*%4j3AsTDo_;Ih0>{Y`ll?emO+H%WrGjk~p{8v%S7`&4EZk z2xI2qT;6@rNvO1fSfNy{uF;+ZA!rbr$iOpb0fL;>0{;HJlf^2_B6XI!`eB=4aa85h z%2n*j!Vq}WdsMxR&_|YXp92MG)^*em@g-P6y>i}?Fwmj8Yzhf z1?laWtzqqyGt0voYL_IYEYPrgRPuhFbTeU7rz7Z z#3~GQ`I&KrtuSR__^_Hshn8gu`1x$6@4noLp(}=#P+XqFzrz4_=|B7eRK!POEyAcys zFh!lD-R^ebnHbYQ$km>$0@51@jNBdmerEmkKeO9~0A+gxi@6dje-v%dJuL(*gEaJ! z##Kk!@adr_bru4(aY3EI-qN3!0>*hyf0y`Wzm~8qB=H9Ct7DD4%{bz_8gKhz@QcfI z(S(zIL7g$1(9&nr2b*Wxn@V0oA5iTPyKM^Vi5*z?LLk?~C$n zkYUj2T761|r*aIN#FH?{eLB+%Hz&fYis(32VL|LW8n8-J^4^f88C+ZhW7|l)ws;u7 z`>l{*_(N8o+6*v(!0Pk3tNu5F|K(04rm|pTuTu|o9Q|B6Bmy=vZBrx|BgF4>R;Nfg z`v5LD=w8tRapYKlQo?SM$3tIkNK^CM_kT@L)0XU|Zsi1HeNjtV{1Y!)@dzJipk`tq z74MfUIHZL>rl4~@(Yk@V92lVF(#dAXzkjY(bx}zJ6KGO-8yZKz&yVnUu(L zz=~Vd=S)HE{-ISWtaAZ_OsBB}>v}`9U);9D{{{QKf5C5;=zp>X9RT!o0ea%ZOCl!i zjHl;-+7tQxmh*2=jxWk@P9LN)X^}jBNHagyE?}#6;WVe??1~69&07VEo_l-o1(96i zhGJGId+Fxl)f4}^aNNyd2yC5!z${-?i2DI`y%8DU%jZgiyP96I(i)^%*K<*r-M@?` zV?H@qoH?s&T{A|Am&+~Md-a@1tCF+`l#N;`udB;E6>B9afcb+t-N%+#lw*+kp3mrw z@OM8vT^q@~AtiWblScW68x>~E7YWFgt}wEY&tuL!%3ha`@pjGUM&n~HUn+gww>-M% z6M+uw;ZrtIKi9jBpy;J|iBS42=}2c_%Q$$0^_VMut+|qK?E+cWW$9HwfyH5!w|^Xc zu6W*d<~fb!SX0=OFgO|%=AdU)dR&WN#r@(Y>ttqY+TV0Ec0S5I*yNw4K>CL87lr?+ z!hVbos6WxE14a17ZsVKfpe_!PrH!J@U2TGCXNlCdmM0I$IJb13RL{&T17J(Yw3N1) z5Z)6F{`+M9D?ZEn zI}qmVehc;dc%c3tT{No`hu=%DQ*ud4>X?EFO0>65Aerg>83cw9FD)VGYb8SOY7$H9 z#4Oe`?tu(HEv~q-*(SOcUT@MG?I4BU8@j^^o;SgSfDjM5&_W*m8xRA>yI;avRD+`t zfBK$+c`{9A4?LLxIHw7pJPfSX}`= z2kEMcjK|V5mh*fl zA{3x6JvRBdZMS%Rub!vS4h!NfT{P$r>yf!D zV>0sqZ14uE^`Iwo5sOE9lw;Nt;9}t>REELQ324abO{>4G_pfu6?iNk48AMQ2mbNV6 z5y44jiZ+=(!fNoNZwX-+veX{aIpQNsQBNklbBf`*NX3T+B#7gCSW=QjebnNtFd+T~ z6ctM!;cxrjSMj6D0T%^q{r9@u+48Ruy&cQ+>SdFK5Dy0Q5JotQnXIw1(0QVzAq{Wl zi|sX@xw^3C+J&7B2HYuVtq6zTfW57yi z{I+Z-o9P;Qm2e+F8i$pCKex=d-a@p%j;g{wj=2fFtX1qBy#!_(@j<1SaFZL%23G*Z zK46jXA6H{*^}lp7jiXG1w$Ez~wLu=JSx_!Q{Zg*fzS*8%jn5zlg8EO_^sfX;_C`I@ z9mRTf`R`3xp5i=cV%B3f&j7-S{2=o`dN0E%I;HA2zEht4M1m(RhL*QFo4Gt@ek!Nh z$8nU4B))!)GgfmyV>23Mz7`a8DjW${5-+{wm-swE9l5czja_}fG6Rd~N=Hml{`^Xo zx&$;;I%W+WlVn5h4ZT_LM#^8l1GnJRD`>%^Kx4gX5;qt^cDzd29L+-EvBzM%w(EEb zPXo8H8SM1((Kc|3wWy zG_^JJJvw?J-JG>lo|CPhpx+e!uN9MfN&|~q=(L=Jn>>kNJPpo7`F>sem!RJnH=S{% z&NTt!k=hoXn!ggbsiz~^s24td#_iA%c%l+H7X_JEya`V;m{BIL#TGnCn&rJV;q;20 z8w{IU)(pT4y6#6vm53`O{6eXfS~;>D^&uD+sJhg~f~!Q- zA3MXPgh590aus0{bFRQPxy^E+`fUMHD2akEhZZw+(L1d$f^!yvQ^+{7sIqyyVR|)f z_uPiUw^YD1p_0R}m2^Yi$^+Z*D>6sWwbyDZ?eWRADtpug%Z@=*HcvnTHayh&A!!@u zsFqBqphqv_bhv0h+V_3)fy?Um%$fh%8R`j5P=Yu@Z?>_~F(YyTtk?RL8#)%4rEVor z(^wk|ss_IN68gdwakPTLHzGq(b6%VBde}F|aMBrG4@DTzN&hn5Tx%>1^(VXCy4&3Z z+;|cLx>(lTIH&2n{jG|g#lxwPnC&wF^vw#?!7YdEfq1>Cqt&DpnT`CoD_ zLi6tr94qIo@b|KDte|~l>%GkA$;I(SxymTZ1Tys^@kV`l2KZB2VF8puDg-On@f`9i2Cn_fmz@q4+_PC~NQq3X^ zDn;z{^#kUnex&1PK#3neoYJA$j5lX~4ncBz4%el+T)5x?qGznaNDIBF9ow975Kps} zxLzYR{i*w}w6P-I`mR?}x&8X8*G zp;zq|jrhqyC645QPx?2${d18mGn}_ai)sEn;0%}?3to*G_m!Mv z=JW=fdJV2JL2@VhmeGRnDfKiAfe*44!m>M-o-d2N&GvU-zNpLZM{%0Y}wr$ z+nTwgGh%MjVZXVF7s=jTY`%BPvbM4BP`~=ta;LdoFzB9bA-8c-%P6?RDo)~) z(ZQwJX%rMAEJh|Wci1r-PS3Of>1O7mf?Gilb*P1clu5GkXu^Sl2-5)((8*%{Opq4$ikB6 z1*t42)9Q=#g-Z5+LeO9on+lUme*nqp`67?0C(} zZQ?OJcZVVvc4QfV2-;D)*FVo&=ajFb5eCInVjN3=>`h6t>97RlkA4?f;3vqpMD8v6 zH*j?+mkJ0kg4E`3bTQmlRyRDEF@or-%Tpvc}BrzJ;t50C*aedU; z+`ubJ0c|38OD`61d(>3$aSV2v7bI$xAk~7czryoBU1(}(!xHO4t(G`qq?<=8qyl8w zl#*>rT=`c1Q!lH}B?az*;sQ7z7I%bn2F$T_OgNyzM|LZ(Hko8`68BJgJITZQy`=qL z{@VW9g>7jeiJaZT`|`QtB9I|i2C;*3clUSEg%C1h?T(Q6@zLtNW(?H^JsxBWe)Qi` z+#TG)<}}sY{L*2n0LL~)(s;Xw8O9u_=&vPDV+_m*?9z){bW$JupYuYg7|!SBFq&2~ zTc3h*0aNuT^00fJ?-e-t8cfxTTJ~l{E+=IGE)Rmp0llz_-UBZG>(dg(#u5y{j$khU zY|d;j{v2~y4p4zYsX~ymnt4)sZE>JzBBY?@#azwf*~fA_RpA8?JjqpZih8Jb;TnQb z&pgD&cU6k~ONfHvi`P6b;uOfI8zbcKNk}OC{2~+mcAv7Dy_@oN)Pl?aNx))CA{a-% zFSKpMNapCJKwW>V;D5)b`~MEy+G(Pzbh#!%5MQvvX8sIn>Mh6r&2TXiim-?Rri6vd zgg+zBaZUZ3?e-4~4W2T7H#jhxqA~H|0?8fG&7olsI-2MOR>?r)YFj9g8m3yPbQ-Nf}y%) z4sgZRa>vC1=l;7>ee#H0+KD}~hqLZwDyJWRw$a{SV=4ClKbSAdj!JiA51NwQZBSCx z{>UWCzAZleCT5j0i-8D@Oz2wS7tkya>ue@p>v)gWME)&Te7TFM9UAVkQdCvre!a=ZHPrp~bevUz>y71A zGK$)3hC4e?+#OJ>c@p+^(a#!PbJ*9<{13ITOECc>sJ0StbOPQRhYTzkBlrDS0<=q4 zlZCT^<5Py}s|FBbMjqNX3{u0dS(^Nk>r$=uN3@5)#A;TQ5NoSNmW(S{opGc(!r^&& z1-=jn+Q|0`1D~^ZUW@Hldi4xZYdh*8dYvT4d1nE|3#oIp9I;NjV#IsHyfo!OAiUni0HbeE!|`{PF;19@nGSCv#NJA`LhTmh47# zmuZzH$c~MGrtcPF?R0_ibig%py}zX6#K?u^X+r{d(a9}C350W5{HB-)A9d~2nAAN z))m<#pX-7S`)M9=Fl3hqdcY0$8iSKCPsCT#Kf~0XZ=fle_V{*s_)G=-Nq51MtF_GL zdHXp5V5z_2BSr6myTgjLPQ7UYN-hAb)zMz1o>=#W3By!JQA63VM`O;8ynBa*o>IpD zrMMn2u!j1-bPnC2%k!)5U-R38>c1iV9cuoaSFL+EY==!N2@y$`lFI%_ZZD7hS?!Y@AQkBTx(IDC};6xS$g22)!F7KlDdfQcuCA`+BjxC{ z`LI~+ZB|s@4CboM8^$2u+@rxn{UkZ4x$PnE*z+d$SJ>vivYlnx{uG5d^Ap0AK-DC~ z6|LQv0q?&fskdd(V5{oWk*lu1f&Y)>y;QlZYIg9|k6w09IKGTi#~KH^{YqaqLoQ0m z4q_QGHnx*vwM~Tbn%F$6(D6nIri2iFxUE&vee$vT4CnC^1^5Hk@@T6~n}sOQ2e|Q2 z65M?X!OVY8Y%QGMF%|Cp;70*l_)G?Ld|Dhcj?{sZ zK^D+pF;T_{WCIp5N)!x_@o%+IhN`VB-hM~d{R_`2d|P9x6yn9CUA#%xy)o%8BRTtc z7Q^F0SrNHQZ=(Mht0VM6&SQeH0{o=W3(;vmt1IYMV|o=Lri~$=QxH>i{av!htms=# z_hCa#-a<=n!NbsioZ+sRJAonUcdJKHi9Yu>I&w<%hwGcfB{}Y_1IQ(;Z@u|@bZcsm z5zAn5NOkEYX2CySh*Np?_H@u!f=?)pdzWedE79A^_ES3M)mdT+nd}8Q z2w5_S+nK3IAvMoaiu?JYGTDWdWfDlK#=V-^@y`5Zm(#Suou54@k1Y4@F}+l52FaKs zrcJNMvMM>@Ipaw3O747Y4z>@{5bquDHi6KjI$|Kn^kBw`mR=zl^bi2*Y&m34KI?y4 zT2@M6W~uTtCdEfPdqoXI>&q8>MSU(RVnNR9eWT>y5#W)O=gTp(@Qp!B-j$^J zb($EIKF$`fGq}8O$EY5dYpHJ}{$<+#XF9{Gc0Xj^81- zV+$&wp{OQiCW(m&BlM0+_=a>AxRGWg==C_As(v8ozPy9cRxWELNsmU?2C^BMY5VWa zV%9XeD-qzAIuFug1@S3ora~{MmgHjiOs3KG4T#1R=4M`M zbts#fxew@?mQOy&WBTQY8Ijq$gjRQC(c1(D7I-s5^+#cW-iDSZXV9*HZY77=H#{ym zC|svnr&)s*PCxa@86p8ikk=!6xhh#Ab5tV`jSFi7IUo#YW$E2Tzs;j=mP*Fe%_blO z3g@0(c!GDU`gR)s0=2)IVNk08&+GN5zM7=)9h$OFxon$R!4`zwK9~YmFk4nbKRXeFoVUCx zyFt7USV_2sE2~a}CcW>E;aO#*Ed_DXD#D8St(k0lUo48*;Y8g^>LZk z1Grsq=?e6U@@G=~&CpIG-*vbr4t&4l6 zL7$643*V3`VzS3-a5b{<9|HOAZz&7dEF$9YD)4{I0<- z0-81Pz+c-K9q88+S;2hu8K7}i&Yp{Gq4sNl4;p3zZv@>b2-KjMcLGO$NNEzyimOT6 zw0F4z%so=BQU1_#?ZVnV{dt_ldr8>2#;q=v>Gytu{l3=v)gT+NuRUT*R(DEJN*&6{ zTqN&f0BfkC9HU)KmF#e5rl@Gnq#{TwHq>GbFWz#)AyC4VRd+yrrz4a@R z^C+SA+ZM}K8Pw!{p)Lwvr0e?51gDbWi~6eR2#q3KCb->HK()DOeV`d-`^XgNG9oG6I$XnMUQNyQ0#z1~1+5#yV{!*56g%8jnxz?CO7o_u z@H4Ru2|mJpCg(O9-&^L=6xcg(0tVm-pWhuz|WiZ`Wo_rOAB_w4jPVzbX{ZZ&va82tQ95)!&y+yH?`2dG9GrFw)2})z54n}u#?3C;dDCXZ_E3MPS1<2p>>r=$U2M#;CpVof<`ol>5i{hvTp`T)6~jc>^c$@)ADo%3Q%_l;2-8_+MK*oEI43I3-?oPYHG z?ybkeV3Q9KvL)>G(r5O51N&=CP<}jDf*!cjl}U!1Q%Xs_`?|CX%!@%aVF89m=1ekU zqDJFVwO#a=z$3fkld0jQ_-HS@#qD{zWkQ@~UGFV(z&^UY#`0{|;0wOH{;KVfF#Nod zxiyIQ25Y}XTxz7*0f?Tfed$PDY(i1RluNtgASVN*l~p`)G#k>8tlau$GiKq(q3a7F ztiA2@^sGUhHG0cjx`**xb}C`O;5F z4QZinqNjT0*kXT+Y7p_o*^yc`*yedvUpFfwCSLO3{6L|x$jmKd(>R&_EhP& zz4?vy9JL>|{1ZLtK0*tB+QEzYz?n6N(M$Wb6#mnEr#`a{^T+~q&AJaS`F4rf!(mQD zz|bwO0LO+2i6wotNughZr9v6=2uvzn+CD8DtzJy0YOs=n5}$zo^?*hHlS9+rBkrIZ zUFn>gDb#KXh)0;DqZ1pi1c0emaSeVT9kAJY=2f4 z(ndbr@)2;d6eeg2#5N622Lg*2-rk-@piBBYi;8 zJQvu<;a3{j*VB}b>$qQv9B$mkGMe@crBO0$q(;mi&Vf$hRLsxJHaobyfvqmQSjX(sk0*3jS8 zeUxZdiaL{;>yi7CgEP}9k*R{OiLc@JSPWcjtw#E*rE0Sutzt;)6#TtZ?J2T!v`A)N zVmnF>HRx<*OwD6CQ+}e!V6W^axa%OzqXY}uNre+3ycoL2Mf`yEI*_e4!FXWKwgmuQ=P}hXNC=h?HYn*T_0%$4)nfbf zEOzg-#=?k4!fJgT7F_7WWU8zgei!sjz`tCIZHsHjl(AZap>R7F>Di{OV?ESrRr}QW z>}#H3FKmxlR{{*W|*5zc>a2ITTK7sv>9B&6jnK1OCAT~ljG=qam5(} zqh|rJki+fOHMtYy$0C^xw8)~K?f82H8>qxOT-f)}*YEi=(j*J0!r|Zfq(u$)B_J#c z4d6x-L(0`7(D*!galgzvklDq2xO&IWfWFRkKjVcIt;4I7KPTBqc>NZ}=S2wbvfyUYnNTM zS&*)n)DnsPZI*u1HQuf6+nT+sdfl)~`>+hed}QQS<6MMY%$>vzu@`o&ZdjGlooOz5 z3TR>&b4i$R{XzHJj}pz{1WiBe1`at5Fi^b>;;kh-j<9L-a!XFd2c=IDuMD>(;y2RD zBDmeEW{-8D6y5@A1)niVJcAmopXoS85*lrpd5dtO@5p`@_9M~&-zcOyB{cxpp%cnW zvy8B!81K_L$N#*U3;Fanp#QnU>i?X*F!z#u_Z$l#v|`h}q)xuFEliyGjSAvt~@0E`(@{F1gx$ z=M^z{a;$N&=VwJUd}1p?6bPuaMH0m|(|>omLG>rAxl`2kM_Ce-7R!P$V2+i4Aanwe z0G*6k`=|Sn?lGF!TjF}e0846e(|;`x4{xlblQ$O<(nf1=jAWnv%F*Jo%^1JYsBHnV zN?uZ$q|HK5@@p>`0b~OX5c6cpdA{Y!c6r4@7DT7QWpGOOSTaD9 zTo5x=;k_rwKR3dEy%5nQ?rOFR24c|bVW>FVXvi4Q_q^5rPO-79Iiw!`qM(7{Yht8LSQN@}Bz&?oCLFppOGcj5f%bVD==p<`I9MZpF9*RJ4p767iux9yn z+#Je{!`bz#xB~vlmvXMMep@`9wXV4Pq7?la)Bx%z4Ta@=)=Z=wMSb+Mw zzJzmChQyHl^sJixoqiC+x!7$zklVnrzXST$zK#|FoF+F{5o4a&qLi3gcM;q75f}F8 zy532$Zo=Hh2mnNo5450+KGa`aS=zj%WfmZb)$@>eZTj$qcm$dkV>cjn={dfaPZO{f z5*PHB0%<&0Ru9k)?0yEtOzsn~W0?(7$pt1cuC|_ogm9Q$QP6GOvrR-JMu0nNiP&i7 zI3M%pE>l2=!)C>m?`;L<=TH?*nDwk4LK`9=k*1^hY7>>qHq7l_-j`f7n61PTO0GxL z>4C%uObL4Y(~~6z*I$F@TqHG=%aT(sE(j`a{7uh)Z*#_>Yyse3Uqn4nfUMl9BoMed zbq#6PjM9{09*|x!vKBan;A2;77GKR?!A|=emg6udF5H}BRPoWhoTWi5NoKu#VEDfO z5*=JpbMG7GaF-9(Xq$m*tZAWc>BH?`s**ST34%DX);=V0DOU1d;TXC|qX@B+tBZ6# zwa$iCVM?>!9;q(=`Mul^TXdq^En8>NGM<})^$ZF=E5+Bqvn~cjVG&VF5qH|Vjv|Nc zWka@2anDlT;ycxQkM^8@JR5YBe`<*a5y{WP?u#OjSU0;lJOazzySRVe*Mi69#QC@$bK1|1;9($!@@*!3KdsT=m4e2r5)}-m}O5 zk{^n)N=~LjZxF3a6sT2Wqw!@ZPVdzJV>hr%h2>X|_I@s2yPYCLZB$|JI`R)LCAay` zlP-8>P8XmNWNb=1k^GKwlldTsiY2trj|X9COMc%BUb}?$qV*YlR$h0$;oJ=LKBhR8 z;98+hO6x)oHukIoHx8N*M~sDw$1|n`_SQ%YR$UAV7M(?5kCF%|4@Bc>I-srh@#7aU(5qM4^Hsk~x{2)%l zpW_#>;T-OeCLKuz9^rA)__Rq0xGD7fBxb!4TX1L`Ss}AeA4CTlOTR7TifjL$4JQ(y ze#2QgHll6pqnk?_H~IwlUiJM8Um45p+7r*>s=tn-fM;HM+jq=t));k+&+bIZSy$r+ox?6(g%+zPe=pze*%jZCGdz^KME`@e5 z?{!YUhaW6)&NhzO$GdpFw-M2FR;buWWd*5?jMtJWnd7*{GBdj5j4ApcYJ}d z2C(LARg)KYpq-#sDps3TwP~kTatp!0!H&oM3GBzQj>2UqNg`|VQcBMpe<*u%WrtvT zeRXub=R+7JEBq&YG=MR2`gT1)A_kybXiSxXUtv84p?3e)~wq+dwXTUFl|h>Kh9 zgO54nP&&G3b#dJz;&!FW5v~a5zwK%jUaq$XCkgL>Bl|Ri0!>Ihe#FYAJ)E zn3lw&D9VqLzTXXl1b?th6RfYl$$E=kaLBfBfyA&9YT;?qT7J43i<>J{_bOz&;^?g)h;(?E?h{e}F=wCy z)V4M-@+FC+d(4S``Aybua#i9Tckn<6i2?-V$7T-G$RPlf@qne_K>Et*)8(E|=c(qt zQ{)QH)9;{t7WmR5Na*`4>_DqbElZJR5rDIV4dTC4OJgJiv|KU( zXGq#$F6DA9J;6YD+4c`A<&=-SY}{Ak91naP{6w_d{56)m=WEiOJ}pDJcxV#2eRfyC zjjxzzf6;+yfo@~*hQHd=)2-}>?>VlJi2KM`{RX%{#*y)v7MHg&Mn^!?=Aewky?yei zBi>l}UE}s2d$??@GdpH_T4ZY-Ryo|xMKF3`DwpezQ4~uSgeJN?bl|?a_(N^wsb8l@ zDhU`|^rB}g{CtYw)kUkT%GO@(#Px3dh7UlKu&+fwrgZO`)QA+fuC;6&0U=8}a{T9z zH5B7q8oKTP=$W}FZm$fXPKlI@YfjSa8nW! zfzmxBW0+$=8C62aevrD4W1-B)wsWyk5;ofzvXNmfzaBfo?S6y#FDrJaH)tdS6xSug zX0H+qR;w2BkjX&%Qk2HSWlhKr*u|#1ikom}6g>rk}tytQ2S&n};P9*W0+`iAtsz0cdP#a%K3AEA_G z^(%|S2xF>UuTD+n!Sg{RWW`yIWx*)edgy@Lz$(Hd*Qp)!guzUhyA%*U6L2DPH*}Lk z)4S2niMI;8A`n|0>kYD%3Z^)2H9g6TVob@JT*wNbwEGpy!5709`%JB;x&$h-=N44e z+O_>DL7yML+BU@Eih4fv)gB(sJ2-sc5DyocVkg6jT`4gSQyJ@4KO#tZIUc2nv~Fy4@EwG%2GVt%H81(bMKLM# zRwODNMG{Pqgnc2^eT1I1JQL(*CuaIK!;t+~+Ixq3#?#TzFY?Q|XTS?a0v?g(Tg5(<3jCcn`+@+6M3rKd`z`V!dI}4Aot8#(soCp2mME zq7ETm=uUh9ZU8Pef_!1*P0-$3M{}VW3%!}C<6$eaoR;f6C#tNad0?s%MWfqFY7qoh zoYK%VTV{8P+bamX#MfuIoa$GYSirh4I3RLIwg)!Ahpx|KhhisK*(#;pp9tv(ipS6oCX6`LC($2sC@l}K zg3YCkoa-mGUusTux(U{W6Xt(xc(96ZEj^%!$y4Vv=8TP9;k4Y)(9aHIiG0+IP4Vrf zJPRzn2fvijiib2i7oB94dlUHAD~vRsue=TrWP8!8D!d&a#UYX9>>4EUXV;rH>OB;1 zOg}9v_6R1x!!8{_Lq9&u>PePeEei}`^5k(9)E!(*P}khH`i~8C(?Y6J!>TUj=@`2# z8ooefyT*P)H14igZM6mg9W5_1YoShgO+y z=5p_piQm6XNz2QY?52*(zGRd1lB#yK}7jb@bBBNA0jsSFH)-pv$d;LKInA^-O zgs`Je>HFNIsrYj~rjg$#lK;Ob_IO7mZYq*PRwUB(Dc>d{>`L|hXn32m6KfOweIqk9 zQg4MI3ua;3tGwgQ#g#~H7u%Vv6`sMW;5tn znnHTQA-8+%Z8a4Was%8+Eiwtp*z7QuxtLvO{`^S)g34rs#D2b{6q70{G@nCQ zq++r{?j*ERqYd0+iwgyU<2!s2v?yRoh zB%@)Zl7h$2gz;tJxK`TJjzp4_+Jf*=`=?~yDFCcmd&`h^9f1DOTsc`w*=e9>;PhRz zj0(JBnmxrjC$(Vl%++F{)6C}sD~OhB>rh+3>``VX@I!8l%MUgzXiz~2TnV=OMqyHY z@;4M{?{%JkEf!hGClF`aG@j9ytFNNRjH5b2 zt}9)Nhm0s>x}b#t!t%VS zXR1!Ez;1(i@WvyX@mP>e9N1YA zpoqTN4>3kd&?C|iM5&OR3da(QH6|xyy;uVj@v9j=NsS{mVkni)g67_>f#5Q$-9Thf zmKz0RpKbMzbCF$7LdVW;ESUw`T<|h4-!>@O$+#;q4s_=@M06hvc?K;=%#6qX3+8Hn~4E=*h4ac9BdqaZBw1*YD<8 zpM6(KL(UMlPE%-DU=`?dJU#VUz73kVm4YVnveUSa)yS$-kMw{X9zW>ZJ#rDJmmD9 ze;!7P>Fk3Z$Bfj#W#(mIF=)126?L>mjJoO|f!MB}6D72X&wvyBBUIZjS6 zgeVDWtOI?EKCt*xe_I7%F#i>s?7Z%?a^QOA=T~)5JZ`Rt&8v4kX@XeC+n+JM-o&S#vi#zDdPCS^QKZ2S`zK%kIt@ne+5dUT{13BB z`-?Q<_$&~`GTL6lQ9u=*I^tGkBCbe?Kr3z1w7p}k6fds%NT3j_U*!-BCe{EwD};4D zAULB{X6dBEu*Ni-pe<6`Wd#Vm02G~6N^4-(F}OxjfH;=8Y=mejP3Yc+lGcN6A3lEv zr7Bd}-vz9bRF&XaU2T0{`NR?Nxtx9@T<&1vr^9+On@44@z-q#avHLmsHvtud_!TMf z&eoGFor|H!z$68ob{WiZVxyLnTe^tG;Kr4cCjO5K4!BFr(~ffpy-q$cfpI6&Nuai0 zQ>`QbJpq*#YIi_C;p&@X=H=|P5jHk0PedajeX#`paD-Mc;Ua9z^r&Td><(!~JrnMy z9@8XZF`yYKvaMcWz=o3n$P2_;tv_N=VG)4!&jPl;=yIZ4B_5h$>1qHSIWCQttwf++ zVoPS@{0Ivq@Ct1Ns__#^0k;efjP!WS7>$5I`X}Lm%gZ3!j{i%ooijpZ0YhUBDv}&J zeftP%4&Y5SA0J>J0VAoeI^aqMgah}puHDs-HWPDhHkp!M8P}B|P@IUuE-`7Mgctr$ zdV!S}X0HOUX-RyS?RJxfKoU{o+3s5*15Sp;`MU_$1S(sU{cl+ZytSZQ_Ca- zIClqXSILkbyNx3_kLiy+%Z^aW&kt3n_!#!ssg_K{2$z78b|JrpjK>&Ds-Uoryv}Z* zKv4q2`EEkb0$~III#>rdUqc%zE<)~vFl_-fwE@q5WO|iNNz6oU5I#nB%i>wuQX_?uIk z4!V-9m?&@mj=!5RMATZBFx5ldGH09(z(#mBnO_V%)S_=d5{DwOm`d8_v)T8QRdO`8 zhy~~X7z+RH&xcpJm*PdnpezQ~VOrs?k~3H4;BR*1AE9X%%|-CQ1x+OEhnnry@GfAt zt*Jt;u1gPzB_olm~2VtOPVp z0iYk;g70F`4~sS;xmQ%_`{6j*yQC#Uz{DkiEPjlguifXtq_E!vP&__V0g;9?By>Wr zhPcc|dDSSAzTbFYaHU>`h_1rs5bp9MyTnED@y%R_J?tJ3qM)2R&9e0&zGqx%{V3Dx zo9=rwuttx5PBh9d)b3;84FPWjWfvhQI@5CWdY;RLmAy}=uq87N;aQ6--jG;h`KIcd zcNzA~YI>px##EyD3dS;pZ|h$)2t}_xy5cRCOuqKI<{%f?M>~4#h_h~VZ&5d;DHcUk ze?F+#dL)kMSQyD4xi(mpl3Df546Rl&57e^OGRUuM<}2?|KCcoe_VBK5DV?9+7p>2< zTm)$SUr_bVpmP?Dqp2}0*6OlyP1`CzL=vZ9GAt04i9p}IP!bFXQ?qYd5&>9df)sT5 z6$O#5(x3;&hAbK<{`5^vjq2@SGtPOdF~ zO!lSlQcbIhw7`A#x?+{Ly8$ik-NrnF$QzUlE(A`*0C&t0UW=2GKm(4On6=>(JcUF+ znmY`cr|?gSg5TQy|C+!mD*?bhAuFVAt2q-=e|$jykQUjMH#!K1ZW{7Xn34~+v65Ku)4UB- zYCLcFAfidpNdPh@$*z;Z(#ISSqd$16!t06q;M~OX0#i**0US+}@a!&6^!0#qh@JRO zT@V06cUhm9WZQ{9W}jOf%wk1L#ClqO;##=7JnCP=%z6<}!^Wy6M0-{OAz@@C0dmAU zlzumKE`ZPLLh-9wLptI>{Pljv3z~796B@LtqCFg=Qm>lqW%J_$syyi&Y`4X=9KY)> z-K3kR#yLMvB;j^EL>Qf%ezzSa1YiKX@YM;bGTvBPjX89C^YMjZ{9w3?@hEM%gD|s` z*(%j%>fh%=?6CJ9UJ~U^O~Tr=yT&o;*4?3RaJ_!4?OqFXjoA*xj3Lfs5(&jdc3o>NUcuJINf&eWr&^~@m7Ae*_pPf=`n z$?Z$_X{@&5e#jd*TOa#ss%ohojtFIATLkFP$>R*&i1)aR!&}>XV8dIMuga-^uiz)8 z9d4>}1H00pJJd{YNGt@#4h%c|A-WJAC219jJ};NOb@hQ~-sZZ&6^w`z?6RSzL8&-u zv`W?9EY7<>0Qx;(rT<9a(s7)XKw5C0iYl=k>}uIfp78hqcDBvdQXe1Ue=V zI&sN!dJv)>1kO7ZP*lEDwA;o%5fT5~M!xd3!o7*h_)i7d#3Vpuenw7LL!-FhD3AWY z#D*`Cu8khAgn$SII7;*Iy6M)Bgs3*;yrx;Tu#lh6TkHLydW7 zvdDT2(ttn^*Gn!??1)e)2_Le`fLJY}NxT7(%@RJpf-oC4dh?=s+$d1W(;+k1$PGtk zEs6qqTsUF9M@Q>%wDk7)+Uz;Tv_IUR32adx0P2}E2MPE#cGoOKCUllu3t5cm_T~Gh zU=8KyVDe65bjXB29j(iNoAi2Tjj;b)-fKJ&)6@E4<&NrY^_LeltdHf3NMKK`@?DVv zm}=>GB`TD#Z5@KBpC1VaTKt6a?Sv!e5va{9(ia^5+_>pemN$j zbyuu|A!y7SYfDK36%ED98fCyxQ#59__VViV=Z?(Nm3LMeP%-M^dybMqE6Vcd<=;b4 z%zx6hTtz=j)#U+V2fZ#6II#_%xRU41mwq=b)E)~(cjJ@xAtmma$gZKq+-#k-FlJ^N z<@MyJ`WnMUt_=zMAQXj!+=d)+uan>fzqgxK-}%K9VJBZ+k=C%xfdz4FjNJ;He}Mxo ze|rew{|D+n1J&J7*AJc1VIw=!-dN9%mh)e5$~DQg=LobW4|yH8O*zJkKvx)U=hm0* z4AIDb!SS^+$YQA#`%Hd#Z9>V$7AIHnW?iu18QO(FBsG>Hrokokg*i%^rGN&e%+{Vsf)|e<19-0+Ez+c9a|ol|4HxJxbzl5 za8-Ex9+KpUYPHW=%tA+GjtTFY8l4xj)Ub*y7qmflbg5H!npU9=a?L+!Eg~(q-X%1~ zReiabx}|K_!u$1zJpa<3x4SJ-lYwp_9rIA^-d4|y`++3G5meRA(Hajuj22x(KXoVp zw0K~*du3OT-O|lk7iluvg>x3r-vkD&nn^kO`${YqmOFA<;ls+C@d@k92 zYJW4{ii&oH7(Q@;5bCo`VUhjmo$cn7#E>0F8{c^P)fn$7eH~v5Lp1o1cG5P9Ae8jx z>`CLnrQQviHa70?e<}04B^-9f&e&gZQg5$OUxMMMjAVMg!2-&7YLxKaVXoYQQTM>Ps5Eg5J!8kXkl3$c4|Y}LF(OUCm8T@z!g z&*fM!zecwZpv6R&gh$2eWUBAC@*Rxebqk+0vKo)@TnXStivzPQKTWp_0QP*Wbt0p- zhYXdn4VL=$<$zhAEoYiIwgr!CG2Ygiz6bW3L*2_-@>5==5Si1c5UK)F8Ji14`43cw zfAdlcIgg}&uXou{{rquKG8A;eeq2HSR91wGkcxH8+>||KmUU%pFu9RdcHDMrcXMhi zdcarDrmj7FnD|_6d%+V?4&J_1C;*r#?)N=nnI%31F(N%anCFG+S=U%gAZE^{?-D z@lK476^R8AN5^EUh}qOT@|k&ut!CoDng-?0m{pzgmOVBf6mz+3-~n56{Ai#2bT;<3pp68cK7pbxjV@A`~=z|B6zn3!PM1O#DT$f`}%nN z*bE^>J)yG%b6Ugf<+HK{ya45)biI;(ff!l{!M3s2C0jzlJMBG&YI{nVdji7W;0;L) zQs>Af44ghv5i2S^AIi`|G*4`zND*+eyg&1!3J>KC%N^PHhV~k!=LH9b^SG_)^5>UI zIoJR8O8hOgZ~!^SEW14UXIWoepJq4;*y?QLN7iT8Y}p!NZ%& z2{B1UEKQ8t^8&}W^)4Yz1s6y`x5xZ{govW8^>^AWq~;xrz0`LGAY?zfqif_*^q*Rw zWq2i}tA}mTylGK+D<|WbWBp*o|ZC(d6vR=Rtlg8X~WM0y?2e^$~Cj4YtSYA_`vBwoJ?w@14HPF=ICX429pefPwy_kH&&d~s;#RVsWDvl6aBjs?*G>s-Ov)-!MskO@ ztS?MIs0c%|J=BXiL)=Bl0D|cps}Tu4hE7uX&58+3s*Nv7se!c&phZa9LqEj``}iq% zRn9yw6;DDnFXSaZYW9+7L_Rhm4P0X8CtwXY5>j~vB6Qxj)t0{1V8Hbly07UgyxJmV zs|w`7LU|+hAS7fp!0kD;VFHSmnzdJPRg16N0|LZ;Y=+YZ;H85uQTvK-#9X*}VjP zupiwKR>5SpYGL>9gWU-OpuP=^SKIt*+SVR={Y;&j#8S3;SKtF zG#il~9n)b4uVhtIT<({|r%o{6g3hLBc-q}s{CL5g*{Fx8X&6{{r;55F6!bY>YcZGj zkpwPaJ6|TFGB<_AbtsS2L%$g98d5t&=&V}r8)S+9@6_9^fj`$;ccMdRt@JYEhZ3La zgEdPrS*1;_@!+i+9(3rTKFJqvXhB>N{g0V46*d`qc`l{4-rZJgh!?m5!C1?XYaHI2o}-OHUP6Dt#JoyS2;<1JS0{Doe6$SY)p|4{z5n#9;rmJs+T521O9 ztBFFkoi}Z|m8%5Tr_OH1zFdv;(K_`E9c+{BRFCW*np1gm*6%kGee`~wW6K?Eurgq`Rv^+({F7P z=QXB!Uz{4Pm?A0&kZ$ZHK#DA#TF-IfLJd%E|JKDuqh1 zX=?f*5kfef@Hav=O$qjR9O}B1HJuVQOZwW7=Y(KQt^x(TY(HzW+h;hB2os(>0HrZk zML46fbd1=U@8ijgVwPzlE9=x{hI!|BxCy0gaM__hj^Wp3C#wVnL z!#dkUWOEVfSp&2KYi=;^EMdCFSU1$cH`%j(y=VpYS+LZd>&%Tj_Sh^@q7%16=oj89 z0gTeq+o8LMd=i-a5&8eRjs~0gQ2Q!Bb~_!bR47~m0;yN^KRx$VMfk;Sj#nNnyn!p< z9Ja@}wKoXM>U%I^Ec=HZVi>s06mkvbi5FIJ9erbawUFMH@q72y$Bx&@b>Ish9C*a| zRawj^GL+h^^`w{il_Df-@5#`o&7gBs4%J|AwnSytK(1c5;uu+#B5HWqws7O=>*QNv z+{#%VbQm@VG@34DgBtqxtc<5vPNF^Sfmvn<#SUN35=V57bmR4_3K$%SuQtmPty<$z zKzVG$6uLj&v>!!+a5?xKk4;EKM>)Bb$h0FbaJkR^6bAhtIqaElHHS3AWzeNFfEcU$ z_-a=yO?r9h@`KJwp2in_9Rx}9Qrc7$GDZ-16i9!Q8$M0ivTMivIUWo|T zO+Loa4JmUY-luu!DTIg)_xvts<9g0XPSF`-7B|t-=txI+Dz_4Nh@j=7iTHnx^Gnnfho_=ct@%i1C@}ZjsKlZ?mxc#|Z<+(ZyXr2`~{k1iic7AW7G3&4@Y(|J;BQnbG+Xi#qL<6wtoEKF7ej z1H^4W*6`F~6Y4L7%WI!g8Tv$S0fB8VATwF3UxKqP^`o1LAGP?kxC6}P^yc23sWx`C@j(w6@C#o z)uPk2o)1$AXP*Q%!h-8)m~tq04uy=|I|lZ?(eRFrx}W%+3H zAgAzJZ}%TaB*F4=3di#E*>tLNeTG#Lt1b zwL(6v-j=~EtM7BSItOL~dD`hjnk!Aa!4dz7iT&jz|9^^yr3gaLWJL(HhJkPUfk^yr zG3d_!35j8#cw7&Wvk4c1TDT$=rpnERuP$dkAfX>T)ar3yTf7MTm#40jw4*(uDjhqt zPqhpL4tJH+q(TKZwrE;Fsk$kV7kGvy@-_TPE__#@$F$b~z_jj6MryP7(Q6e~hgAwC zfaYDk!%cQJ9<)5)$7m4wv$D+%hI0pbML_Ke=HNnpgfI}=fZv%0w}esQ z{CeyjCPweDmr46lK;{hcDsP%BqqFn zVi>$IJw@);w=ebYeCxjzmbNF>3ED6TgWpI0Cf6IiksnD%rGI>F;w&KEGXGq$31B{) zZn1eI8glrpCR%{z9MjZl|5J51Oc};ad}BnCBt$Z8F3t&&z8`q4fB41lEE^D)KZKu) z+Qdu&5vUulj#OFFG-YC$>L|a)K>ObQTN&R#0OEn2PZ_yUx_NDFU|EPr6Itk8l+)9< z^zTF@oZ&GW00K;W{%JaZ2>uBvsRtA;ynE2BX|y7O4^V34 zl8z+30_g(5k9qVeq~zkc-i-7mpJy+Ca_k?Bvq9}}kGR=~qlZ9*3^tlwezInfk|l8` zUnH^bau4+HVN{)mgugmpfv3nIcS7EE=~u?$`Udoz25(pCDX^koa<>Ez5p&|y=kN)V zJjkU~8r}OIPPAnPd22NM2NSFTmqST;xjs2#bh{o*ehMja_TYVnU9~LTxtgQln=xIW-umx znz*tmst7IDNf>FcG94qwG}SvL5co0=c)qsuGoQ+I@f-X++QMi@C(y^fZ!2U3TkLFJ z75Jaq>|ZbN+iJq?LaX@>h1%ZboRV+lR^V_nq5Tou!}uirx;_WKIiwaSMI8#>P?YsR zsy&?fZG(4|)@Z~A7H`8Q@H~q8HSHH;5FVuMC9CzLqPlRT4>Y~{aR!*Ru2gz?Jm!5I zEt|6PggR)L3;rNPq49dek68o}t0MUcfTHGq0}KEC3wgkk-*&S`27A}P#dM6dx} zHmm;$K#DEBx3nQ#`{ldZpYrlc@!NCKQM}SyiVjQM-$1XE#g70e&{P4*zQ4Sj+!8a7 zYqtN4VLgO(pEF%TeA^p{Y<`YV9_BTtv{bwsi8>HF$=A!jWm41i%TCqe+ z;khpL@HV-a;;{~7Fk_}k(dm#mDdJTaGEDw4Hi3qfy>v{n%v%^U6fa-J?(wk8C=u|j zWR{?))o5CG>b{0UpKrkmQC~jA$ERynn1(Sv`_?t#A=Gkfj}#E_^XzXK>$#H58)l=rcMLfqoHj}*p7_x^^RVzbokhMLL_DEpcmH?`w|e@mW6fcvU_if?Qxq7sR@L~Fa{(cT(FSVM!DTMgPAX~*I4Pmhzh zm1uAb;$_m1^ghGWina2ln(-m0LjQeX`Fl~VzR)UCRpCx+{!DoFPjpogE4UF?ud5h9 zZJpXTU5mkmnYFAfi$Kcz^1g##`7v1V(9yO#{jFH+Vo)+U!?>Uox%_PI>nViSL}&cw z8_*tr9|L$VIx0^O3qrE5&#xZ1sS&aH_#8ZD;43j?CXHr!aVN`pD-O^$HiyG4N-w;& zc24Lqr10TFf0vs2f1fwD6A(WHWz zlW8f3fJSOAdJ3mL+=S1EX9oll{ctGD$pBP6Y7!i%L-t23TaF9U^h&%Ev+hg&84o#w zc{e{8GV>vh|D`#`6mBs3Lhz_XGyIX@iyYE@K7an!H|)9QF1qk3-h%0NNat&$6YzP2RZNfwqRnQ5a<0u}km4OIQCNJQZzwZn zuQ63*=y4l}Mrq4`=RN-e=+i6RJw#pl%&yS=a;-ki$b?kp++^a_Q|q0Jf>hjSLV?0H ztO9lJ5(D+DEAsZ-XXlDcG6Q%HXU1i8?>g1~+K|;9uZ=;ic=knp&7u-l+S@DRIM+jB z0&kkk8^#vI_{Q!aRr>hOE<1~!xr0&HhzXs=rXX!jcET_(N_UuN7)renSS1J@_G}Ta zx9w6P3o(Z-U9bw&X3W@Wb4eo&ee{I4pCJn3cq#>ZL`Og3SaoXxZSdi00(|-g7)8=U zZm}_*GHM(Z{Ucj!3%cn&=Wxz?1r4htRoobluUYm;q<2KJXO6mlYx3XM$)HIKY}M7E z#qVHXNpY>BhNY04msK{#77TOE_!FoY+Dkeb2mQhgV6yR9XYCJZL+HcS=_$I;Xnk%y z_w85)yf}+3vg17Ktk&fyukC?(m)6|Wp}QFot~*UBG>I1I4$xCdo`h@ma{CWQKp2Iq z?Zuj!W{vd(gYw1>4ID|XYwhc=L6Qxj)Ckns3eY2g#?zj-bp}mnfsttO5CCmNDgwV5 z|Hq0|^S{S=LP@zL3a8Pu@Y`~%a=a}F@^4PB0<~h!`5k+$wBhrBuQAELM?wJApCeSER(WUkEf@f3j#AY0<^AN>son>Rf?&lW=B%P0b*jZBVJbA^8)x za;S}+DtM2TgsnO`KM@8HKft&O>^$24bYmKQK5y0wk<9F|K0E@j&Ywn^4{IATMrvir zrVovLrXWt2OB8MjHrNfGYPZ6Vpg0*^b0$VLrDD{!zKNHIXJ&nV1z8CtD}F677fK(b zCWrd**}=3l1M*|FsWnjqvX%Ly^d1xkCaQs|Jn`mkKGe>5c?B&tWeI;19b3^&e2Y9J zt$Vk!t(Re|ah0vu!h|rL!@JE2jqceT0B6TZ5FI_i}kw6Vt zUi(B&#$Klz;jTb_bt4pI85x$#*O z#@>TV(j7wYX65dkTg5RrZ}}CTf}MPC*!gctdL9%`1I07#6HM?88LZWL?U5Or8jM;r z+6>azbU-eUTBOry#x=Lv;}wh^K(`l9_|Z(wpV<}+kZRp)M)KX#%K%%Ss-?U92VkZ(AuIkGrTbzIEcx) zOXwu@JjkefUE-Hakzakjtv05KkCnai_!GM`_V{DF_6ik$*IvxIr2nkOaAe zy1}TZRq+nF+bRLdqS=zEQ`K5F(S~Mz%yw?YTN0BYb~DKjqZNYwv{N7)zK)6`#LE~u zE*uuJkOfHvBe+uP6MjH`E&tChHyilzXKSCE2NkF(;QL5l&)po^O#E&;W9S(kXl z5~B13H>k{?Y_(nA1^NTp1-V(G+Pqm8!mW>uF?gd+J}HnQ(HD&nFG(=4sCJI)=sRqmh+ z=0s<#NOX~M$5Tq5Ea3&ZvN5B3ptkWj8=DMMpdi&<#1@YZ=MblFRd{9XI}pLsUQ9J6b^8{Wa8Z)HeKk9(V)Q>k^XL29lqMmFwA6KRt&A zm&n_Mr|zo(K?e(YnZ#bOC+|WtEXTGtjUM$B`g&)ru<4Gf#^(c8@1cF>an~|%UvE0+ zUjBY%XZ{a)S^>S6U1KQ5)au5dIQp?6%p!V|jV>b^P{SC97Zu*<@4x_hHfzK3xaYCN za(?zGCRve0(>iKDAModYR_fm#1yd7vj1fAZ$_DbwLs+`1ELC3M7WYIJ%XfdTheAlm zgboy9!qDEHa#Lzw$bf>f?cdEx^J%371X7j<)b@PP=SCi`Xd$vAeavVDX z|8k|brVSit3R@cQDfZd@ub6rLmD16c{?UKm>ry3XNotM0Y)!IVPFl8qW6e zhSzvAYFxx8hXh`zQpVOV`Pykk>N|D(K>U4b&U{5zU%4Z49=eeTMU8g|?lT9rnJIU` zXe0F(rMve^2NMT?If=3TDhXVxdQEo)bUhOE^wo3_s!Elih-lH1xyyQ{G@o41s%#6y zl^6-LVYU?ges$|is>_`8YE-Pz|oe)Zb53uBgTt znh-csyJy^xFWC?&?tx@xNz%zeJz>}Se!PTqhI%y(E#n#MWQ7}mh=SO+b}SOor5*_N zwf5uRTikz9`7ZDDt4{uP-+$3A8Hue0rzxW&Z^-#!Ek{5$RF)g0f;g5v8$wylMWw&_Uy+c&E#@g zKH8Jtm3~`Qx<{r&q6Qe7Eti#A5b@$kIqYtGZQEI02UAB(jHaaH_4;C%N9R%u-J@U& zZr*3)b?=&tAG75_uK-2KM+y=>YKzh~QmvntEgd;B6gV%zDjPsl8``$M^^XkelsUjc zxIyBZ@OG1r7GvkEP=vCqSBYV*Bq2_fcma#%^AXL%fjl5b9cOIms0@<$v6=1hgFD;oKbH~5&GeT79=rbcw0F(#bVzN|k zsvv{T#Lp8*dw=Ie)GpA^h(QN>@jjWVbP@h&6rps<@&kkN{N<#6@*l5_*_BsrtJN)p zdWSf23;F&?Nkve38&esP_Vmhi6q49UA3k(_lt8vNM8j3Iryl7|56w&C0>kv*6pCGN zI>7%Jw2LxvqXRCFTCpSlQ>qdv6Y^C`kUlS2<4 zS|a^*@_n0kB#i%@qTa2+2n1v#S?MNRS6HM)2~D6hiO|mGkXF!ANr2u-^T={;XLnP#FZOC1SAvLxlk{6nkHWlp=NNH{+c&t6kE`*3J z2NFGt)V(4JPBKaoqnzJ{LCUbIeh%)63MD})ToQJ->buy0=;WmFEoxFcD#s<)i58ql zH!u^UHB6-Bv+IJlM(9zWLmBBf80KDICUlMwmO-94u!RjQ^x_i)FOYMF`gWWzj3u4# zSxw%qnq)c@*onNV#k^8A21I&qF(yYjHnf4^2>Pa#aVZkl(9kr|LH`MnlI|W zLkAXXVLZMa-=c*q{YNbQF!VW{Ie&^g8_kf5CayjeSDdc6zuKsJ96hXzk}BF zolG51hz~Zm3u`aNFys)E_kn^^n_^Ry&XG=#N{$M1MCEL068{8fz;`_M<1*==vTD%P zSR6L!GPv;If7)?StD$`cezJAzF~&BJ32m5#+ThbQSw#%AH(JgUo|^k$>_|*=m?~+| ziwoE#m7AnE?lyk@~nv2ZzDBn(*5xHNc4x2eAYZR3)-dnoOe z)%5VLBG7h3#yozZ(yHfGMi&INzf8398n#FO+y`();Wb*vxKce+@Ka7N%0@E!54NRc zhhhcACq~SoPuQjY(vEkp)Jf>ElxaFZ)acw`=UEWP{V2}9MRC7wAih9!uLGmV^4x9T z#2KG6ZWGz?G;>y=AL{)Q0drV)`NMWeK5(qxmb@9BE?P^thQ<4w4C>O`!~2DYiqqL> zXZBPTUal8*;Z&v)hR){ZilNNly--J3$BGM4D17}ns{xA;Gs7lYm(aa;kZUi+SLV~4 zXyfk^idGmZh@6aE+Mc0jXF8&)2*JVyoNk~T6gr&0q)?t>=`w`;Hj-a8DM}w|Xj7K~JNGItn*fiP|eO+nU2z_*QO}F*Q0SE;rNUbgW zxP^s;9Io1Ri2)=7a(UH=qR%s4292^PgUl2uI2nn@S2H%W1g6&)G;1kBWmyD>U9Nz^ z&RD3NUt-L|0CUwvZZ0H8m!ka|v-Vi}9xw0a@%|f*|KZg5)u5Z5X%W4&<=5YuN1Zvl zKiP3a_~O&eOmwFQ>R7xJ@gB7D>}bp?`$38qgx$t-Tfs_cy}_m;s`H z!8+d+mPckLQh+s3m;wD%>J5DVVkp8%M{Id>P*=77J?~G2h2NbwhlaI+fKB_IKQQ;QD}uWM5D3 z&aea=QSQspO7QsyE#iq;Bqj>CRmn!HIYFP{ivSA2PD`)+3C*yXnM zypEw#rquqFasSI?cM~_8gAkBQL;@tF^nXx)7TViJRno)UcOVhkI1sYNyzb%Zh|6_j z$+knZH$@h#V&i`)GlsBYp>!~P_9T&%B_srTXm-ONG!Us~N-@8lLC0l_AQXL{o zporcj6oC2s@~NI+Ed)m(D!5PtmyPv)nBSQYIIbYWk+8l)rRrw+U^9GkOKSLt-Np#- zbfEOH?T!U{ zQ83gV(ys56P6WWU8pxN8du738`XwBZ|J5JUPT*e<1Ob>=VywLlLfA|~qyB`g{H93) zT$ij^`c9

    Eds-p)L|^zOqP}&;D{{Qk3O*4(ZrgRo91qF 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 V@4w^>e(bi}>KXj}OIifx{{hR=Qpo@S literal 0 HcmV?d00001 diff --git a/tests/otfautohint_data/input/dummy/font.ufo/data/com.adobe.type.processedHashMap b/tests/otfautohint_data/input/dummy/font.ufo/data/com.adobe.type.processedHashMap new file mode 100644 index 000000000..452553ab7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/data/com.adobe.type.processedHashMap @@ -0,0 +1,98 @@ +{ +'A': ['w600l320l1170l232367255440276512c297588l301588321512343440c366367l4800l5680l347656l253656l148200l449200l449267l148267', ['autohint']], +'B': ['c1a659f8bdabb30c497ef94300482ae44a02a43ad06133ec80b03f30ee51b2ea60fcbfa2b5fe8981d84b686506d3c3f3c83307e5ee80ad1e2e5fba5b3c1e2c2e', ['autohint']], +'C': ['f175041e7641af48e9354112ccc8f0bfb84843bf80bf6a92f058377c4132c3f2d65f256917d7d2d66b4c2e1da6f43d04c0fd2ef4023165f100113762e0b2c53f', ['autohint']], +'D': ['w600l870l25304460553122c553331553539446656c249656l87656l17068l170588l243588393588467496c46733146716539368c24368', ['autohint']], +'E': ['w600l1140l5300l53071l19871l198309l470309l470380l198380l198586l520586l520656l114656', ['autohint']], +'F': ['w600l1330l2170l217294l487294l487364l217364l217586l536586l536656l133656', ['autohint']], +'G': ['d73610e48f033186b1c85082a4b5adf81f9748d3ac1d2954f216c2de761694f5197bce041b2e71025e72a5aec7c19d83ece2ce90be4eb13265e1a77339104793', ['autohint']], +'H': ['w600l790l1630l163309l437309l4370l5210l521656l437656l437381l163381l163656l79656', ['autohint']], +'I': ['w600l950l5050l50571l34271l342586l505586l505656l95656l95586l258586l25871l9571', ['autohint']], +'J': ['w600c276-12439-1249388c493210l493657l135657l135587l410587l41021741010936861c274612236117089c133148l819712622203-12', ['autohint']], +'K': ['w600l980l1820l182209l556656l461656l185327l182327l182656l98656l4860l5800l334432l283366', ['autohint']], +'L': ['w600l1340l5410l54171l21671l216656l134656', ['autohint']], +'M': ['c28cb807c8b5808a1423fc6f792dcec2f431693173fd53b678d962a176d5ee42f11d4f93ad604b214f1e72a64000a80eaaf77d4c2f164cd88375a905cfab6b53', ['autohint']], +'N': ['74e3965f25e670e174d077ee093febe689a4601ee951ba76164d9e1276dadbd01cd9a9cd96ac1b0f3dc902df8a4acfb09ba2958cfade43d59f0b2e25c21526c8', ['autohint']], +'O': ['03891f26f004230f02cec75f367f460107d778a18e292fb45f98619a6a0c31e6e3a61d13440c94603e0c22e8da010bdc909b6b444d3311b9dd9034f9e52480db', ['autohint']], +'P': ['5f61823e6efba0709e8bcaed479d97cc8b4b3d66cf1071d432ea2ed8fc680ebc92db5f18a8bb4f161f8ea6d59c1025c0849dd8dc3e4ecfa84e62f939121dd322', ['autohint']], +'Q': ['ceaf0f38bd3086b64264d83457987a5efc7737a31367cd941f462bd1eb5a28d038208268e343172835570f90939aec7decbc2908f8019950097d2ac7c6fc4270', ['autohint']], +'R': ['b5ac4498a28beb96f5e7fb10a17e9497013560ecda22148896fd240d7bacc2f2ab6916b85951d93268a51ac6d09c6b77fab63538fac1ec0e5b0cc187879475f1', ['autohint']], +'S': ['1724915dc652c64aae38de96f4ebf3479f2fe1f18faa2d57430afc9502de2522545a32d1163fc292492925cd412377138af7c76ac901eed183992d3c54824abb', ['autohint']], +'T': ['w600l2580l3420l342586l558586l558656l42656l42586l258586', ['autohint']], +'U': ['w600c301-12429-1252160c521248l521656l440656l44024644011038061c3016122261163110c163246l163656l79656l792487960172-12', ['autohint']], +'V': ['w600l2520l3490l557656l472656l367302345224328162c30485l30085276162260224c237302l131656l43656', ['autohint']], +'W': ['0f0370dadd9b8633255f58a956487058c2b3055da58feab57904878373a935921c0d4d50dde7a4288cf236b323eac7d678f497d65921cfd4eb07d353178ba6cb', ['autohint']], +'X': ['4364e181d90665976be4ce98c4c37df3e0eebd8c53ab6414287e1827a9f31b70ff268791b8bf52d9f2121686b5a398208ff9145c32af2a52a7ff808ea94d8991', ['autohint']], +'Y': ['w600l2580l3420l342234l562656l476656l381462356411330361c304308l300308273361250411c225461l126656l38656l258234', ['autohint']], +'Z': ['w600l650l5390l53971l16771l534607l534657l97657l97587l431587l6550', ['autohint']], +'a': ['cbe04e8e713fe5aae516060eb43d25fc97a3898f6776b7aa66795ccdee099de5471687749ae73d57267be4ae0b4018faa6f079cd99d42d0adc741254d0812377', ['autohint']], +'ampersand': ['c572d65f3649efb510d33a7c3f972fa336d4187ea3312a947b1318257fdb58f87bc875430de182a46154aab2c77782f3a4eb42eb865ec165a68ec7eed3c50c4d', ['autohint']], +'asciicircum': ['w600l111284l183284l249460l298593l302593l351460l417284l489284l336670l264670', ['autohint']], +'asciitilde': ['5fcb94382d9b5cea789f6a2d29b5a9aee9c10615961a5d3e746f7163f97dab9d3bb1d3dfc2f6763c59bcc2264d7c23a5524fc791b299fc6e327da9481cb5aad4', ['autohint']], +'asterisk': ['w600l180111l300270l420111l462141l354306l516376l500422l333367l324556l276556l267367l100422l84376l246306l138141', ['autohint']], +'at': ['3624e896b755b3406bfe1c35edb6c8dd52878d9195fd155baf4d7c935fffd9c48d9fe9234adfa46a16db5238c20f5858cf388b6844fd8117296e8bfa705fc64b', ['autohint']], +'b': ['842415f0127bdb82e9e1421ad6c80cc1359451785c8f71a28e54d5476e3bee61e17045bbd890e3b0b08f382686c6b015f113d1a7a24dcaa1eabc09f0ff1f096c', ['autohint']], +'backslash': ['w600l427-160l501-160l173710l99710', ['autohint']], +'bar': ['w600l263-250l337-250l337750l263750', ['autohint']], +'braceleft': ['02bfb4240c08ccc820d952481ca67606a06859286daed1b458d886807870cec97321e8f5537d4d6c6e68c1fe04d25d3bf87e811b88162857cad16dafa885f715', ['autohint']], +'braceright': ['aae48ea61dbfcd1f63276d1a8289db0bd36e1144f58605429f35e356b684c326c34857668e833517752ba0a163f5e534b695fc51f782002fe82c5b382371f44c', ['autohint']], +'bracketleft': ['w600l225-152l502-152l502-105l291-105l291661l502661l502708l225708', ['autohint']], +'bracketright': ['w600l98-152l375-152l375708l98708l98661l309661l309-105l98-105', ['autohint']], +'c': ['e0e0adbd09a042e383df9d048e196b31f5d626a4c26355d66fc3ae0cee53a905fb39f4c6707e14997792e75014c25790f331d45038ce574a02d76e97997fcb86', ['autohint']], +'colon': ['1ef63e19cf268bf3a5d938f4ee7413b56b77afe0b85840cf9404d0cd887ea45894141d684408c93ce8f463644fdaca5b887de1517ce8fc43958bbaec7f11e73a', ['autohint']], +'comma': ['1fc5c4111eae07dc5d05b0f235cbe82d46affc3e12365a73ae71a918515dd2da52ab03c6d02149159bb9014bf48eadb8fb4dc8063c9fab4251538589a7785086', ['autohint']], +'d': ['a0f86281e580d74d508910f068dd63a6f3d7e3a7556e2542431bce223c9293789eb74e06b2cd23f3aa522a9cae23ac8ab4661954b1cd60feef6407d6ea97122a', ['autohint']], +'dollar': ['561de306b85f85ae68849435569bbc5dc4f65a9e7302b52b3c82e57c6cbc133df9d2da65cf05a66c6dcedf4a9cf466c09e94f5a6208fcaa3227f188cdefdf69e', ['autohint']], +'e': ['66f1d1da4c0a4eda43d42a712364b129cc682c92af87bdc38bf30ed3d4cf45bd9f7c7a48f03f1af5f8ccd15af5d2e8d944f6635aa8f87000e7c6d0fc4af73627', ['autohint']], +'eight': ['3edcc7a39cacc274efd3de7744a959a0e805246b1146b62058b0767e382647d37149f543da0ef99ade0d0204e2d8ac0677db73b49089628a0e5b46c8b8aa3303', ['autohint']], +'equal': ['w600l85406l515406l515468l85468l85192l515192l515254l85254', ['autohint']], +'exclam': ['w600l272232l328232l338576l340670l260670l262576c300-12340-1237318c37366373113340142c300142260142227113c2276622718260-12', ['autohint']], +'f': ['f11d83866fdc9cb639c84d62c749f6d298d9b5aef72d5fd9e2641b66e9ded92680f0d395625840160e1dc3c127ad2d38a4f4b0b4bc2c4a41f00f158abd475c5f', ['autohint']], +'five': ['fd8fd14d8f2dab416e3b37c5293ece4ee27049e03197a7135ba4c186892202b39307c89a6c3fd14933ac995603965a6928656757696bf683f4e6abea72baccde', ['autohint']], +'four': ['w600l3680l4460l446638l358638l39231l39176l545176l545242l130242l303460324491348522c368553l373553371518369475c368440', ['autohint']], +'g': ['c0a1ac707506e9a15af37ef9aadbf7fff110df090241aa18cf3e665d85a2e769c1a02816cea1d9c2d47b1ca58faaa27139991dd63c72e54573071c52936ec393', ['autohint']], +'grave': ['w600l321568l364609l222777l164721', ['autohint']], +'greater': ['w600l10748l480301l480363l107616l107537l408334l408330l107127', ['autohint']], +'h': ['d88d83825c963410efb2235c3303d61f85df6b998eddf63c5e38b8b103451ba27afd783feaa0de9b85e0440c52d908d456b383ff85cf6728a4374cb75adc1db8', ['autohint']], +'hashMapVersion': (1, 0), +'hyphen': ['w600l85299l515299l515361l85361', ['autohint']], +'i': ['w600l3160l3980l398486l90486l90419l316419c348588385588414613c414652414690385716c348716311716282690c282652282613311588', ['autohint']], +'j': ['eaee6e75f2df0f120102bb28564f93cc52c076d9e21ec4018633d94917c8a7ed25c24a7c667a92b4bfd1df7b2d1477e0dae1c5d50650fa6f583364ff03866779', ['autohint']], +'k': ['w600l1060l1880l188132l548486l454486l192230l188230l188712l106712l4820l5740l342312l292259', ['autohint']], +'l': ['w600c407-12460-12492-2c53717l516784836345356c425563675632986c329157l329712l74712l74645l247645l24716324748304-12', ['autohint']], +'less': ['w600l49348l493127l192330l192334l493537l493616l120363l120301', ['autohint']], +'m': ['58ec38f5290aa1be15ca0c5b49bab0d9aaf84c33984ecbd988858b64313d8f374bb7d78d297c9e71dd6fc9cc9e9d77e54ecab60bf75bded6e43ea2f1c2b1a9d3', ['autohint']], +'n': ['3309286488ca6fbf31cf7f636de890d9314b6d294d387c886b956b2c2c6b1fff372259e0846bba086c9cca076970bc1bb339e1b12cd9f2c0cab0970a0a53e8f1', ['autohint']], +'nine': ['c15021ca8739d02b329a3173cfd7b412b9d62744b26512ecf5d80104fdaf020b6fccb2faf8d2475f2888ab7805831675f71d8a00f6480e957d976bf31ea6b2f8', ['autohint']], +'numbersign': ['w600l3280l3820l461650l408650l1420l1960l275650l222650l107409l519409l519467l107467l87204l499204l499261l87261', ['autohint']], +'o': ['fb7aa123bbc160e9e3c10e5d66e45a5edff3cdcf2b0a08caedb1632cff4b1dda08c03f3cec55e4f523a71e855c013ce3372444e2e0bf0da6316fcb456400dd5f', ['autohint']], +'one': ['w600l970l5300l53068l36368l363638l302638261616213601c138591l138538l281538l28168l9768', ['autohint']], +'p': ['8631a5cd0b50191c8c15c72b7997bfa7c44de88c5bfc90641878b05a952a3399c120e7ff5dcd5b9de59b350b7f077f37729a66038b9da49e537d1d31fbb2fe96', ['autohint']], +'parenleft': ['w600c433-176l478-134344-21282110c282278282446344577c478690l433732294624208471c20827820885294-68', ['autohint']], +'parenright': ['w600l167-176306-6839285c392278392471306624c167732l122690256577318446c318278318110256-21c122-134', ['autohint']], +'percent': ['b5b299aba2f1f9d41c6af2844746671a15e5107460b086d680bc04c9fd77f36bf9933f66bf27d8f096d07b5e9a708d315f24670fdc989a61f8f506dd8e594c80', ['autohint']], +'period': ['w600c300-12345-1238122c38172381123345157c300157255157219123c2197221922255-12', ['autohint']], +'plus': ['w600l267104l333104l333299l515299l515361l333361l333556l267556l267361l85361l85299l267299', ['autohint']], +'q': ['e3729f6d21fc91f21f158b06c352b71a163a0ed3967b0a6dbbb475184c710eb0d475c8c5f43b1dd6a3d8ca4e58fcf422c893b21d6f311c24536cd5a4200a052d', ['autohint']], +'question': ['4f103f067bd66f79f5337a89f046a38d3b3259e413d5585764b803557922a956ecdb5e54606c32eb0f83da193e093f2450a6d75effcd64995164f58c9b5e7930', ['autohint']], +'quotedbl': ['w600l157352l213352l238577l240687l130687l132577l387352l443352l468577l470687l360687l362577', ['autohint']], +'quotesingle': ['w600l272352l328352l353577l355687l245687l247577', ['autohint']], +'r': ['w600l1460l2280l228285286386355424c428424466424484419c518407l537478507493477498c441498351498275449c224371l221371l214486l146486', ['autohint']], +'s': ['56b1f9bfc89b0c945678d9f87ef8c184ce832a9e987cc17f515039335bfee115c0a8ee0a9746a4288c91932f11da950668aba1699b0100742e1391929ab43f93', ['autohint']], +'semicolon': ['309fa4967c2912379b6f3cd12db53173eacf4374dcb635a187633df3bc05cc18ccb1ae9d2f0a1638e97c1772bcf96efe20a9ac290305584089c04e148791ebba', ['autohint']], +'seven': ['w600c2260l3120321250363394c532587l532638l70638l70567l438567292388237242', ['autohint']], +'six': ['fd5ebb173e0851c13d15604a1e5582e9dd45f773219c2a0c81c1f6b7a78fcc897fac1e7a03b6112be5399e51ad0e77785b2f9688a0bb5808b543e61a325e33b6', ['autohint']], +'slash': ['w600l99-160l173-160l501710l427710', ['autohint']], +'space': ['w600', ['autohint']], +'t': ['b864697e1ed822b2172a976ea1e447fa252897b192091b7c7fd96b3ff69cd0a3c710dbc5390c541e8e4971325caea5af6c704981f615809254d164b46fbfc9a2', ['autohint']], +'three': ['d970315bd58c77ac76afde2edf8355b4b403fbf2c479e90f37d45e2eaa0fbfa0a18a4d37fb5e7c92e319e64a371ec1ca98b15a8e32cd5decc473084a2f529055', ['autohint']], +'two': ['332efa73d25c3f88b12c47f30984ae2b9c65db632910f44bd0cf2d05fa470cb84517daeea6eda8a6c3faaf62e45dc82e941b34976b414192e7b51ff2fdbf0e29', ['autohint']], +'u': ['7e83ab2666e28058a2a8e23b9de7f69fa0d5054cc3496c6c95f9b7e1eaf77b3e7375284efca7360fa634e70dc58c21a149fcca1113c959c289faf9e9f80bdc37', ['autohint']], +'underscore': ['w600l60-140l540-140l540-69l60-69', ['autohint']], +'v': ['w600l2560l3480l549486l470486l358210338161322113c30567l30167284113266161c246210l134486l51486', ['autohint']], +'w': ['0c36aee3612d48a039f364e68be300293ffecc4e3e4da220da64a15eaddfe64b32934d44f3b527d9f6e0c44ea9c2c57641f361e9af8c5f4c86af3f9f10b65f2e', ['autohint']], +'x': ['ff9aea08f0bc42c8259f637b5326e360666808b01387e4c775b36afc318bc0cc55bd55b6e7a33143a66d6b0b38bbdd122d273d2ba21d78c17ca9044a24c9e5d3', ['autohint']], +'y': ['7322c4145e4364bcf9aacf4c38118938b93f4327b2ecbba17db25a78b8b4353623112ded6716117097d378611687a3676267a21f5de4938e21e9f11217cc8e5a', ['autohint']], +'z': ['w600l710l5310l53167l18867l522442l522486l108486l108419l404419l7144', ['autohint']], +'zero': ['08b69485b9586a6f473afe6df1300c6b8c70ccc9ccde3c2b3d019b95edbc100d385e716ca072c124bfb19d0027b79f6a3d830368f4f8d57571fedc757326e695', ['autohint']], +} diff --git a/tests/otfautohint_data/input/dummy/font.ufo/fontinfo.plist b/tests/otfautohint_data/input/dummy/font.ufo/fontinfo.plist new file mode 100644 index 000000000..0a5776c6a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/fontinfo.plist @@ -0,0 +1,90 @@ + + + + + ascender + 750 + capHeight + 750 + copyright + Copyright 2010, 2012 Adobe Systems Incorporated. All Rights Reserved. + descender + -250 + familyName + Source Code Pro + postscriptBlueFuzz + 0 + postscriptBlueScale + 0.0625 + postscriptBlueValues + + -12 + 0 + 486 + 498 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyBlues + + -12 + 0 + 486 + 498 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyOtherBlues + + -217 + -205 + + postscriptFontName + SourceCodePro-Regular + postscriptForceBold + + postscriptIsFixedPitch + + postscriptOtherBlues + + -217 + -205 + + postscriptStemSnapH + + 67 + + postscriptStemSnapV + + 85 + + postscriptUnderlinePosition + -100 + postscriptUnderlineThickness + 50 + styleName + Regular + trademark + Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + unitsPerEm + 1000 + versionMajor + 1 + versionMinor + 0 + xHeight + 500 + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif new file mode 100644 index 000000000..3b0e14683 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/A_.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 21 -21 + hstem 200 67 + hstem 588 68 + vstem 32 536 + + + + id + w600l320l1170l232367255440276512c297588l301588321512343440c366367l4800l5680l347656l253656l148200l449200l449267l148267 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/B_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/B_.glif new file mode 100644 index 000000000..7ea061427 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/B_.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 70 + hstem 310 70 + hstem 586 70 + vstem 99 83 + vstem 465 82 + + + + pointTag + hintSet0005 + stems + + hstem 0 70 + hstem 310 70 + hstem 586 70 + vstem 99 83 + vstem 428 82 + + + + pointTag + hintSet0016 + stems + + hstem 0 70 + hstem 310 70 + hstem 586 70 + vstem 99 83 + vstem 465 82 + + + + id + c1a659f8bdabb30c497ef94300482ae44a02a43ad06133ec80b03f30ee51b2ea60fcbfa2b5fe8981d84b686506d3c3f3c83307e5ee80ad1e2e5fba5b3c1e2c2e + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/C_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/C_.glif new file mode 100644 index 000000000..205db333a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/C_.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -12 73 + hstem 595 73 + vstem 65 86 + + + + id + f175041e7641af48e9354112ccc8f0bfb84843bf80bf6a92f058377c4132c3f2d65f256917d7d2d66b4c2e1da6f43d04c0fd2ef4023165f100113762e0b2c53f + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/D_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/D_.glif new file mode 100644 index 000000000..0f3340350 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/D_.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 68 + hstem 588 68 + vstem 87 83 + vstem 467 86 + + + + id + w600l870l25304460553122c553331553539446656c249656l87656l17068l170588l243588393588467496c46733146716539368c24368 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/E_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/E_.glif new file mode 100644 index 000000000..e9016f292 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/E_.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 71 + hstem 309 71 + hstem 586 70 + vstem 114 84 + + + + id + w600l1140l5300l53071l19871l198309l470309l470380l198380l198586l520586l520656l114656 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/F_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/F_.glif new file mode 100644 index 000000000..4c30184c7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/F_.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 21 -21 + hstem 294 70 + hstem 586 70 + vstem 133 84 + + + + id + w600l1330l2170l217294l487294l487364l217364l217586l536586l536656l133656 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/G_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/G_.glif new file mode 100644 index 000000000..5c2ba298d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/G_.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -12 73 + hstem 271 69 + hstem 595 73 + vstem 53 87 + vstem 456 77 + + + + id + d73610e48f033186b1c85082a4b5adf81f9748d3ac1d2954f216c2de761694f5197bce041b2e71025e72a5aec7c19d83ece2ce90be4eb13265e1a77339104793 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/H_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/H_.glif new file mode 100644 index 000000000..5c08a1ec0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/H_.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 21 -21 + hstem 309 72 + hstem 656 -20 + vstem 79 84 + vstem 437 84 + + + + id + w600l790l1630l163309l437309l4370l5210l521656l437656l437381l163381l163656l79656 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/I_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/I_.glif new file mode 100644 index 000000000..3f7c9ed90 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/I_.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 71 + hstem 586 70 + vstem 258 84 + + + + id + w600l950l5050l50571l34271l342586l505586l505656l95656l95586l258586l25871l9571 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/J_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/J_.glif new file mode 100644 index 000000000..a0a6d3ff3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/J_.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -12 73 + hstem 587 70 + vstem 410 83 + + + + id + w600c276-12439-1249388c493210l493657l135657l135587l410587l41021741010936861c274612236117089c133148l819712622203-12 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/K_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/K_.glif new file mode 100644 index 000000000..6277069c3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/K_.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 21 -21 + hstem 656 -20 + vstem 98 84 + + + + id + w600l980l1820l182209l556656l461656l185327l182327l182656l98656l4860l5800l334432l283366 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/L_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/L_.glif new file mode 100644 index 000000000..74d345ea3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/L_.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 71 + hstem 656 -20 + vstem 134 82 + + + + id + w600l1340l5410l54171l21671l216656l134656 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/M_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/M_.glif new file mode 100644 index 000000000..e79f51a2b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/M_.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 21 -21 + hstem 174 96 + hstem 560 96 + vstem 72 78 + vstem 448 80 + + + + id + c28cb807c8b5808a1423fc6f792dcec2f431693173fd53b678d962a176d5ee42f11d4f93ad604b214f1e72a64000a80eaaf77d4c2f164cd88375a905cfab6b53 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/N_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/N_.glif new file mode 100644 index 000000000..62cbbde66 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/N_.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 21 -21 + hstem 656 -20 + vstem 82 80 + vstem 438 80 + + + + pointTag + hintSet0003 + stems + + hstem 21 -21 + hstem 548 108 + vstem 82 80 + vstem 438 80 + + + + pointTag + hintSet0011 + stems + + hstem 0 108 + hstem 656 -20 + vstem 82 80 + vstem 438 80 + + + + id + 74e3965f25e670e174d077ee093febe689a4601ee951ba76164d9e1276dadbd01cd9a9cd96ac1b0f3dc902df8a4acfb09ba2958cfade43d59f0b2e25c21526c8 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/O_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/O_.glif new file mode 100644 index 000000000..a376b2f22 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/O_.glif @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -12 73 + hstem 595 73 + vstem 48 86 + vstem 466 86 + + + + id + 03891f26f004230f02cec75f367f460107d778a18e292fb45f98619a6a0c31e6e3a61d13440c94603e0c22e8da010bdc909b6b444d3311b9dd9034f9e52480db + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/P_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/P_.glif new file mode 100644 index 000000000..f81c4edfc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/P_.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 21 -21 + hstem 260 68 + hstem 589 67 + vstem 102 83 + vstem 459 84 + + + + id + 5f61823e6efba0709e8bcaed479d97cc8b4b3d66cf1071d432ea2ed8fc680ebc92db5f18a8bb4f161f8ea6d59c1025c0849dd8dc3e4ecfa84e62f939121dd322 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/Q_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/Q_.glif new file mode 100644 index 000000000..da78b6078 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/Q_.glif @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -163 71 + hstem -12 14.5 + hstem 595 73 + vstem 48 86 + vstem 466 86 + + + + pointTag + hintSet0005 + stems + + hstem -163 71 + hstem -12 69 + hstem 595 73 + vstem 48 86 + vstem 466 86 + + + + pointTag + hintSet0014 + stems + + hstem -163 71 + hstem -12 14.5 + hstem 595 73 + vstem 48 86 + vstem 466 86 + + + + pointTag + hintSet0015 + stems + + hstem -163 71 + hstem 20 -21 + hstem 595 73 + vstem 48 86 + vstem 466 86 + + + + pointTag + hintSet0016 + stems + + hstem -163 71 + hstem -12 69 + hstem 595 73 + vstem 48 86 + vstem 466 86 + + + + id + ceaf0f38bd3086b64264d83457987a5efc7737a31367cd941f462bd1eb5a28d038208268e343172835570f90939aec7decbc2908f8019950097d2ac7c6fc4270 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/R_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/R_.glif new file mode 100644 index 000000000..1656e13cf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/R_.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 21 -21 + hstem 277 68 + hstem 589 67 + vstem 100 83 + vstem 450 83 + + + + pointTag + hintSet0012 + stems + + hstem 21 -21 + hstem 300 45 + hstem 589 67 + vstem 100 83 + vstem 450 83 + + + + id + b5ac4498a28beb96f5e7fb10a17e9497013560ecda22148896fd240d7bacc2f2ab6916b85951d93268a51ac6d09c6b77fab63538fac1ec0e5b0cc187879475f1 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/S_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/S_.glif new file mode 100644 index 000000000..84d4ffa3e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/S_.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -12 73 + hstem 595 73 + vstem 98 85 + vstem 452 85 + + + + id + 1724915dc652c64aae38de96f4ebf3479f2fe1f18faa2d57430afc9502de2522545a32d1163fc292492925cd412377138af7c76ac901eed183992d3c54824abb + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/T_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/T_.glif new file mode 100644 index 000000000..d5b75ef98 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/T_.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 21 -21 + hstem 586 70 + vstem 258 84 + + + + id + w600l2580l3420l342586l558586l558656l42656l42586l258586 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/U_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/U_.glif new file mode 100644 index 000000000..cf13c69cc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/U_.glif @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -12 73 + hstem 656 -20 + vstem 79 84 + vstem 440 81 + + + + id + w600c301-12429-1252160c521248l521656l440656l44024644011038061c3016122261163110c163246l163656l79656l792487960172-12 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/V_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/V_.glif new file mode 100644 index 000000000..8f780b7c8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/V_.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 85 + hstem 656 -20 + vstem 43 514 + + + + id + w600l2520l3490l557656l472656l367302345224328162c30485l30085276162260224c237302l131656l43656 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/W_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/W_.glif new file mode 100644 index 000000000..aca31f149 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/W_.glif @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 93 + hstem 382 106 + hstem 657 -20 + vstem 10 580 + + + + id + 0f0370dadd9b8633255f58a956487058c2b3055da58feab57904878373a935921c0d4d50dde7a4288cf236b323eac7d678f497d65921cfd4eb07d353178ba6cb + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/X_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/X_.glif new file mode 100644 index 000000000..1c770eae3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/X_.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 21 -21 + hstem 656 -20 + vstem 54 492 + + + + id + 4364e181d90665976be4ce98c4c37df3e0eebd8c53ab6414287e1827a9f31b70ff268791b8bf52d9f2121686b5a398208ff9145c32af2a52a7ff808ea94d8991 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif new file mode 100644 index 000000000..a544e022d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/Y_.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 21 -21 + hstem 656 -20 + vstem 258 84 + + + + id + w600l2580l3420l342234l562656l476656l381462356411330361c304308l300308273361250411c225461l126656l38656l258234 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/Z_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/Z_.glif new file mode 100644 index 000000000..75f1ef14b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/Z_.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 71 + hstem 587 70 + vstem 65 474 + + + + id + w600l650l5390l53971l16771l534607l534657l97657l97587l431587l6550 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/a.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/a.glif new file mode 100644 index 000000000..4d52280e9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/a.glif @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -12 66 + hstem 430 68 + vstem 81 80 + vstem 433 82 + + + + pointTag + hintSet0001 + stems + + hstem -12 66 + hstem 430 68 + vstem 81 80 + vstem 444.5 70.5 + + + + pointTag + hintSet0003 + stems + + hstem 21 -21 + hstem 430 68 + vstem 81 80 + vstem 444.5 70.5 + + + + pointTag + hintSet0004 + stems + + hstem 21 -21 + hstem 430 68 + vstem 81 80 + vstem 433 82 + + + + pointTag + hintSet0012 + stems + + hstem -12 66 + hstem 430 68 + vstem 81 80 + vstem 433 82 + + + + id + cbe04e8e713fe5aae516060eb43d25fc97a3898f6776b7aa66795ccdee099de5471687749ae73d57267be4ae0b4018faa6f079cd99d42d0adc741254d0812377 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/ampersand.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/ampersand.glif new file mode 100644 index 000000000..9458d3c37 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/ampersand.glif @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -12 66 + hstem 609 59 + vstem 42 80 + vstem 325 67 + + + + pointTag + hintSet0009 + stems + + hstem -12 66 + hstem 609 59 + vstem 121 71 + vstem 325 67 + + + + pointTag + hintSet0017 + stems + + hstem -12 66 + hstem 609 59 + vstem 42 80 + vstem 325 67 + + + + id + c572d65f3649efb510d33a7c3f972fa336d4187ea3312a947b1318257fdb58f87bc875430de182a46154aab2c77782f3a4eb42eb865ec165a68ec7eed3c50c4d + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/asciicircum.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/asciicircum.glif new file mode 100644 index 000000000..973cf3496 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/asciicircum.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 593 77 + vstem 111 378 + + + + id + w600l111284l183284l249460l298593l302593l351460l417284l489284l336670l264670 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/asciitilde.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/asciitilde.glif new file mode 100644 index 000000000..82c8ae14b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/asciitilde.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 257 62 + hstem 341 62 + vstem 76 448 + + + + pointTag + hintSet0005 + stems + + hstem 341 62 + vstem 76 448 + + + + pointTag + hintSet0008 + stems + + hstem 257 62 + hstem 341 62 + vstem 76 448 + + + + id + 5fcb94382d9b5cea789f6a2d29b5a9aee9c10615961a5d3e746f7163f97dab9d3bb1d3dfc2f6763c59bcc2264d7c23a5524fc791b299fc6e327da9481cb5aad4 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/asterisk.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/asterisk.glif new file mode 100644 index 000000000..31ce54ce6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/asterisk.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 111 445 + vstem 271.5 57 + + + + id + w600l180111l300270l420111l462141l354306l516376l500422l333367l324556l276556l267367l100422l84376l246306l138141 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/at.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/at.glif new file mode 100644 index 000000000..4db71f06d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/at.glif @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -144 55 + hstem 88 58 + hstem 580 55 + vstem 49 63 + vstem 224 66 + vstem 482 64 + + + + pointTag + hintSet0006 + stems + + hstem -144 55 + hstem 88 58 + hstem 580 55 + vstem 49 63 + vstem 224 66 + vstem 488 58 + + + + pointTag + hintSet0010 + stems + + hstem -144 55 + hstem 88 58 + hstem 580 55 + vstem 49 63 + vstem 224 66 + vstem 492.5 53.5 + + + + pointTag + hintSet0013 + stems + + hstem -144 55 + hstem 88 58 + hstem 580 55 + vstem 49 63 + vstem 224 66 + vstem 482 64 + + + + id + 3624e896b755b3406bfe1c35edb6c8dd52878d9195fd155baf4d7c935fffd9c48d9fe9234adfa46a16db5238c20f5858cf388b6844fd8117296e8bfa705fc64b + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/b.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/b.glif new file mode 100644 index 000000000..74f2d4692 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/b.glif @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -12 69 + hstem 429 69 + hstem 712 -20 + vstem 93 82 + vstem 455 85 + + + + pointTag + hintSet0008 + stems + + hstem 21 -21 + hstem 429 69 + hstem 712 -20 + vstem 93 82 + vstem 455 85 + + + + pointTag + hintSet0009 + stems + + hstem 21 -21 + hstem 429 69 + hstem 712 -20 + vstem 93 69.5 + vstem 455 85 + + + + pointTag + hintSet0010 + stems + + hstem -12 69 + hstem 429 69 + hstem 712 -20 + vstem 93 69.5 + vstem 455 85 + + + + pointTag + hintSet0012 + stems + + hstem -12 69 + hstem 429 69 + hstem 712 -20 + vstem 93 82 + vstem 455 85 + + + + id + 842415f0127bdb82e9e1421ad6c80cc1359451785c8f71a28e54d5476e3bee61e17045bbd890e3b0b08f382686c6b015f113d1a7a24dcaa1eabc09f0ff1f096c + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/backslash.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/backslash.glif new file mode 100644 index 000000000..62c6e6e10 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/backslash.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -160 870 + vstem 99 402 + + + + id + w600l427-160l501-160l173710l99710 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/bar.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/bar.glif new file mode 100644 index 000000000..5f85e4e44 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/bar.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -250 1000 + vstem 263 74 + + + + id + w600l263-250l337-250l337750l263750 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/braceleft.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/braceleft.glif new file mode 100644 index 000000000..d50c90e9d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/braceleft.glif @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -152 47 + hstem 252 52 + hstem 661 47 + vstem 256 76 + + + + pointTag + hintSet0016 + stems + + hstem -152 47 + hstem 252 52 + hstem 661 47 + vstem 120 121 + vstem 256 76 + + + + pointTag + hintSet0018 + stems + + hstem -152 47 + hstem 252 52 + hstem 661 47 + vstem 256 76 + + + + id + 02bfb4240c08ccc820d952481ca67606a06859286daed1b458d886807870cec97321e8f5537d4d6c6e68c1fe04d25d3bf87e811b88162857cad16dafa885f715 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/braceright.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/braceright.glif new file mode 100644 index 000000000..a17498441 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/braceright.glif @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -152 47 + hstem 252 52 + hstem 661 47 + vstem 269 75 + + + + pointTag + hintSet0004 + stems + + hstem -152 47 + hstem 252 52 + hstem 661 47 + vstem 269 75 + vstem 359 121 + + + + pointTag + hintSet0006 + stems + + hstem -152 47 + hstem 252 52 + hstem 661 47 + vstem 269 75 + + + + id + aae48ea61dbfcd1f63276d1a8289db0bd36e1144f58605429f35e356b684c326c34857668e833517752ba0a163f5e534b695fc51f782002fe82c5b382371f44c + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/bracketleft.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/bracketleft.glif new file mode 100644 index 000000000..542be9dd1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/bracketleft.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -152 47 + hstem 661 47 + vstem 225 66 + + + + id + w600l225-152l502-152l502-105l291-105l291661l502661l502708l225708 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/bracketright.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/bracketright.glif new file mode 100644 index 000000000..f23fb9ab8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/bracketright.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -152 47 + hstem 661 47 + vstem 309 66 + + + + id + w600l98-152l375-152l375708l98708l98661l309661l309-105l98-105 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/c.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/c.glif new file mode 100644 index 000000000..8c66447ed --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/c.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -12 68 + hstem 430 68 + vstem 80 85 + + + + id + e0e0adbd09a042e383df9d048e196b31f5d626a4c26355d66fc3ae0cee53a905fb39f4c6707e14997792e75014c25790f331d45038ce574a02d76e97997fcb86 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/colon.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/colon.glif new file mode 100644 index 000000000..0c9888afc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/colon.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -12 169 + hstem 346 169 + vstem 219 162 + + + + id + 1ef63e19cf268bf3a5d938f4ee7413b56b77afe0b85840cf9404d0cd887ea45894141d684408c93ce8f463644fdaca5b887de1517ce8fc43958bbaec7f11e73a + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/comma.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/comma.glif new file mode 100644 index 000000000..d7fff006d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/comma.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -192 -21 + hstem 4 151 + vstem 323 73 + + + + id + 1fc5c4111eae07dc5d05b0f235cbe82d46affc3e12365a73ae71a918515dd2da52ab03c6d02149159bb9014bf48eadb8fb4dc8063c9fab4251538589a7785086 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist new file mode 100644 index 000000000..0e6711b91 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist @@ -0,0 +1,194 @@ + + + + + A + A_.glif + B + B_.glif + C + C_.glif + D + D_.glif + E + E_.glif + F + F_.glif + G + G_.glif + H + H_.glif + I + I_.glif + J + J_.glif + K + K_.glif + L + L_.glif + M + M_.glif + N + N_.glif + O + O_.glif + P + P_.glif + Q + Q_.glif + R + R_.glif + S + S_.glif + T + T_.glif + U + U_.glif + V + V_.glif + W + W_.glif + X + X_.glif + Y + Y_.glif + Z + Z_.glif + a + a.glif + ampersand + ampersand.glif + asciicircum + asciicircum.glif + asciitilde + asciitilde.glif + asterisk + asterisk.glif + at + at.glif + b + b.glif + backslash + backslash.glif + bar + bar.glif + braceleft + braceleft.glif + braceright + braceright.glif + bracketleft + bracketleft.glif + bracketright + bracketright.glif + c + c.glif + colon + colon.glif + comma + comma.glif + d + d.glif + dollar + dollar.glif + e + e.glif + eight + eight.glif + equal + equal.glif + exclam + exclam.glif + f + f.glif + five + five.glif + four + four.glif + g + g.glif + grave + grave.glif + greater + greater.glif + h + h.glif + hyphen + hyphen.glif + i + i.glif + j + j.glif + k + k.glif + l + l.glif + less + less.glif + m + m.glif + n + n.glif + nine + nine.glif + numbersign + numbersign.glif + o + o.glif + one + one.glif + p + p.glif + parenleft + parenleft.glif + parenright + parenright.glif + percent + percent.glif + period + period.glif + plus + plus.glif + q + q.glif + question + question.glif + quotedbl + quotedbl.glif + quotesingle + quotesingle.glif + r + r.glif + s + s.glif + semicolon + semicolon.glif + seven + seven.glif + six + six.glif + slash + slash.glif + t + t.glif + three + three.glif + two + two.glif + u + u.glif + underscore + underscore.glif + v + v.glif + w + w.glif + x + x.glif + y + y.glif + z + z.glif + zero + zero.glif + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/d.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/d.glif new file mode 100644 index 000000000..c0551a51c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/d.glif @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -12 69 + hstem 429 69 + hstem 712 -20 + vstem 60 85 + vstem 425 82 + + + + pointTag + hintSet0001 + stems + + hstem -12 69 + hstem 429 69 + hstem 712 -20 + vstem 60 85 + vstem 435.5 71.5 + + + + pointTag + hintSet0003 + stems + + hstem 21 -21 + hstem 429 69 + hstem 712 -20 + vstem 60 85 + vstem 435.5 71.5 + + + + pointTag + hintSet0004 + stems + + hstem 21 -21 + hstem 429 69 + hstem 712 -20 + vstem 60 85 + vstem 425 82 + + + + pointTag + hintSet0012 + stems + + hstem -12 69 + hstem 429 69 + hstem 712 -20 + vstem 60 85 + vstem 425 82 + + + + id + a0f86281e580d74d508910f068dd63a6f3d7e3a7556e2542431bce223c9293789eb74e06b2cd23f3aa522a9cae23ac8ab4661954b1cd60feef6407d6ea97122a + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/dollar.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/dollar.glif new file mode 100644 index 000000000..8eea9d31f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/dollar.glif @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 34 68 + hstem 550 68 + vstem 114 80 + vstem 276 60 + vstem 431 81 + + + + pointTag + hintSet0012 + stems + + hstem 34 29 + hstem 587 31 + vstem 114 80 + vstem 276 60 + vstem 431 81 + + + + id + 561de306b85f85ae68849435569bbc5dc4f65a9e7302b52b3c82e57c6cbc133df9d2da65cf05a66c6dcedf4a9cf466c09e94f5a6208fcaa3227f188cdefdf69e + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/e.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/e.glif new file mode 100644 index 000000000..0b748f2ef --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/e.glif @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -12 66 + hstem 220 64 + hstem 433 65 + vstem 68 82 + vstem 464 74 + + + + pointTag + hintSet0004 + stems + + hstem -12 66 + hstem 261 23 + hstem 433 65 + vstem 123 27 + vstem 464 74 + + + + pointTag + hintSet0007 + stems + + hstem -12 66 + hstem 220 64 + hstem 433 65 + vstem 123 27 + vstem 464 74 + + + + pointTag + hintSet0013 + stems + + hstem -12 66 + hstem 220 64 + hstem 433 65 + vstem 68 82 + vstem 464 74 + + + + id + 66f1d1da4c0a4eda43d42a712364b129cc682c92af87bdc38bf30ed3d4cf45bd9f7c7a48f03f1af5f8ccd15af5d2e8d944f6635aa8f87000e7c6d0fc4af73627 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/eight.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/eight.glif new file mode 100644 index 000000000..2b5cd24c2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/eight.glif @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -12 61 + hstem 589 61 + vstem 68 75 + vstem 452 79 + + + + pointTag + hintSet0004 + stems + + hstem -12 61 + hstem 589 61 + vstem 108 75 + vstem 432 71 + + + + pointTag + hintSet0009 + stems + + hstem -12 61 + hstem 589 61 + vstem 68 75 + vstem 452 79 + + + + pointTag + hintSet0011 + stems + + hstem -12 61 + hstem 589 61 + vstem 108 75 + vstem 432 71 + + + + pointTag + hintSet0016 + stems + + hstem -12 61 + hstem 589 61 + vstem 68 75 + vstem 452 79 + + + + id + 3edcc7a39cacc274efd3de7744a959a0e805246b1146b62058b0767e382647d37149f543da0ef99ade0d0204e2d8ac0677db73b49089628a0e5b46c8b8aa3303 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/equal.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/equal.glif new file mode 100644 index 000000000..bfcbef52d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/equal.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 192 62 + hstem 406 62 + vstem 85 430 + + + + id + w600l85406l515406l515468l85468l85192l515192l515254l85254 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/exclam.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/exclam.glif new file mode 100644 index 000000000..622adfe88 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/exclam.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 9 -21 + vstem 267 66 + + + + pointTag + hintSet0006 + stems + + hstem 9 -21 + vstem 227 146 + + + + pointTag + hintSet0008 + stems + + hstem -12 154 + vstem 227 146 + + + + pointTag + hintSet0010 + stems + + hstem 9 -21 + vstem 227 146 + + + + id + w600l272232l328232l338576l340670l260670l262576c300-12340-1237318c37366373113340142c300142260142227113c2276622718260-12 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/f.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/f.glif new file mode 100644 index 000000000..e14ee55c2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/f.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 21 -21 + hstem 419 67 + hstem 657 67 + vstem 242 81 + + + + id + f11d83866fdc9cb639c84d62c749f6d298d9b5aef72d5fd9e2641b66e9ded92680f0d395625840160e1dc3c127ad2d38a4f4b0b4bc2c4a41f00f158abd475c5f + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/five.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/five.glif new file mode 100644 index 000000000..cb85c76e1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/five.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -12 68 + hstem 342 62 + hstem 567 71 + vstem 439 83 + + + + id + fd8fd14d8f2dab416e3b37c5293ece4ee27049e03197a7135ba4c186892202b39307c89a6c3fd14933ac995603965a6928656757696bf683f4e6abea72baccde + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/four.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/four.glif new file mode 100644 index 000000000..159295bff --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/four.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 242 + hstem 553 85 + vstem 368 78 + + + + pointTag + hintSet0004 + stems + + hstem 176 66 + hstem 553 85 + vstem 368 177 + + + + pointTag + hintSet0009 + stems + + hstem 176 66 + hstem 553 85 + vstem 368 78 + + + + id + w600l3680l4460l446638l358638l39231l39176l545176l545242l130242l303460324491348522c368553l373553371518369475c368440 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/g.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/g.glif new file mode 100644 index 000000000..c3210f3b3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/g.glif @@ -0,0 +1,231 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -224 60 + hstem -8 68 + hstem 154 55 + hstem 419 67 + vstem 72 71 + vstem 485 81 + + + + pointTag + hintSet0004 + stems + + hstem -224 60 + hstem -8 68 + hstem 154 55 + hstem 419 67 + vstem 102 69 + vstem 403 76 + + + + pointTag + hintSet0012 + stems + + hstem -224 60 + hstem -8 68 + hstem 154 55 + hstem 438 60 + vstem 100 79 + vstem 403 76 + + + + pointTag + hintSet0016 + stems + + hstem -224 60 + hstem 21 -21 + hstem 154 55 + hstem 419 67 + vstem 102 69 + vstem 403 76 + + + + pointTag + hintSet0019 + stems + + hstem -224 60 + hstem 21 -21 + hstem 154 55 + hstem 419 67 + vstem 72 71 + vstem 403 76 + + + + pointTag + hintSet0020 + stems + + hstem -224 60 + hstem -8 68 + hstem 154 55 + hstem 419 67 + vstem 72 71 + vstem 485 81 + + + + pointTag + hintSet0021 + stems + + hstem -224 60 + hstem -8 68 + hstem 154 55 + hstem 438 60 + vstem 100 79 + vstem 403 76 + + + + pointTag + hintSet0026 + stems + + hstem -224 60 + hstem 21 -21 + hstem 154 55 + hstem 419 67 + vstem 72 71 + vstem 485 81 + + + + pointTag + hintSet0029 + stems + + hstem -224 60 + hstem -8 68 + hstem 154 55 + hstem 419 67 + vstem 100 79 + vstem 485 81 + + + + pointTag + hintSet0032 + stems + + hstem -224 60 + hstem 21 -21 + hstem 154 55 + hstem 419 67 + vstem 72 71 + vstem 485 81 + + + + id + c0a1ac707506e9a15af37ef9aadbf7fff110df090241aa18cf3e665d85a2e769c1a02816cea1d9c2d47b1ca58faaa27139991dd63c72e54573071c52936ec393 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/grave.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/grave.glif new file mode 100644 index 000000000..3206224d7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/grave.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 721 -20 + vstem 164 200 + + + + id + w600l321568l364609l222777l164721 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/greater.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/greater.glif new file mode 100644 index 000000000..8019213ec --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/greater.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 48 568 + vstem 408 72 + + + + id + w600l10748l480301l480363l107616l107537l408334l408330l107127 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/h.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/h.glif new file mode 100644 index 000000000..cba6d1d33 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/h.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 21 -21 + hstem 427 71 + hstem 712 -20 + vstem 93 82 + vstem 441 82 + + + + id + d88d83825c963410efb2235c3303d61f85df6b998eddf63c5e38b8b103451ba27afd783feaa0de9b85e0440c52d908d456b383ff85cf6728a4374cb75adc1db8 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/hyphen.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/hyphen.glif new file mode 100644 index 000000000..65d5b236b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/hyphen.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 299 62 + vstem 85 430 + + + + id + w600l85299l515299l515361l85361 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/i.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/i.glif new file mode 100644 index 000000000..fbf793d0c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/i.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 21 -21 + hstem 419 67 + hstem 588 128 + vstem 316 82 + + + + pointTag + hintSet0006 + stems + + hstem 21 -21 + hstem 419 67 + hstem 588 128 + vstem 282 132 + + + + id + w600l3160l3980l398486l90486l90419l316419c348588385588414613c414652414690385716c348716311716282690c282652282613311588 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/j.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/j.glif new file mode 100644 index 000000000..91226a212 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/j.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -217 67 + hstem 419 67 + hstem 588 128 + vstem 316 82 + + + + pointTag + hintSet0011 + stems + + hstem -217 67 + hstem 419 67 + hstem 588 128 + vstem 282 132 + + + + id + eaee6e75f2df0f120102bb28564f93cc52c076d9e21ec4018633d94917c8a7ed25c24a7c667a92b4bfd1df7b2d1477e0dae1c5d50650fa6f583364ff03866779 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/k.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/k.glif new file mode 100644 index 000000000..051960415 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/k.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 21 -21 + hstem 486 -20 + hstem 712 -20 + vstem 106 82 + + + + id + w600l1060l1880l188132l548486l454486l192230l188230l188712l106712l4820l5740l342312l292259 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/l.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/l.glif new file mode 100644 index 000000000..4c43c204d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/l.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -12 68 + hstem 645 67 + vstem 247 82 + + + + id + w600c407-12460-12492-2c53717l516784836345356c425563675632986c329157l329712l74712l74645l247645l24716324748304-12 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/less.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/less.glif new file mode 100644 index 000000000..ce54aceeb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/less.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 48 568 + vstem 120 72 + + + + id + w600l49348l493127l192330l192334l493537l493616l120363l120301 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/m.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/m.glif new file mode 100644 index 000000000..2c1f43b9a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/m.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 21 -21 + hstem 427 71 + vstem3 58 82 270 76 476 82 + + + + pointTag + hintSet0018 + stems + + hstem 21 -21 + hstem 486 -20 + vstem3 58 82 270 76 476 82 + + + + id + 58ec38f5290aa1be15ca0c5b49bab0d9aaf84c33984ecbd988858b64313d8f374bb7d78d297c9e71dd6fc9cc9e9d77e54ecab60bf75bded6e43ea2f1c2b1a9d3 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/n.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/n.glif new file mode 100644 index 000000000..d533b19da --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/n.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 21 -21 + hstem 427 71 + vstem 93 82 + vstem 441 82 + + + + pointTag + hintSet0009 + stems + + hstem 21 -21 + hstem 427 71 + vstem 93 71.5 + vstem 441 82 + + + + pointTag + hintSet0011 + stems + + hstem 21 -21 + hstem 486 -20 + vstem 93 71.5 + vstem 441 82 + + + + pointTag + hintSet0012 + stems + + hstem 21 -21 + hstem 486 -20 + vstem 93 82 + vstem 441 82 + + + + id + 3309286488ca6fbf31cf7f636de890d9314b6d294d387c886b956b2c2c6b1fff372259e0846bba086c9cca076970bc1bb339e1b12cd9f2c0cab0970a0a53e8f1 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/nine.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/nine.glif new file mode 100644 index 000000000..69e754454 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/nine.glif @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -12 68 + hstem 248 62 + hstem 585 65 + vstem 67 78 + vstem 446 78 + + + + id + c15021ca8739d02b329a3173cfd7b412b9d62744b26512ecf5d80104fdaf020b6fccb2faf8d2475f2888ab7805831675f71d8a00f6480e957d976bf31ea6b2f8 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/numbersign.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/numbersign.glif new file mode 100644 index 000000000..c48aa6e75 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/numbersign.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 261 + hstem 409 241 + vstem 87 432 + + + + pointTag + hintSet0008 + stems + + hstem 204 57 + hstem 409 58 + vstem 87 432 + + + + id + w600l3280l3820l461650l408650l1420l1960l275650l222650l107409l519409l519467l107467l87204l499204l499261l87261 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/o.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/o.glif new file mode 100644 index 000000000..fed76fc2d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/o.glif @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -12 68 + hstem 430 68 + vstem 60 85 + vstem 455 85 + + + + id + fb7aa123bbc160e9e3c10e5d66e45a5edff3cdcf2b0a08caedb1632cff4b1dda08c03f3cec55e4f523a71e855c013ce3372444e2e0bf0da6316fcb456400dd5f + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/one.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/one.glif new file mode 100644 index 000000000..bbe86baf8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/one.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 68 + hstem 538 100 + vstem 281 82 + + + + id + w600l970l5300l53068l36368l363638l302638261616213601c138591l138538l281538l28168l9768 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/p.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/p.glif new file mode 100644 index 000000000..a28a9023e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/p.glif @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -184 -21 + hstem -12 69 + hstem 429 69 + vstem 93 82 + vstem 455 85 + + + + pointTag + hintSet0008 + stems + + hstem -184 -21 + hstem -12 69 + hstem 429 69 + vstem 93 71.5 + vstem 455 85 + + + + pointTag + hintSet0010 + stems + + hstem -184 -21 + hstem -12 69 + hstem 486 -20 + vstem 93 71.5 + vstem 455 85 + + + + pointTag + hintSet0011 + stems + + hstem -184 -21 + hstem -12 69 + hstem 486 -20 + vstem 93 82 + vstem 455 85 + + + + pointTag + hintSet0014 + stems + + hstem -184 -21 + hstem -12 69 + hstem 429 69 + vstem 93 82 + vstem 455 85 + + + + pointTag + hintSet0017 + stems + + hstem -184 -21 + hstem -12 69 + hstem 486 -20 + vstem 93 82 + vstem 455 85 + + + + id + 8631a5cd0b50191c8c15c72b7997bfa7c44de88c5bfc90641878b05a952a3399c120e7ff5dcd5b9de59b350b7f077f37729a66038b9da49e537d1d31fbb2fe96 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/parenleft.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/parenleft.glif new file mode 100644 index 000000000..d8ed362f3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/parenleft.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -176 908 + vstem 208 74 + + + + id + w600c433-176l478-134344-21282110c282278282446344577c478690l433732294624208471c20827820885294-68 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/parenright.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/parenright.glif new file mode 100644 index 000000000..e253f11d6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/parenright.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -176 908 + vstem 318 74 + + + + id + w600l167-176306-6839285c392278392471306624c167732l122690256577318446c318278318110256-21c122-134 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/percent.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/percent.glif new file mode 100644 index 000000000..7d849381f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/percent.glif @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 321 50 + hstem 601 49 + vstem 27 61 + vstem 244 61 + + + + pointTag + hintSet0010 + stems + + hstem 268 49 + vstem 295 61 + + + + pointTag + hintSet0014 + stems + + hstem -12 50 + vstem 295 61 + + + + pointTag + hintSet0018 + stems + + hstem -12 50 + hstem 268 49 + vstem 295 61 + vstem 512 61 + + + + id + b5b299aba2f1f9d41c6af2844746671a15e5107460b086d680bc04c9fd77f36bf9933f66bf27d8f096d07b5e9a708d315f24670fdc989a61f8f506dd8e594c80 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/period.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/period.glif new file mode 100644 index 000000000..b4663ab58 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/period.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -12 169 + vstem 219 162 + + + + id + w600c300-12345-1238122c38172381123345157c300157255157219123c2197221922255-12 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/plus.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/plus.glif new file mode 100644 index 000000000..da34adfa1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/plus.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 299 62 + vstem 267 66 + + + + id + w600l267104l333104l333299l515299l515361l333361l333556l267556l267361l85361l85299l267299 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/q.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/q.glif new file mode 100644 index 000000000..3ea0b6aac --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/q.glif @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -184 -21 + hstem -12 69 + hstem 429 69 + vstem 60 85 + vstem 425 82 + + + + pointTag + hintSet0002 + stems + + hstem -184 -21 + hstem -12 69 + hstem 486 -20 + vstem 60 85 + vstem 425 82 + + + + pointTag + hintSet0003 + stems + + hstem -184 -21 + hstem -12 69 + hstem 486 -20 + vstem 60 85 + vstem 437.5 69.5 + + + + pointTag + hintSet0004 + stems + + hstem -184 -21 + hstem -12 69 + hstem 429 69 + vstem 60 85 + vstem 437.5 69.5 + + + + pointTag + hintSet0009 + stems + + hstem -184 -21 + hstem -12 69 + hstem 429 69 + vstem 60 85 + vstem 425 82 + + + + id + e3729f6d21fc91f21f158b06c352b71a163a0ed3967b0a6dbbb475184c710eb0d475c8c5f43b1dd6a3d8ca4e58fcf422c893b21d6f311c24536cd5a4200a052d + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/question.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/question.glif new file mode 100644 index 000000000..e6b846e9e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/question.glif @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 9 -21 + hstem 614 68 + vstem 213 146 + vstem 398 81 + + + + pointTag + hintSet0011 + stems + + hstem -12 154 + hstem 614 68 + vstem 213 146 + vstem 398 81 + + + + pointTag + hintSet0013 + stems + + hstem 9 -21 + hstem 614 68 + vstem 213 146 + vstem 398 81 + + + + id + 4f103f067bd66f79f5337a89f046a38d3b3259e413d5585764b803557922a956ecdb5e54606c32eb0f83da193e093f2450a6d75effcd64995164f58c9b5e7930 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/quotedbl.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/quotedbl.glif new file mode 100644 index 000000000..28f2799e3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/quotedbl.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 352 335 + vstem 131 108 + vstem 361 108 + + + + id + w600l157352l213352l238577l240687l130687l132577l387352l443352l468577l470687l360687l362577 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/quotesingle.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/quotesingle.glif new file mode 100644 index 000000000..153fafc58 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/quotesingle.glif @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 352 335 + vstem 246 108 + + + + id + w600l272352l328352l353577l355687l245687l247577 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/r.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/r.glif new file mode 100644 index 000000000..275c9cc98 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/r.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 21 -21 + hstem 424 74 + vstem 146 82 + + + + pointTag + hintSet0005 + stems + + hstem 21 -21 + hstem 478 20 + vstem 146 82 + + + + pointTag + hintSet0006 + stems + + hstem 21 -21 + hstem 424 74 + vstem 146 71.5 + + + + pointTag + hintSet0009 + stems + + hstem 21 -21 + hstem 486 -20 + vstem 146 71.5 + + + + pointTag + hintSet0010 + stems + + hstem 21 -21 + hstem 486 -20 + vstem 146 82 + + + + id + w600l1460l2280l228285286386355424c428424466424484419c518407l537478507493477498c441498351498275449c224371l221371l214486l146486 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/s.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/s.glif new file mode 100644 index 000000000..1597f6b65 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/s.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -12 64 + hstem 434 64 + vstem 101 83 + vstem 443 83 + + + + id + 56b1f9bfc89b0c945678d9f87ef8c184ce832a9e987cc17f515039335bfee115c0a8ee0a9746a4288c91932f11da950668aba1699b0100742e1391929ab43f93 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/semicolon.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/semicolon.glif new file mode 100644 index 000000000..d85d3c844 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/semicolon.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -192 -21 + hstem 4 151 + hstem 346 169 + vstem 219 162 + + + + pointTag + hintSet0006 + stems + + hstem -192 -21 + hstem 4 151 + hstem 346 169 + vstem 323 73 + + + + id + 309fa4967c2912379b6f3cd12db53173eacf4374dcb635a187633df3bc05cc18ccb1ae9d2f0a1638e97c1772bcf96efe20a9ac290305584089c04e148791ebba + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/seven.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/seven.glif new file mode 100644 index 000000000..fceecd942 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/seven.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 21 -21 + hstem 567 71 + vstem 226 86 + + + + id + w600c2260l3120321250363394c532587l532638l70638l70567l438567292388237242 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/six.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/six.glif new file mode 100644 index 000000000..4341ad22b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/six.glif @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -12 65 + hstem 328 62 + hstem 581 69 + vstem 77 77 + vstem 456 78 + + + + id + fd5ebb173e0851c13d15604a1e5582e9dd45f773219c2a0c81c1f6b7a78fcc897fac1e7a03b6112be5399e51ad0e77785b2f9688a0bb5808b543e61a325e33b6 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/slash.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/slash.glif new file mode 100644 index 000000000..96c0e8174 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/slash.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -160 870 + vstem 99 402 + + + + id + w600l99-160l173-160l501710l427710 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/t.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/t.glif new file mode 100644 index 000000000..e27a74aca --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/t.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -12 67 + hstem 419 67 + vstem 206 82 + + + + pointTag + hintSet0010 + stems + + hstem -12 67 + hstem 419 67 + vstem 214.5 73.5 + + + + pointTag + hintSet0014 + stems + + hstem -12 67 + hstem 419 67 + vstem 206 82 + + + + id + b864697e1ed822b2172a976ea1e447fa252897b192091b7c7fd96b3ff69cd0a3c710dbc5390c541e8e4971325caea5af6c704981f615809254d164b46fbfc9a2 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/three.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/three.glif new file mode 100644 index 000000000..790f6a776 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/three.glif @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -12 68 + hstem 300 63 + hstem 583 67 + vstem 203 157 + vstem 435 83 + + + + pointTag + hintSet0004 + stems + + hstem -12 68 + hstem 300 63 + hstem 583 67 + vstem 203 157 + vstem 412 84 + + + + pointTag + hintSet0012 + stems + + hstem -12 68 + hstem 300 63 + hstem 583 67 + vstem 203 157 + vstem 435 83 + + + + id + d970315bd58c77ac76afde2edf8355b4b403fbf2c479e90f37d45e2eaa0fbfa0a18a4d37fb5e7c92e319e64a371ec1ca98b15a8e32cd5decc473084a2f529055 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/two.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/two.glif new file mode 100644 index 000000000..f1718f78f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/two.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 71 + hstem 583 67 + vstem 408 79 + + + + id + 332efa73d25c3f88b12c47f30984ae2b9c65db632910f44bd0cf2d05fa470cb84517daeea6eda8a6c3faaf62e45dc82e941b34976b414192e7b51ff2fdbf0e29 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/u.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/u.glif new file mode 100644 index 000000000..ce806f4c5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/u.glif @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -12 71 + hstem 486 -20 + vstem 77 83 + vstem 423 82 + + + + pointTag + hintSet0001 + stems + + hstem -12 71 + hstem 486 -20 + vstem 77 83 + vstem 434.5 70.5 + + + + pointTag + hintSet0003 + stems + + hstem 21 -21 + hstem 486 -20 + vstem 77 83 + vstem 434.5 70.5 + + + + pointTag + hintSet0004 + stems + + hstem 21 -21 + hstem 486 -20 + vstem 77 83 + vstem 423 82 + + + + pointTag + hintSet0007 + stems + + hstem -12 71 + hstem 486 -20 + vstem 77 83 + vstem 423 82 + + + + id + 7e83ab2666e28058a2a8e23b9de7f69fa0d5054cc3496c6c95f9b7e1eaf77b3e7375284efca7360fa634e70dc58c21a149fcca1113c959c289faf9e9f80bdc37 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/underscore.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/underscore.glif new file mode 100644 index 000000000..c376863a1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/underscore.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -140 71 + vstem 60 480 + + + + id + w600l60-140l540-140l540-69l60-69 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/v.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/v.glif new file mode 100644 index 000000000..c3b679af6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/v.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 67 + hstem 486 -20 + vstem 51 498 + + + + id + w600l2560l3480l549486l470486l358210338161322113c30567l30167284113266161c246210l134486l51486 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/w.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/w.glif new file mode 100644 index 000000000..11c733f84 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/w.glif @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 70 + hstem 486 -20 + vstem 8 584 + + + + pointTag + hintSet0003 + stems + + hstem 0 70 + hstem 376 80 + hstem 486 -20 + vstem 8 584 + + + + pointTag + hintSet0008 + stems + + hstem 0 70 + hstem 486 -20 + vstem 8 584 + + + + pointTag + hintSet0014 + stems + + hstem 0 70 + hstem 376 80 + hstem 486 -20 + vstem 8 584 + + + + pointTag + hintSet0020 + stems + + hstem 0 70 + hstem 486 -20 + vstem 8 584 + + + + id + 0c36aee3612d48a039f364e68be300293ffecc4e3e4da220da64a15eaddfe64b32934d44f3b527d9f6e0c44ea9c2c57641f361e9af8c5f4c86af3f9f10b65f2e + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/x.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/x.glif new file mode 100644 index 000000000..10ebc97ad --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/x.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 21 -21 + hstem 486 -20 + vstem 64 471 + + + + id + ff9aea08f0bc42c8259f637b5326e360666808b01387e4c775b36afc318bc0cc55bd55b6e7a33143a66d6b0b38bbdd122d273d2ba21d78c17ca9044a24c9e5d3 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/y.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/y.glif new file mode 100644 index 000000000..c08a703af --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/y.glif @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -209 68 + hstem 486 -20 + vstem 49 502 + + + + id + 7322c4145e4364bcf9aacf4c38118938b93f4327b2ecbba17db25a78b8b4353623112ded6716117097d378611687a3676267a21f5de4938e21e9f11217cc8e5a + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/z.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/z.glif new file mode 100644 index 000000000..2a8cdfe9a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/z.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem 0 67 + hstem 419 67 + vstem 71 460 + + + + id + w600l710l5310l53167l18867l522442l522486l108486l108419l404419l7144 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/zero.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/zero.glif new file mode 100644 index 000000000..494b10ca8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs.com.adobe.type.processedglyphs/zero.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -12 66 + hstem 261 133 + hstem 584 66 + vstem 71 77 + vstem 238 124 + vstem 452 77 + + + + id + 08b69485b9586a6f473afe6df1300c6b8c70ccc9ccde3c2b3d019b95edbc100d385e716ca072c124bfb19d0027b79f6a3d830368f4f8d57571fedc757326e695 + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/A_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/A_.glif new file mode 100644 index 000000000..131a04666 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/A_.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/B_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/B_.glif new file mode 100644 index 000000000..63ae21bfe --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/B_.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/C_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/C_.glif new file mode 100644 index 000000000..285c27dae --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/C_.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/D_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/D_.glif new file mode 100644 index 000000000..496efc3c9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/D_.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/E_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/E_.glif new file mode 100644 index 000000000..44de74df2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/E_.glif @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/F_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/F_.glif new file mode 100644 index 000000000..caa907c99 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/F_.glif @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/G_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/G_.glif new file mode 100644 index 000000000..10665f436 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/G_.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/H_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/H_.glif new file mode 100644 index 000000000..35eeebb40 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/H_.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/I_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/I_.glif new file mode 100644 index 000000000..c9b6aa737 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/I_.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/J_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/J_.glif new file mode 100644 index 000000000..40da602b7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/J_.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/K_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/K_.glif new file mode 100644 index 000000000..9e87165b1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/K_.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/L_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/L_.glif new file mode 100644 index 000000000..3e9824ebf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/L_.glif @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/M_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/M_.glif new file mode 100644 index 000000000..253362028 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/M_.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/N_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/N_.glif new file mode 100644 index 000000000..4e26932ff --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/N_.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/O_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/O_.glif new file mode 100644 index 000000000..195301376 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/O_.glif @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/P_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/P_.glif new file mode 100644 index 000000000..bd83befe3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/P_.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/Q_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/Q_.glif new file mode 100644 index 000000000..1348f9eac --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/Q_.glif @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/R_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/R_.glif new file mode 100644 index 000000000..b6f5dc817 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/R_.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/S_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/S_.glif new file mode 100644 index 000000000..b8c374161 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/S_.glif @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/T_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/T_.glif new file mode 100644 index 000000000..e8a64557d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/T_.glif @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/U_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/U_.glif new file mode 100644 index 000000000..7832e0f1f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/U_.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/V_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/V_.glif new file mode 100644 index 000000000..f758039f5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/V_.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/W_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/W_.glif new file mode 100644 index 000000000..0226eda2b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/W_.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/X_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/X_.glif new file mode 100644 index 000000000..d230679ec --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/X_.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/Y_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/Y_.glif new file mode 100644 index 000000000..cbfee2948 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/Y_.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/Z_.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/Z_.glif new file mode 100644 index 000000000..165a5d08a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/Z_.glif @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/a.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/a.glif new file mode 100644 index 000000000..88d46ad0c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/a.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/ampersand.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/ampersand.glif new file mode 100644 index 000000000..0065ab7c8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/ampersand.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/asciicircum.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/asciicircum.glif new file mode 100644 index 000000000..09d47bb82 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/asciicircum.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/asciitilde.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/asciitilde.glif new file mode 100644 index 000000000..38c23961f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/asciitilde.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/asterisk.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/asterisk.glif new file mode 100644 index 000000000..198512128 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/asterisk.glif @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/at.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/at.glif new file mode 100644 index 000000000..b34a2ef28 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/at.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/b.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/b.glif new file mode 100644 index 000000000..26c097f91 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/b.glif @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/backslash.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/backslash.glif new file mode 100644 index 000000000..caf45cdba --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/backslash.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/bar.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/bar.glif new file mode 100644 index 000000000..58ec42ad1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/bar.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/braceleft.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/braceleft.glif new file mode 100644 index 000000000..853d9763d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/braceleft.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/braceright.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/braceright.glif new file mode 100644 index 000000000..1860343a3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/braceright.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/bracketleft.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/bracketleft.glif new file mode 100644 index 000000000..885fb01da --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/bracketleft.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/bracketright.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/bracketright.glif new file mode 100644 index 000000000..60d5f82cf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/bracketright.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/c.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/c.glif new file mode 100644 index 000000000..49a862d07 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/c.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/colon.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/colon.glif new file mode 100644 index 000000000..a5adeab65 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/colon.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/comma.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/comma.glif new file mode 100644 index 000000000..8ef16fe3d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/comma.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/contents.plist b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/contents.plist new file mode 100644 index 000000000..5ea2011fa --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/contents.plist @@ -0,0 +1,196 @@ + + + + + A + A_.glif + B + B_.glif + C + C_.glif + D + D_.glif + E + E_.glif + F + F_.glif + G + G_.glif + H + H_.glif + I + I_.glif + J + J_.glif + K + K_.glif + L + L_.glif + M + M_.glif + N + N_.glif + O + O_.glif + P + P_.glif + Q + Q_.glif + R + R_.glif + S + S_.glif + T + T_.glif + U + U_.glif + V + V_.glif + W + W_.glif + X + X_.glif + Y + Y_.glif + Z + Z_.glif + a + a.glif + ampersand + ampersand.glif + asciicircum + asciicircum.glif + asciitilde + asciitilde.glif + asterisk + asterisk.glif + at + at.glif + b + b.glif + backslash + backslash.glif + bar + bar.glif + braceleft + braceleft.glif + braceright + braceright.glif + bracketleft + bracketleft.glif + bracketright + bracketright.glif + c + c.glif + colon + colon.glif + comma + comma.glif + d + d.glif + dollar + dollar.glif + e + e.glif + eight + eight.glif + equal + equal.glif + exclam + exclam.glif + f + f.glif + five + five.glif + four + four.glif + g + g.glif + grave + grave.glif + greater + greater.glif + h + h.glif + hyphen + hyphen.glif + i + i.glif + j + j.glif + k + k.glif + l + l.glif + less + less.glif + m + m.glif + n + n.glif + nine + nine.glif + numbersign + numbersign.glif + o + o.glif + one + one.glif + p + p.glif + parenleft + parenleft.glif + parenright + parenright.glif + percent + percent.glif + period + period.glif + plus + plus.glif + q + q.glif + question + question.glif + quotedbl + quotedbl.glif + quotesingle + quotesingle.glif + r + r.glif + s + s.glif + semicolon + semicolon.glif + seven + seven.glif + six + six.glif + slash + slash.glif + space + space.glif + t + t.glif + three + three.glif + two + two.glif + u + u.glif + underscore + underscore.glif + v + v.glif + w + w.glif + x + x.glif + y + y.glif + z + z.glif + zero + zero.glif + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/d.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/d.glif new file mode 100644 index 000000000..ca1afa0ca --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/d.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/dollar.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/dollar.glif new file mode 100644 index 000000000..4300b9896 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/dollar.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/e.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/e.glif new file mode 100644 index 000000000..2b941dda4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/e.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/eight.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/eight.glif new file mode 100644 index 000000000..8fea2aa5e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/eight.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/equal.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/equal.glif new file mode 100644 index 000000000..fa58df725 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/equal.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/exclam.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/exclam.glif new file mode 100644 index 000000000..4fd4aefac --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/exclam.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/f.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/f.glif new file mode 100644 index 000000000..180ffa321 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/f.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/five.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/five.glif new file mode 100644 index 000000000..3db6a91a9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/five.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/four.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/four.glif new file mode 100644 index 000000000..f03f64fee --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/four.glif @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/g.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/g.glif new file mode 100644 index 000000000..07159cf2e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/g.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/grave.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/grave.glif new file mode 100644 index 000000000..8a318f41b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/grave.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/greater.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/greater.glif new file mode 100644 index 000000000..4454c2b79 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/greater.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/h.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/h.glif new file mode 100644 index 000000000..1aa027c58 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/h.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/hyphen.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/hyphen.glif new file mode 100644 index 000000000..2dd03f5bd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/hyphen.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/i.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/i.glif new file mode 100644 index 000000000..875d511c6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/i.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/j.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/j.glif new file mode 100644 index 000000000..82c80d8d7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/j.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/k.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/k.glif new file mode 100644 index 000000000..884f5d1b3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/k.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/l.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/l.glif new file mode 100644 index 000000000..f3e557678 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/l.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/less.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/less.glif new file mode 100644 index 000000000..122d5a31f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/less.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/m.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/m.glif new file mode 100644 index 000000000..1eb7f42ac --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/m.glif @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/n.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/n.glif new file mode 100644 index 000000000..85c90ce15 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/n.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/nine.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/nine.glif new file mode 100644 index 000000000..7623e3fa8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/nine.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/numbersign.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/numbersign.glif new file mode 100644 index 000000000..cfd71bd73 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/numbersign.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/o.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/o.glif new file mode 100644 index 000000000..44e8ffb99 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/o.glif @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/one.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/one.glif new file mode 100644 index 000000000..ae5e339fa --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/one.glif @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/p.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/p.glif new file mode 100644 index 000000000..329ba2ff6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/p.glif @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/parenleft.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/parenleft.glif new file mode 100644 index 000000000..dffcf7662 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/parenleft.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/parenright.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/parenright.glif new file mode 100644 index 000000000..ac776a10d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/parenright.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/percent.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/percent.glif new file mode 100644 index 000000000..db147e294 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/percent.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/period.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/period.glif new file mode 100644 index 000000000..cdb94ddd5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/period.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/plus.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/plus.glif new file mode 100644 index 000000000..c22794750 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/plus.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/q.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/q.glif new file mode 100644 index 000000000..8825e5f4f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/q.glif @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/question.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/question.glif new file mode 100644 index 000000000..e2866814e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/question.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/quotedbl.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/quotedbl.glif new file mode 100644 index 000000000..23cf4427f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/quotedbl.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/quotesingle.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/quotesingle.glif new file mode 100644 index 000000000..edd773e83 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/quotesingle.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/r.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/r.glif new file mode 100644 index 000000000..734bd8dd6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/r.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/s.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/s.glif new file mode 100644 index 000000000..e0b42d852 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/s.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/semicolon.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/semicolon.glif new file mode 100644 index 000000000..b54824e30 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/semicolon.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/seven.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/seven.glif new file mode 100644 index 000000000..a3c91ff01 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/seven.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/six.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/six.glif new file mode 100644 index 000000000..de56ad996 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/six.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/slash.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/slash.glif new file mode 100644 index 000000000..ab034abb2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/slash.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/space.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/space.glif new file mode 100644 index 000000000..9a1384257 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/space.glif @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/t.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/t.glif new file mode 100644 index 000000000..970adeda7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/t.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/three.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/three.glif new file mode 100644 index 000000000..bfe5f13b3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/three.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/two.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/two.glif new file mode 100644 index 000000000..f4acf43d7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/two.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/u.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/u.glif new file mode 100644 index 000000000..b06ef5351 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/u.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/underscore.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/underscore.glif new file mode 100644 index 000000000..bce851ae7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/underscore.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/v.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/v.glif new file mode 100644 index 000000000..548ba6766 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/v.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/w.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/w.glif new file mode 100644 index 000000000..a8e0bfb18 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/w.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/x.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/x.glif new file mode 100644 index 000000000..d51fe8dee --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/x.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/y.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/y.glif new file mode 100644 index 000000000..e5b2f9ff0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/y.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/z.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/z.glif new file mode 100644 index 000000000..ba25d5504 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/z.glif @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/glyphs/zero.glif b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/zero.glif new file mode 100644 index 000000000..d95247867 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/glyphs/zero.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/font.ufo/groups.plist b/tests/otfautohint_data/input/dummy/font.ufo/groups.plist new file mode 100644 index 000000000..c96917c95 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/groups.plist @@ -0,0 +1,122 @@ + + + + + COMBINING_MARKS + + gravecmb + gravecmb.cap + variacmb + acutecmb + acutecmb.cap + tonoscmb + circumflexcmb + circumflexcmb.cap + tildecmb + tildecmb.cap + macroncmb + macroncmb.cap + overlinecmb + overlinecmb.cap + brevecmb + brevecmb.cyr + brevecmb.cap + brevecmb.cyrcap + dotaccentcmb + dotaccentcmb.cap + dieresiscmb + dieresiscmb.cap + hoicmb + hoicmb.cap + candrabinducmb + candrabinducmb.cap + ringcmb + ringcmb.cap + hungarumlautcmb + hungarumlautcmb.cap + caroncmb + caroncmb.cap + dblgravecmb + dblgravecmb.cap + breveinvertedcmb + breveinvertedcmb.cap + commaturnedabovecmb + aspercmb + commaabovecmb + leniscmb + lefttackbelowcmb + righttackbelowcmb + leftangleabovecmb + horncmb + ringhalfleftbelowcmb + uptackbelowcmb + downtackbelowcmb + plusbelowcmb + minusbelowcmb + dotbelowcmb + dieresisbelowcmb + ringbelowcmb + commabelowcmb + commabelowcmb.a + cedillacmb + cedillacmb.cap + ogonekcmb + ogonekcmb.cap + verticallinebelowcmb + bridgebelowcmb + caronbelowcmb + brevebelowcmb + breveinvertedbelowcmb + tildebelowcmb + macronbelowcmb + tildeoverlaycmb + ringhalfrightbelowcmb + bridgeinvertedbelowcmb + squarebelowcmb + seagullbelowcmb + xabovecmb + perispomenicmb + perispomenicmb.cap + iotasubscriptcmb + dieresisacutecmb + dieresisacutecmb.cap + dieresistonoscmb + dieresisgravecmb + dieresisgravecmb.cap + dialytikagravecmb + dieresistildecmb + dieresismacroncmb + dieresismacroncmb.cap + dieresiscaroncmb + dieresiscaroncmb.cap + circumflexacutecmb + circumflexacutecmb.cap + circumflexgravecmb + circumflexgravecmb.cap + circumflexhoicmb + circumflexhoicmb.cap + circumflextildecmb + circumflextildecmb.cap + breveacutecmb + breveacutecmb.cap + brevegravecmb + brevegravecmb.cap + brevehoicmb + brevehoicmb.cap + brevetildecmb + brevetildecmb.cap + circumflexbrevecmb + circumflexbrevecmb.cap + macronacutecmb + macronacutecmb.cap + carondotaccentcmb + carondotaccentcmb.cap + asperacutecmb + aspergravecmb + aspertildecmb + lenisacutecmb + lenisgravecmb + lenistildecmb + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/layercontents.plist b/tests/otfautohint_data/input/dummy/font.ufo/layercontents.plist new file mode 100644 index 000000000..b07680883 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/layercontents.plist @@ -0,0 +1,14 @@ + + + + + + public.default + glyphs + + + com.adobe.type.processedglyphs + glyphs.com.adobe.type.processedglyphs + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/lib.plist b/tests/otfautohint_data/input/dummy/font.ufo/lib.plist new file mode 100644 index 000000000..1f79fe92a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/lib.plist @@ -0,0 +1,104 @@ + + + + + public.glyphOrder + + space + A + B + C + D + E + F + G + H + I + J + K + L + M + N + O + P + Q + R + S + T + U + V + W + X + Y + Z + a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + t + u + v + w + x + y + z + ampersand + zero + one + two + three + four + five + six + seven + eight + nine + period + comma + colon + semicolon + exclam + question + quotesingle + quotedbl + hyphen + underscore + parenleft + parenright + bracketleft + bracketright + braceleft + braceright + slash + bar + backslash + asterisk + at + numbersign + dollar + percent + plus + equal + less + greater + asciicircum + asciitilde + grave + + + diff --git a/tests/otfautohint_data/input/dummy/font.ufo/metainfo.plist b/tests/otfautohint_data/input/dummy/font.ufo/metainfo.plist new file mode 100644 index 000000000..7b8b34ac6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/font.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + com.github.fonttools.ufoLib + formatVersion + 3 + + diff --git a/tests/otfautohint_data/input/dummy/fontinfo b/tests/otfautohint_data/input/dummy/fontinfo new file mode 100644 index 000000000..004e526db --- /dev/null +++ b/tests/otfautohint_data/input/dummy/fontinfo @@ -0,0 +1,112 @@ +IsItalicStyle false +IsBoldStyle false +PreferOS/2TypoMetrics false # Must be 'false' for vertical layout cross-platform consistency +IsOS/2WidthWeigthSlopeOnly false # Must be 'false' for OS/2 table version 3 +IsOS/2OBLIQUE false +UseOldNameID4 false +LicenseCode ADOBE + +#------------------------------------------------------ + +begin FDDict LOWERCASE + BaselineYCoord 0 + BaselineOvershoot -12 + LcHeight 486 + LcOvershoot 12 + AscenderHeight 712 + AscenderOvershoot 12 + DescenderHeight -205 + DescenderOvershoot -12 + DominantV [86] + DominantH [68] + FlexOK false + VCounterChars [m] + HCounterChars [ ] # intentionally left blank for tests +end FDDict LOWERCASE + + +begin FDDict UPPERCASE + BaselineYCoord 0 + BaselineOvershoot -12 + CapHeight 656 + CapOvershoot 12 + DominantV [86] + DominantH [68] + FlexOK false + VCounterChars [M T] + HCounterChars [] # intentionally left empty for tests +end FDDict UPPERCASE + + +begin FDDict FIGURES + BaselineYCoord 0 + BaselineOvershoot -12 + FigHeight 638 + FigOvershoot 12 + DominantV [86] + DominantH [68] + FlexOK false + HCounterChars [element equivalence notelement divide] +end FDDict FIGURES + +begin FDDict TEXT_FIGURES + BaselineYCoord 0 + BaselineOvershoot -12 + FigHeight 574 + FigOvershoot 12 + DominantV [86] + DominantH [68] + FlexOK false +end FDDict TEXT_FIGURES + +#------------------------------------------------------ + +begin GlyphSet UPPERCASE + #Latin + ^([A-Z]|AE|OE|Germandbls|Eth|Thorn|Schwa|Eng|IJ)(acute|grave|circumflex|tilde|dieresis|macron|breve|ring|ringacute|caron|ogonek|dotbelow|hoi|stroke|linebelow|cedilla|dotaccent|croat|commaaccent|hook|brevebelow|bar|dotbelowmacron|slash|hungarumlaut|horn|cat|dot)?(acute|grave|hoi|tilde|dotbelow|macron|caron|.a)?$ + #Greek + ^(Alpha|Beta|Gamma|Delta|Epsilon|Zeta|Eta|Theta|Iota|Kappa|Lambda|Mu|Nu|Xi|Omicron|Pi|Rho|Sigma|Tau|Upsilon|Phi|Chi|Psi|Omega)(iotasub)?(tonos|grave|acute|dieresis|lenis|asper|breve|macron|.greek)?(grave|acute|tilde)?(.a|.alt)?$ + #Cyrillic + ^(A|E|I|O|U|Schwa)(grave|breve|dieresis|macron|gravedbl|straight|bar)?(acutedbl)?(cyr|short|ukran|straight)(stroke)?$ + ^(Be|Ve|Ghe|De|Ie|Zhe|Ze|Ka|El|Em|En|Pe|Er|Es|Te|Ef|Ha|Tse|Che|Sha|Shcha|Hard|Yeru|Soft|Yu|Ya|Io|Dje|Gje|Dze|Yi|Je|Lje|Nje|Tshe|Kje|Dzhe|Yat|Fita|Izhitsa|Shha|Palochka|Aie)(grave|breve|ukran|up|descender|stroke|bashkir)?$ + #Punctuation + ^(exclam|question|exclamdbl|questiondbl|exclamquestion|questionexclam|interrobang)$ + ^(trademark|registered|servicemark)$ + ^(ampersand|section|paragraph)$ + #Cap figures + ^(zero|one|two|three|four|five|six|seven|eight|nine)(.cap|\.0c)$ + #Math + ^(Delta|Omega).math$ + ^(universal|existential|lozenge|house|estimated)$ +end GlyphSet UPPERCASE + + +begin GlyphSet LOWERCASE + #Latin + (dotless|germandbl|long)?([a-z]|eth|eng|schwa|rams|heng|lezh|esh|ezh|dezh|tesh)(acute|grave|circumflex|tilde|dieresis|macron|breve|ring|caron|ogonek|dotbelow|stroke|line|cedilla|dotaccent|croat|commaaccent|bar|greenlandic|slash|apostrophe|hungarumlaut|horn|cat|dot|turned|latin|hook|open|curl|tail|reversed|small|script|crossed|middle|belt|retroflex|longleg|fish|lottalstop|lick)?(acute|grave|hoi|tilde|dotbelow|below|macron|caron|turned|rhotic|reversed|tail|left|hook|inverted|stroke|alveolar|bilabial)?(closed|reversed|.a|.d|.da)? + ^[afoi][eijl](acute|macron|small)?$ + ^(f)_(f|t)$ + #Greek + ^(alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega)(dieresis|latin|.end|.a|.math)?(tonos|turned)?$ + ^(kai|stigma|koppa|sampi|digamma)$ + #Cyrillic + ^(a|e|i|o|u|ie|schwa)(grave|breve|dieresis|macron|gravedbl|straight|bar|acutedbl)?(cyr|short|ukran|stroke)?(.a)?$ + ^(be|ve|ghe|de|ie|zhe|ze|ka|el|em|en|pe|er|es|te|ef|ha|tse|che|sha|shcha|hard|yeru|soft|yu|ya|io|dje|gje|dze|yi|je|lje|nje|tshe|kje|dzhe|yat|fita|izhitsa|shha|palochka|aie)(grave|breve|ukran|up|descender|straight)?(stroke|bashkir|ital|.srb|.a)?$ + #Punctuation + ^(exclam|question|interrobang)down$ + ^(dagger|daggerdbl)$ + #Math & Symbol + ^(litre|heart|club|diamond|spade)$ +end GlyphSet LOWERCASE + + +begin GlyphSet FIGURES + ^(zero|one|two|three|four|five|six|seven|eight|nine)(\.0)?$ + ^(dollar|cent|sterling|yen|Euro|florin|colonmonetary|lira|naira|peseta|dong|peso|guarani|cedi|rupeeindian|won|hryvnia|tugrik|tenge|ruble|franc)(turkish)?$ + ^(percent|perthousand|numbersign|numero)$ + ^(zero|one|two|three|four|five|seven)(half|third|quarter|fifth|sixth|seventh|eighth|ninth|tenth)(s)?$ +end GlyphSet FIGURES + +begin GlyphSet TEXT_FIGURES + ^(zero|one|two|three|four|five|six|seven|eight|nine)(.onum|\.0o)$ +end GlyphSet TEXT_FIGURES diff --git a/tests/otfautohint_data/input/dummy/fontinfo_fdd b/tests/otfautohint_data/input/dummy/fontinfo_fdd new file mode 100644 index 000000000..f3c8c4722 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/fontinfo_fdd @@ -0,0 +1,111 @@ +IsItalicStyle false +IsBoldStyle false +PreferOS/2TypoMetrics false # Must be 'false' for vertical layout cross-platform consistency +IsOS/2WidthWeigthSlopeOnly false # Must be 'false' for OS/2 table version 3 +IsOS/2OBLIQUE false +UseOldNameID4 false +LicenseCode ADOBE + +#------------------------------------------------------ + +begin FDDict LOWERCASE + BaselineYCoord 0 + BaselineOvershoot -12 + LcHeight 486 + LcOvershoot 12 + AscenderHeight 712 + AscenderOvershoot 12 + DescenderHeight -205 + DescenderOvershoot -12 + DominantV [86] + DominantH [68] + FlexOK false + VCounterChars [m] + HCounterChars [ ] # intentionally left blank for tests +end FDDict LOWERCASE + + +begin FDDict UPPERCASE + BaselineYCoord 0 + BaselineOvershoot -12 + CapHeight 656 + CapOvershoot 12 + DominantV [86] + DominantH [68] + FlexOK false + VCounterChars [M T] + HCounterChars [] # intentionally left empty for tests +end FDDict UPPERCASE + + +begin FDDict FIGURES + BaselineYCoord 0 + BaselineOvershoot -12 + FigHeight 638 + FigOvershoot 12 + DominantV [86] + DominantH [68] + FlexOK false +end FDDict FIGURES + +begin FDDict TEXT_FIGURES + BaselineYCoord 0 + BaselineOvershoot -12 + FigHeight 574 + FigOvershoot 12 + DominantV [86] + DominantH [68] + FlexOK false +end FDDict TEXT_FIGURES + +#------------------------------------------------------ + +begin GlyphSet UPPERCASE + #Latin + ^([A-Z]|AE|OE|Germandbls|Eth|Thorn|Schwa|Eng|IJ)(acute|grave|circumflex|tilde|dieresis|macron|breve|ring|ringacute|caron|ogonek|dotbelow|hoi|stroke|linebelow|cedilla|dotaccent|croat|commaaccent|hook|brevebelow|bar|dotbelowmacron|slash|hungarumlaut|horn|cat|dot)?(acute|grave|hoi|tilde|dotbelow|macron|caron|.a)?$ + #Greek + ^(Alpha|Beta|Gamma|Delta|Epsilon|Zeta|Eta|Theta|Iota|Kappa|Lambda|Mu|Nu|Xi|Omicron|Pi|Rho|Sigma|Tau|Upsilon|Phi|Chi|Psi|Omega)(iotasub)?(tonos|grave|acute|dieresis|lenis|asper|breve|macron|.greek)?(grave|acute|tilde)?(.a|.alt)?$ + #Cyrillic + ^(A|E|I|O|U|Schwa)(grave|breve|dieresis|macron|gravedbl|straight|bar)?(acutedbl)?(cyr|short|ukran|straight)(stroke)?$ + ^(Be|Ve|Ghe|De|Ie|Zhe|Ze|Ka|El|Em|En|Pe|Er|Es|Te|Ef|Ha|Tse|Che|Sha|Shcha|Hard|Yeru|Soft|Yu|Ya|Io|Dje|Gje|Dze|Yi|Je|Lje|Nje|Tshe|Kje|Dzhe|Yat|Fita|Izhitsa|Shha|Palochka|Aie)(grave|breve|ukran|up|descender|stroke|bashkir)?$ + #Punctuation + ^(exclam|question|exclamdbl|questiondbl|exclamquestion|questionexclam|interrobang)$ + ^(trademark|registered|servicemark)$ + ^(ampersand|section|paragraph)$ + #Cap figures + ^(zero|one|two|three|four|five|six|seven|eight|nine)(.cap|\.0c)$ + #Math + ^(Delta|Omega).math$ + ^(universal|existential|lozenge|house|estimated)$ +end GlyphSet UPPERCASE + + +begin GlyphSet LOWERCASE + #Latin + (dotless|germandbl|long)?([a-z]|eth|eng|schwa|rams|heng|lezh|esh|ezh|dezh|tesh)(acute|grave|circumflex|tilde|dieresis|macron|breve|ring|caron|ogonek|dotbelow|stroke|line|cedilla|dotaccent|croat|commaaccent|bar|greenlandic|slash|apostrophe|hungarumlaut|horn|cat|dot|turned|latin|hook|open|curl|tail|reversed|small|script|crossed|middle|belt|retroflex|longleg|fish|lottalstop|lick)?(acute|grave|hoi|tilde|dotbelow|below|macron|caron|turned|rhotic|reversed|tail|left|hook|inverted|stroke|alveolar|bilabial)?(closed|reversed|.a|.d|.da)? + ^[afoi][eijl](acute|macron|small)?$ + ^(f)_(f|t)$ + #Greek + ^(alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega)(dieresis|latin|.end|.a|.math)?(tonos|turned)?$ + ^(kai|stigma|koppa|sampi|digamma)$ + #Cyrillic + ^(a|e|i|o|u|ie|schwa)(grave|breve|dieresis|macron|gravedbl|straight|bar|acutedbl)?(cyr|short|ukran|stroke)?(.a)?$ + ^(be|ve|ghe|de|ie|zhe|ze|ka|el|em|en|pe|er|es|te|ef|ha|tse|che|sha|shcha|hard|yeru|soft|yu|ya|io|dje|gje|dze|yi|je|lje|nje|tshe|kje|dzhe|yat|fita|izhitsa|shha|palochka|aie)(grave|breve|ukran|up|descender|straight)?(stroke|bashkir|ital|.srb|.a)?$ + #Punctuation + ^(exclam|question|interrobang)down$ + ^(dagger|daggerdbl)$ + #Math & Symbol + ^(litre|heart|club|diamond|spade)$ +end GlyphSet LOWERCASE + + +begin GlyphSet FIGURES + ^(zero|one|two|three|four|five|six|seven|eight|nine)(\.0)?$ + ^(dollar|cent|sterling|yen|Euro|florin|colonmonetary|lira|naira|peseta|dong|peso|guarani|cedi|rupeeindian|won|hryvnia|tugrik|tenge|ruble|franc)(turkish)?$ + ^(percent|perthousand|numbersign|numero)$ + ^(zero|one|two|three|four|five|seven)(half|third|quarter|fifth|sixth|seventh|eighth|ninth|tenth)(s)?$ +end GlyphSet FIGURES + +begin GlyphSet TEXT_FIGURES + ^(zero|one|two|three|four|five|six|seven|eight|nine)(.onum|\.0o)$ +end GlyphSet TEXT_FIGURES diff --git a/tests/otfautohint_data/input/dummy/glyphs.txt b/tests/otfautohint_data/input/dummy/glyphs.txt new file mode 100644 index 000000000..b2ffb0252 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/glyphs.txt @@ -0,0 +1 @@ +a,b,c diff --git a/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/data/com.adobe.type.processedHashMap b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/data/com.adobe.type.processedHashMap new file mode 100644 index 000000000..950322791 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/data/com.adobe.type.processedHashMap @@ -0,0 +1,12 @@ +{ +'hashMapVersion': (1, 0), +'no_width-no_height': ['w0l00l1400l140140l0140', ['autohint']], +'no_width-some_height': ['w0l00l1400l140140l0140', ['autohint']], +'no_width-zero_height': ['w0l00l1400l140140l0140', ['autohint']], +'some_width-no_height': ['w500l00l1400l140140l0140', ['autohint']], +'some_width-some_height': ['w500l00l1400l140140l0140', ['autohint']], +'some_width-zero_height': ['w500l00l1400l140140l0140', ['autohint']], +'zero_width-no_height': ['w0l00l1400l140140l0140', ['autohint']], +'zero_width-some_height': ['w0l00l1400l140140l0140', ['autohint']], +'zero_width-zero_height': ['w0l00l1400l140140l0140', ['autohint']], +} diff --git a/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/fontinfo.plist b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/fontinfo.plist new file mode 100644 index 000000000..cf6ade99a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/fontinfo.plist @@ -0,0 +1,39 @@ + + + + + ascender + 750 + capHeight + 750 + descender + -250 + guidelines + + postscriptBlueValues + + -10 + 0 + 490 + 500 + + postscriptFamilyBlues + + postscriptFamilyOtherBlues + + postscriptOtherBlues + + postscriptStemSnapH + + 100 + + postscriptStemSnapV + + 100 + + unitsPerEm + 1000 + xHeight + 500 + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist new file mode 100644 index 000000000..53942115c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist @@ -0,0 +1,24 @@ + + + + + no_width-no_height + no_width-no_height.glif + no_width-some_height + no_width-some_height.glif + no_width-zero_height + no_width-zero_height.glif + some_width-no_height + some_width-no_height.glif + some_width-some_height + some_width-some_height.glif + some_width-zero_height + some_width-zero_height.glif + zero_width-no_height + zero_width-no_height.glif + zero_width-some_height + zero_width-some_height.glif + zero_width-zero_height + zero_width-zero_height.glif + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/no_width-no_height.glif b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/no_width-no_height.glif new file mode 100644 index 000000000..75ac6d012 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/no_width-no_height.glif @@ -0,0 +1,32 @@ + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 140 + vstem 0 140 + + + + id + w0l00l1400l140140l0140 + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/no_width-some_height.glif b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/no_width-some_height.glif new file mode 100644 index 000000000..b47633be9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/no_width-some_height.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 140 + vstem 0 140 + + + + id + w0l00l1400l140140l0140 + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/no_width-zero_height.glif b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/no_width-zero_height.glif new file mode 100644 index 000000000..4eff50241 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/no_width-zero_height.glif @@ -0,0 +1,32 @@ + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 140 + vstem 0 140 + + + + id + w0l00l1400l140140l0140 + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/some_width-no_height.glif b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/some_width-no_height.glif new file mode 100644 index 000000000..8fc9dfb2e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/some_width-no_height.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 140 + vstem 0 140 + + + + id + w500l00l1400l140140l0140 + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/some_width-some_height.glif b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/some_width-some_height.glif new file mode 100644 index 000000000..3cf7f7d39 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/some_width-some_height.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 140 + vstem 0 140 + + + + id + w500l00l1400l140140l0140 + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/some_width-zero_height.glif b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/some_width-zero_height.glif new file mode 100644 index 000000000..f050dde6a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/some_width-zero_height.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 140 + vstem 0 140 + + + + id + w500l00l1400l140140l0140 + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/zero_width-no_height.glif b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/zero_width-no_height.glif new file mode 100644 index 000000000..312b23dc6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/zero_width-no_height.glif @@ -0,0 +1,32 @@ + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 140 + vstem 0 140 + + + + id + w0l00l1400l140140l0140 + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/zero_width-some_height.glif b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/zero_width-some_height.glif new file mode 100644 index 000000000..4d2ead5a6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/zero_width-some_height.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 140 + vstem 0 140 + + + + id + w0l00l1400l140140l0140 + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/zero_width-zero_height.glif b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/zero_width-zero_height.glif new file mode 100644 index 000000000..4debb00de --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs.com.adobe.type.processedglyphs/zero_width-zero_height.glif @@ -0,0 +1,32 @@ + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 140 + vstem 0 140 + + + + id + w0l00l1400l140140l0140 + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/contents.plist b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/contents.plist new file mode 100644 index 000000000..95795f0e4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/contents.plist @@ -0,0 +1,24 @@ + + + + + no_width-no_height + no_width-no_height.glif + no_width-some_height + no_width-some_height.glif + no_width-zero_height + no_width-zero_height.glif + some_width-no_height + some_width-no_height.glif + some_width-some_height + some_width-some_height.glif + some_width-zero_height + some_width-zero_height.glif + zero_width-no_height + zero_width-no_height.glif + zero_width-some_height + zero_width-some_height.glif + zero_width-zero_height + zero_width-zero_height.glif + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/no_width-no_height.glif b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/no_width-no_height.glif new file mode 100644 index 000000000..6dafc5d8c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/no_width-no_height.glif @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/no_width-some_height.glif b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/no_width-some_height.glif new file mode 100644 index 000000000..a87451c66 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/no_width-some_height.glif @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/no_width-zero_height.glif b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/no_width-zero_height.glif new file mode 100644 index 000000000..f563b0f9d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/no_width-zero_height.glif @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/some_width-no_height.glif b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/some_width-no_height.glif new file mode 100644 index 000000000..b8e812547 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/some_width-no_height.glif @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/some_width-some_height.glif b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/some_width-some_height.glif new file mode 100644 index 000000000..bbb1c29d9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/some_width-some_height.glif @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/some_width-zero_height.glif b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/some_width-zero_height.glif new file mode 100644 index 000000000..2b38abb7c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/some_width-zero_height.glif @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/zero_width-no_height.glif b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/zero_width-no_height.glif new file mode 100644 index 000000000..c34f53ac4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/zero_width-no_height.glif @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/zero_width-some_height.glif b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/zero_width-some_height.glif new file mode 100644 index 000000000..30598ad9b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/zero_width-some_height.glif @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/zero_width-zero_height.glif b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/zero_width-zero_height.glif new file mode 100644 index 000000000..303520198 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/glyphs/zero_width-zero_height.glif @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/layercontents.plist b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/layercontents.plist new file mode 100644 index 000000000..28d61161d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/layercontents.plist @@ -0,0 +1,14 @@ + + + + + + foreground + glyphs + + + com.adobe.type.processedglyphs + glyphs.com.adobe.type.processedglyphs + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/lib.plist b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/lib.plist new file mode 100644 index 000000000..ba8c15347 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/lib.plist @@ -0,0 +1,18 @@ + + + + + public.glyphOrder + + no_width-no_height + no_width-some_height + no_width-zero_height + some_width-no_height + some_width-some_height + some_width-zero_height + zero_width-no_height + zero_width-some_height + zero_width-zero_height + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/metainfo.plist b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/metainfo.plist new file mode 100644 index 000000000..7b8b34ac6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_advance.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + com.github.fonttools.ufoLib + formatVersion + 3 + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_dflt_layer.ufo/fontinfo.plist b/tests/otfautohint_data/input/dummy/hashmap_dflt_layer.ufo/fontinfo.plist new file mode 100644 index 000000000..cf6ade99a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_dflt_layer.ufo/fontinfo.plist @@ -0,0 +1,39 @@ + + + + + ascender + 750 + capHeight + 750 + descender + -250 + guidelines + + postscriptBlueValues + + -10 + 0 + 490 + 500 + + postscriptFamilyBlues + + postscriptFamilyOtherBlues + + postscriptOtherBlues + + postscriptStemSnapH + + 100 + + postscriptStemSnapV + + 100 + + unitsPerEm + 1000 + xHeight + 500 + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_dflt_layer.ufo/glyphs/a.glif b/tests/otfautohint_data/input/dummy/hashmap_dflt_layer.ufo/glyphs/a.glif new file mode 100644 index 000000000..bafd49304 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_dflt_layer.ufo/glyphs/a.glif @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_dflt_layer.ufo/glyphs/after.glif b/tests/otfautohint_data/input/dummy/hashmap_dflt_layer.ufo/glyphs/after.glif new file mode 100644 index 000000000..8bb4554df --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_dflt_layer.ufo/glyphs/after.glif @@ -0,0 +1,7 @@ + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_dflt_layer.ufo/glyphs/before.glif b/tests/otfautohint_data/input/dummy/hashmap_dflt_layer.ufo/glyphs/before.glif new file mode 100644 index 000000000..1b9334239 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_dflt_layer.ufo/glyphs/before.glif @@ -0,0 +1,7 @@ + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_dflt_layer.ufo/glyphs/contents.plist b/tests/otfautohint_data/input/dummy/hashmap_dflt_layer.ufo/glyphs/contents.plist new file mode 100644 index 000000000..e631fba45 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_dflt_layer.ufo/glyphs/contents.plist @@ -0,0 +1,12 @@ + + + + + a + a.glif + after + after.glif + before + before.glif + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_dflt_layer.ufo/layercontents.plist b/tests/otfautohint_data/input/dummy/hashmap_dflt_layer.ufo/layercontents.plist new file mode 100644 index 000000000..047e1521a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_dflt_layer.ufo/layercontents.plist @@ -0,0 +1,10 @@ + + + + + + foreground + glyphs + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_dflt_layer.ufo/lib.plist b/tests/otfautohint_data/input/dummy/hashmap_dflt_layer.ufo/lib.plist new file mode 100644 index 000000000..e1b835072 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_dflt_layer.ufo/lib.plist @@ -0,0 +1,12 @@ + + + + + public.glyphOrder + + a + before + after + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_dflt_layer.ufo/metainfo.plist b/tests/otfautohint_data/input/dummy/hashmap_dflt_layer.ufo/metainfo.plist new file mode 100644 index 000000000..7b8b34ac6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_dflt_layer.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + com.github.fonttools.ufoLib + formatVersion + 3 + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_glyph_changed.ufo/data/com.adobe.type.processedHashMap b/tests/otfautohint_data/input/dummy/hashmap_glyph_changed.ufo/data/com.adobe.type.processedHashMap new file mode 100644 index 000000000..ceefe9592 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_glyph_changed.ufo/data/com.adobe.type.processedHashMap @@ -0,0 +1,4 @@ +{ +'a': ['cbe04e8e713fe5aae516060eb43d25fc97a3898f6776b7aa66795ccdee099de5471687749ae73d57267be4ae0b4018faa6f079cd99d42d0adc741254d0812377', ['autohint', 'checkOutlines']], +'hashMapVersion': (1, 0), +} diff --git a/tests/otfautohint_data/input/dummy/hashmap_glyph_changed.ufo/fontinfo.plist b/tests/otfautohint_data/input/dummy/hashmap_glyph_changed.ufo/fontinfo.plist new file mode 100644 index 000000000..0a5776c6a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_glyph_changed.ufo/fontinfo.plist @@ -0,0 +1,90 @@ + + + + + ascender + 750 + capHeight + 750 + copyright + Copyright 2010, 2012 Adobe Systems Incorporated. All Rights Reserved. + descender + -250 + familyName + Source Code Pro + postscriptBlueFuzz + 0 + postscriptBlueScale + 0.0625 + postscriptBlueValues + + -12 + 0 + 486 + 498 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyBlues + + -12 + 0 + 486 + 498 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyOtherBlues + + -217 + -205 + + postscriptFontName + SourceCodePro-Regular + postscriptForceBold + + postscriptIsFixedPitch + + postscriptOtherBlues + + -217 + -205 + + postscriptStemSnapH + + 67 + + postscriptStemSnapV + + 85 + + postscriptUnderlinePosition + -100 + postscriptUnderlineThickness + 50 + styleName + Regular + trademark + Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + unitsPerEm + 1000 + versionMajor + 1 + versionMinor + 0 + xHeight + 500 + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_glyph_changed.ufo/glyphs.com.adobe.type.processedglyphs/a.glif b/tests/otfautohint_data/input/dummy/hashmap_glyph_changed.ufo/glyphs.com.adobe.type.processedglyphs/a.glif new file mode 100644 index 000000000..4d52280e9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_glyph_changed.ufo/glyphs.com.adobe.type.processedglyphs/a.glif @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -12 66 + hstem 430 68 + vstem 81 80 + vstem 433 82 + + + + pointTag + hintSet0001 + stems + + hstem -12 66 + hstem 430 68 + vstem 81 80 + vstem 444.5 70.5 + + + + pointTag + hintSet0003 + stems + + hstem 21 -21 + hstem 430 68 + vstem 81 80 + vstem 444.5 70.5 + + + + pointTag + hintSet0004 + stems + + hstem 21 -21 + hstem 430 68 + vstem 81 80 + vstem 433 82 + + + + pointTag + hintSet0012 + stems + + hstem -12 66 + hstem 430 68 + vstem 81 80 + vstem 433 82 + + + + id + cbe04e8e713fe5aae516060eb43d25fc97a3898f6776b7aa66795ccdee099de5471687749ae73d57267be4ae0b4018faa6f079cd99d42d0adc741254d0812377 + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_glyph_changed.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist b/tests/otfautohint_data/input/dummy/hashmap_glyph_changed.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist new file mode 100644 index 000000000..63a44aca7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_glyph_changed.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist @@ -0,0 +1,8 @@ + + + + + a + a.glif + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_glyph_changed.ufo/glyphs/a.glif b/tests/otfautohint_data/input/dummy/hashmap_glyph_changed.ufo/glyphs/a.glif new file mode 100644 index 000000000..7b31b1d5e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_glyph_changed.ufo/glyphs/a.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_glyph_changed.ufo/glyphs/contents.plist b/tests/otfautohint_data/input/dummy/hashmap_glyph_changed.ufo/glyphs/contents.plist new file mode 100644 index 000000000..63a44aca7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_glyph_changed.ufo/glyphs/contents.plist @@ -0,0 +1,8 @@ + + + + + a + a.glif + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_glyph_changed.ufo/layercontents.plist b/tests/otfautohint_data/input/dummy/hashmap_glyph_changed.ufo/layercontents.plist new file mode 100644 index 000000000..b07680883 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_glyph_changed.ufo/layercontents.plist @@ -0,0 +1,14 @@ + + + + + + public.default + glyphs + + + com.adobe.type.processedglyphs + glyphs.com.adobe.type.processedglyphs + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_glyph_changed.ufo/metainfo.plist b/tests/otfautohint_data/input/dummy/hashmap_glyph_changed.ufo/metainfo.plist new file mode 100644 index 000000000..7b8b34ac6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_glyph_changed.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + com.github.fonttools.ufoLib + formatVersion + 3 + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_new_version.ufo/data/com.adobe.type.processedHashMap b/tests/otfautohint_data/input/dummy/hashmap_new_version.ufo/data/com.adobe.type.processedHashMap new file mode 100644 index 000000000..6b3233905 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_new_version.ufo/data/com.adobe.type.processedHashMap @@ -0,0 +1,4 @@ +{ +'a': ['cbe04e8e713fe5aae516060eb43d25fc97a3898f6776b7aa66795ccdee099de5471687749ae73d57267be4ae0b4018faa6f079cd99d42d0adc741254d0812377', ['autohint']], +'hashMapVersion': (9999, 0), +} diff --git a/tests/otfautohint_data/input/dummy/hashmap_new_version.ufo/fontinfo.plist b/tests/otfautohint_data/input/dummy/hashmap_new_version.ufo/fontinfo.plist new file mode 100644 index 000000000..0a5776c6a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_new_version.ufo/fontinfo.plist @@ -0,0 +1,90 @@ + + + + + ascender + 750 + capHeight + 750 + copyright + Copyright 2010, 2012 Adobe Systems Incorporated. All Rights Reserved. + descender + -250 + familyName + Source Code Pro + postscriptBlueFuzz + 0 + postscriptBlueScale + 0.0625 + postscriptBlueValues + + -12 + 0 + 486 + 498 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyBlues + + -12 + 0 + 486 + 498 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyOtherBlues + + -217 + -205 + + postscriptFontName + SourceCodePro-Regular + postscriptForceBold + + postscriptIsFixedPitch + + postscriptOtherBlues + + -217 + -205 + + postscriptStemSnapH + + 67 + + postscriptStemSnapV + + 85 + + postscriptUnderlinePosition + -100 + postscriptUnderlineThickness + 50 + styleName + Regular + trademark + Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + unitsPerEm + 1000 + versionMajor + 1 + versionMinor + 0 + xHeight + 500 + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_new_version.ufo/glyphs.com.adobe.type.processedglyphs/a.glif b/tests/otfautohint_data/input/dummy/hashmap_new_version.ufo/glyphs.com.adobe.type.processedglyphs/a.glif new file mode 100644 index 000000000..4d52280e9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_new_version.ufo/glyphs.com.adobe.type.processedglyphs/a.glif @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -12 66 + hstem 430 68 + vstem 81 80 + vstem 433 82 + + + + pointTag + hintSet0001 + stems + + hstem -12 66 + hstem 430 68 + vstem 81 80 + vstem 444.5 70.5 + + + + pointTag + hintSet0003 + stems + + hstem 21 -21 + hstem 430 68 + vstem 81 80 + vstem 444.5 70.5 + + + + pointTag + hintSet0004 + stems + + hstem 21 -21 + hstem 430 68 + vstem 81 80 + vstem 433 82 + + + + pointTag + hintSet0012 + stems + + hstem -12 66 + hstem 430 68 + vstem 81 80 + vstem 433 82 + + + + id + cbe04e8e713fe5aae516060eb43d25fc97a3898f6776b7aa66795ccdee099de5471687749ae73d57267be4ae0b4018faa6f079cd99d42d0adc741254d0812377 + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_new_version.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist b/tests/otfautohint_data/input/dummy/hashmap_new_version.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist new file mode 100644 index 000000000..63a44aca7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_new_version.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist @@ -0,0 +1,8 @@ + + + + + a + a.glif + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_new_version.ufo/glyphs/a.glif b/tests/otfautohint_data/input/dummy/hashmap_new_version.ufo/glyphs/a.glif new file mode 100644 index 000000000..88d46ad0c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_new_version.ufo/glyphs/a.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/hashmap_new_version.ufo/glyphs/contents.plist b/tests/otfautohint_data/input/dummy/hashmap_new_version.ufo/glyphs/contents.plist new file mode 100644 index 000000000..63a44aca7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_new_version.ufo/glyphs/contents.plist @@ -0,0 +1,8 @@ + + + + + a + a.glif + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_new_version.ufo/layercontents.plist b/tests/otfautohint_data/input/dummy/hashmap_new_version.ufo/layercontents.plist new file mode 100644 index 000000000..b07680883 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_new_version.ufo/layercontents.plist @@ -0,0 +1,14 @@ + + + + + + public.default + glyphs + + + com.adobe.type.processedglyphs + glyphs.com.adobe.type.processedglyphs + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_new_version.ufo/metainfo.plist b/tests/otfautohint_data/input/dummy/hashmap_new_version.ufo/metainfo.plist new file mode 100644 index 000000000..7b8b34ac6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_new_version.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + com.github.fonttools.ufoLib + formatVersion + 3 + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_no_version.ufo/data/com.adobe.type.processedHashMap b/tests/otfautohint_data/input/dummy/hashmap_no_version.ufo/data/com.adobe.type.processedHashMap new file mode 100644 index 000000000..272c0a94f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_no_version.ufo/data/com.adobe.type.processedHashMap @@ -0,0 +1,3 @@ +{ +'a': ['cbe04e8e713fe5aae516060eb43d25fc97a3898f6776b7aa66795ccdee099de5471687749ae73d57267be4ae0b4018faa6f079cd99d42d0adc741254d0812377', ['autohint']], +} diff --git a/tests/otfautohint_data/input/dummy/hashmap_no_version.ufo/fontinfo.plist b/tests/otfautohint_data/input/dummy/hashmap_no_version.ufo/fontinfo.plist new file mode 100644 index 000000000..0a5776c6a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_no_version.ufo/fontinfo.plist @@ -0,0 +1,90 @@ + + + + + ascender + 750 + capHeight + 750 + copyright + Copyright 2010, 2012 Adobe Systems Incorporated. All Rights Reserved. + descender + -250 + familyName + Source Code Pro + postscriptBlueFuzz + 0 + postscriptBlueScale + 0.0625 + postscriptBlueValues + + -12 + 0 + 486 + 498 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyBlues + + -12 + 0 + 486 + 498 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyOtherBlues + + -217 + -205 + + postscriptFontName + SourceCodePro-Regular + postscriptForceBold + + postscriptIsFixedPitch + + postscriptOtherBlues + + -217 + -205 + + postscriptStemSnapH + + 67 + + postscriptStemSnapV + + 85 + + postscriptUnderlinePosition + -100 + postscriptUnderlineThickness + 50 + styleName + Regular + trademark + Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + unitsPerEm + 1000 + versionMajor + 1 + versionMinor + 0 + xHeight + 500 + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_no_version.ufo/glyphs.com.adobe.type.processedglyphs/a.glif b/tests/otfautohint_data/input/dummy/hashmap_no_version.ufo/glyphs.com.adobe.type.processedglyphs/a.glif new file mode 100644 index 000000000..4d52280e9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_no_version.ufo/glyphs.com.adobe.type.processedglyphs/a.glif @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -12 66 + hstem 430 68 + vstem 81 80 + vstem 433 82 + + + + pointTag + hintSet0001 + stems + + hstem -12 66 + hstem 430 68 + vstem 81 80 + vstem 444.5 70.5 + + + + pointTag + hintSet0003 + stems + + hstem 21 -21 + hstem 430 68 + vstem 81 80 + vstem 444.5 70.5 + + + + pointTag + hintSet0004 + stems + + hstem 21 -21 + hstem 430 68 + vstem 81 80 + vstem 433 82 + + + + pointTag + hintSet0012 + stems + + hstem -12 66 + hstem 430 68 + vstem 81 80 + vstem 433 82 + + + + id + cbe04e8e713fe5aae516060eb43d25fc97a3898f6776b7aa66795ccdee099de5471687749ae73d57267be4ae0b4018faa6f079cd99d42d0adc741254d0812377 + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_no_version.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist b/tests/otfautohint_data/input/dummy/hashmap_no_version.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist new file mode 100644 index 000000000..63a44aca7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_no_version.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist @@ -0,0 +1,8 @@ + + + + + a + a.glif + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_no_version.ufo/glyphs/a.glif b/tests/otfautohint_data/input/dummy/hashmap_no_version.ufo/glyphs/a.glif new file mode 100644 index 000000000..88d46ad0c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_no_version.ufo/glyphs/a.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/hashmap_no_version.ufo/glyphs/contents.plist b/tests/otfautohint_data/input/dummy/hashmap_no_version.ufo/glyphs/contents.plist new file mode 100644 index 000000000..63a44aca7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_no_version.ufo/glyphs/contents.plist @@ -0,0 +1,8 @@ + + + + + a + a.glif + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_no_version.ufo/layercontents.plist b/tests/otfautohint_data/input/dummy/hashmap_no_version.ufo/layercontents.plist new file mode 100644 index 000000000..b07680883 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_no_version.ufo/layercontents.plist @@ -0,0 +1,14 @@ + + + + + + public.default + glyphs + + + com.adobe.type.processedglyphs + glyphs.com.adobe.type.processedglyphs + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_no_version.ufo/metainfo.plist b/tests/otfautohint_data/input/dummy/hashmap_no_version.ufo/metainfo.plist new file mode 100644 index 000000000..7b8b34ac6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_no_version.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + com.github.fonttools.ufoLib + formatVersion + 3 + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_old_version.ufo/data/com.adobe.type.processedHashMap b/tests/otfautohint_data/input/dummy/hashmap_old_version.ufo/data/com.adobe.type.processedHashMap new file mode 100644 index 000000000..a8265d1a0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_old_version.ufo/data/com.adobe.type.processedHashMap @@ -0,0 +1,4 @@ +{ +'a': ['cbe04e8e713fe5aae516060eb43d25fc97a3898f6776b7aa66795ccdee099de5471687749ae73d57267be4ae0b4018faa6f079cd99d42d0adc741254d0812377', ['autohint']], +'hashMapVersion': (0, 0), +} diff --git a/tests/otfautohint_data/input/dummy/hashmap_old_version.ufo/fontinfo.plist b/tests/otfautohint_data/input/dummy/hashmap_old_version.ufo/fontinfo.plist new file mode 100644 index 000000000..0a5776c6a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_old_version.ufo/fontinfo.plist @@ -0,0 +1,90 @@ + + + + + ascender + 750 + capHeight + 750 + copyright + Copyright 2010, 2012 Adobe Systems Incorporated. All Rights Reserved. + descender + -250 + familyName + Source Code Pro + postscriptBlueFuzz + 0 + postscriptBlueScale + 0.0625 + postscriptBlueValues + + -12 + 0 + 486 + 498 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyBlues + + -12 + 0 + 486 + 498 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyOtherBlues + + -217 + -205 + + postscriptFontName + SourceCodePro-Regular + postscriptForceBold + + postscriptIsFixedPitch + + postscriptOtherBlues + + -217 + -205 + + postscriptStemSnapH + + 67 + + postscriptStemSnapV + + 85 + + postscriptUnderlinePosition + -100 + postscriptUnderlineThickness + 50 + styleName + Regular + trademark + Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + unitsPerEm + 1000 + versionMajor + 1 + versionMinor + 0 + xHeight + 500 + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_old_version.ufo/glyphs.com.adobe.type.processedglyphs/a.glif b/tests/otfautohint_data/input/dummy/hashmap_old_version.ufo/glyphs.com.adobe.type.processedglyphs/a.glif new file mode 100644 index 000000000..4d52280e9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_old_version.ufo/glyphs.com.adobe.type.processedglyphs/a.glif @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -12 66 + hstem 430 68 + vstem 81 80 + vstem 433 82 + + + + pointTag + hintSet0001 + stems + + hstem -12 66 + hstem 430 68 + vstem 81 80 + vstem 444.5 70.5 + + + + pointTag + hintSet0003 + stems + + hstem 21 -21 + hstem 430 68 + vstem 81 80 + vstem 444.5 70.5 + + + + pointTag + hintSet0004 + stems + + hstem 21 -21 + hstem 430 68 + vstem 81 80 + vstem 433 82 + + + + pointTag + hintSet0012 + stems + + hstem -12 66 + hstem 430 68 + vstem 81 80 + vstem 433 82 + + + + id + cbe04e8e713fe5aae516060eb43d25fc97a3898f6776b7aa66795ccdee099de5471687749ae73d57267be4ae0b4018faa6f079cd99d42d0adc741254d0812377 + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_old_version.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist b/tests/otfautohint_data/input/dummy/hashmap_old_version.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist new file mode 100644 index 000000000..63a44aca7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_old_version.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist @@ -0,0 +1,8 @@ + + + + + a + a.glif + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_old_version.ufo/glyphs/a.glif b/tests/otfautohint_data/input/dummy/hashmap_old_version.ufo/glyphs/a.glif new file mode 100644 index 000000000..88d46ad0c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_old_version.ufo/glyphs/a.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/hashmap_old_version.ufo/glyphs/contents.plist b/tests/otfautohint_data/input/dummy/hashmap_old_version.ufo/glyphs/contents.plist new file mode 100644 index 000000000..63a44aca7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_old_version.ufo/glyphs/contents.plist @@ -0,0 +1,8 @@ + + + + + a + a.glif + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_old_version.ufo/layercontents.plist b/tests/otfautohint_data/input/dummy/hashmap_old_version.ufo/layercontents.plist new file mode 100644 index 000000000..b07680883 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_old_version.ufo/layercontents.plist @@ -0,0 +1,14 @@ + + + + + + public.default + glyphs + + + com.adobe.type.processedglyphs + glyphs.com.adobe.type.processedglyphs + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_old_version.ufo/metainfo.plist b/tests/otfautohint_data/input/dummy/hashmap_old_version.ufo/metainfo.plist new file mode 100644 index 000000000..7b8b34ac6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_old_version.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + com.github.fonttools.ufoLib + formatVersion + 3 + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_processed_no_autohint.ufo/data/com.adobe.type.processedHashMap b/tests/otfautohint_data/input/dummy/hashmap_processed_no_autohint.ufo/data/com.adobe.type.processedHashMap new file mode 100644 index 000000000..54faa2a23 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_processed_no_autohint.ufo/data/com.adobe.type.processedHashMap @@ -0,0 +1,4 @@ +{ +'a': ['cbe04e8e713fe5aae516060eb43d25fc97a3898f6776b7aa66795ccdee099de5471687749ae73d57267be4ae0b4018faa6f079cd99d42d0adc741254d0812377', ['checkOutlines']], +'hashMapVersion': (1, 0), +} diff --git a/tests/otfautohint_data/input/dummy/hashmap_processed_no_autohint.ufo/fontinfo.plist b/tests/otfautohint_data/input/dummy/hashmap_processed_no_autohint.ufo/fontinfo.plist new file mode 100644 index 000000000..0a5776c6a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_processed_no_autohint.ufo/fontinfo.plist @@ -0,0 +1,90 @@ + + + + + ascender + 750 + capHeight + 750 + copyright + Copyright 2010, 2012 Adobe Systems Incorporated. All Rights Reserved. + descender + -250 + familyName + Source Code Pro + postscriptBlueFuzz + 0 + postscriptBlueScale + 0.0625 + postscriptBlueValues + + -12 + 0 + 486 + 498 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyBlues + + -12 + 0 + 486 + 498 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyOtherBlues + + -217 + -205 + + postscriptFontName + SourceCodePro-Regular + postscriptForceBold + + postscriptIsFixedPitch + + postscriptOtherBlues + + -217 + -205 + + postscriptStemSnapH + + 67 + + postscriptStemSnapV + + 85 + + postscriptUnderlinePosition + -100 + postscriptUnderlineThickness + 50 + styleName + Regular + trademark + Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + unitsPerEm + 1000 + versionMajor + 1 + versionMinor + 0 + xHeight + 500 + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_processed_no_autohint.ufo/glyphs.com.adobe.type.processedglyphs/a.glif b/tests/otfautohint_data/input/dummy/hashmap_processed_no_autohint.ufo/glyphs.com.adobe.type.processedglyphs/a.glif new file mode 100644 index 000000000..4d52280e9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_processed_no_autohint.ufo/glyphs.com.adobe.type.processedglyphs/a.glif @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintSet0000 + stems + + hstem -12 66 + hstem 430 68 + vstem 81 80 + vstem 433 82 + + + + pointTag + hintSet0001 + stems + + hstem -12 66 + hstem 430 68 + vstem 81 80 + vstem 444.5 70.5 + + + + pointTag + hintSet0003 + stems + + hstem 21 -21 + hstem 430 68 + vstem 81 80 + vstem 444.5 70.5 + + + + pointTag + hintSet0004 + stems + + hstem 21 -21 + hstem 430 68 + vstem 81 80 + vstem 433 82 + + + + pointTag + hintSet0012 + stems + + hstem -12 66 + hstem 430 68 + vstem 81 80 + vstem 433 82 + + + + id + cbe04e8e713fe5aae516060eb43d25fc97a3898f6776b7aa66795ccdee099de5471687749ae73d57267be4ae0b4018faa6f079cd99d42d0adc741254d0812377 + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_processed_no_autohint.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist b/tests/otfautohint_data/input/dummy/hashmap_processed_no_autohint.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist new file mode 100644 index 000000000..63a44aca7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_processed_no_autohint.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist @@ -0,0 +1,8 @@ + + + + + a + a.glif + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_processed_no_autohint.ufo/glyphs/a.glif b/tests/otfautohint_data/input/dummy/hashmap_processed_no_autohint.ufo/glyphs/a.glif new file mode 100644 index 000000000..88d46ad0c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_processed_no_autohint.ufo/glyphs/a.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/hashmap_processed_no_autohint.ufo/glyphs/contents.plist b/tests/otfautohint_data/input/dummy/hashmap_processed_no_autohint.ufo/glyphs/contents.plist new file mode 100644 index 000000000..63a44aca7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_processed_no_autohint.ufo/glyphs/contents.plist @@ -0,0 +1,8 @@ + + + + + a + a.glif + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_processed_no_autohint.ufo/layercontents.plist b/tests/otfautohint_data/input/dummy/hashmap_processed_no_autohint.ufo/layercontents.plist new file mode 100644 index 000000000..b07680883 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_processed_no_autohint.ufo/layercontents.plist @@ -0,0 +1,14 @@ + + + + + + public.default + glyphs + + + com.adobe.type.processedglyphs + glyphs.com.adobe.type.processedglyphs + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_processed_no_autohint.ufo/metainfo.plist b/tests/otfautohint_data/input/dummy/hashmap_processed_no_autohint.ufo/metainfo.plist new file mode 100644 index 000000000..7b8b34ac6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_processed_no_autohint.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + com.github.fonttools.ufoLib + formatVersion + 3 + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/data/com.adobe.type.processedHashMap b/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/data/com.adobe.type.processedHashMap new file mode 100644 index 000000000..bfe4abce7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/data/com.adobe.type.processedHashMap @@ -0,0 +1,6 @@ +{ +'a': ['w500l00l1400l140140l0140', ['autohint']], +'after': ['w500base:a10012000w500l00l1400l140140l0140', ['autohint']], +'before': ['w500base:a10010200w500l00l1400l140140l0140', ['autohint']], +'hashMapVersion': (1, 0), +} diff --git a/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/fontinfo.plist b/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/fontinfo.plist new file mode 100644 index 000000000..cf6ade99a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/fontinfo.plist @@ -0,0 +1,39 @@ + + + + + ascender + 750 + capHeight + 750 + descender + -250 + guidelines + + postscriptBlueValues + + -10 + 0 + 490 + 500 + + postscriptFamilyBlues + + postscriptFamilyOtherBlues + + postscriptOtherBlues + + postscriptStemSnapH + + 100 + + postscriptStemSnapV + + 100 + + unitsPerEm + 1000 + xHeight + 500 + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/glyphs.com.adobe.type.processedglyphs/a.glif b/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/glyphs.com.adobe.type.processedglyphs/a.glif new file mode 100644 index 000000000..04be506b6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/glyphs.com.adobe.type.processedglyphs/a.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 140 + vstem 0 140 + + + + id + w500l00l1400l140140l0140 + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/glyphs.com.adobe.type.processedglyphs/after.glif b/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/glyphs.com.adobe.type.processedglyphs/after.glif new file mode 100644 index 000000000..30bd550be --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/glyphs.com.adobe.type.processedglyphs/after.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 0 140 + vstem 200 140 + + + + id + w500l2000l3400l340140l200140 + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/glyphs.com.adobe.type.processedglyphs/before.glif b/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/glyphs.com.adobe.type.processedglyphs/before.glif new file mode 100644 index 000000000..9892229cd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/glyphs.com.adobe.type.processedglyphs/before.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 200 140 + vstem 0 140 + + + + id + w500l0200l140200l140340l0340 + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist b/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist new file mode 100644 index 000000000..e631fba45 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist @@ -0,0 +1,12 @@ + + + + + a + a.glif + after + after.glif + before + before.glif + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/glyphs/a.glif b/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/glyphs/a.glif new file mode 100644 index 000000000..bafd49304 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/glyphs/a.glif @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/glyphs/after.glif b/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/glyphs/after.glif new file mode 100644 index 000000000..8bb4554df --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/glyphs/after.glif @@ -0,0 +1,7 @@ + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/glyphs/before.glif b/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/glyphs/before.glif new file mode 100644 index 000000000..1b9334239 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/glyphs/before.glif @@ -0,0 +1,7 @@ + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/glyphs/contents.plist b/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/glyphs/contents.plist new file mode 100644 index 000000000..e631fba45 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/glyphs/contents.plist @@ -0,0 +1,12 @@ + + + + + a + a.glif + after + after.glif + before + before.glif + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/layercontents.plist b/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/layercontents.plist new file mode 100644 index 000000000..28d61161d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/layercontents.plist @@ -0,0 +1,14 @@ + + + + + + foreground + glyphs + + + com.adobe.type.processedglyphs + glyphs.com.adobe.type.processedglyphs + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/lib.plist b/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/lib.plist new file mode 100644 index 000000000..e1b835072 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/lib.plist @@ -0,0 +1,12 @@ + + + + + public.glyphOrder + + a + before + after + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/metainfo.plist b/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/metainfo.plist new file mode 100644 index 000000000..7b8b34ac6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_transform.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + com.github.fonttools.ufoLib + formatVersion + 3 + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/data/com.adobe.type.processedHashMap b/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/data/com.adobe.type.processedHashMap new file mode 100644 index 000000000..101663ce2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/data/com.adobe.type.processedHashMap @@ -0,0 +1,5 @@ +{ +'exclam': ['w235l99398l102119l140119l143398l121-7l15425l12157l8825', ['autohint']], +'exclamdown': ['w196base:exclam-100-1229480w196l99398l102119l140119l143398l121-7l15425l12157l8825', ['autohint']], +'hashMapVersion': (1, 0), +} diff --git a/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/fontinfo.plist b/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/fontinfo.plist new file mode 100644 index 000000000..69c388f2a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/fontinfo.plist @@ -0,0 +1,90 @@ + + + + + ascender + 718 + capHeight + 661 + descender + -235 + familyName + Flipped Glyph + guidelines + + italicAngle + 0 + postscriptBlueFuzz + 0 + postscriptBlueScale + 0.075 + postscriptBlueValues + + -10 + 0 + 479 + 489 + 515 + 525 + 563 + 573 + 638 + 648 + 661 + 671 + 718 + 728 + + postscriptFamilyBlues + + -10 + 0 + 486 + 496 + 520 + 530 + 567 + 577 + 637 + 647 + 661 + 671 + 717 + 727 + + postscriptFamilyOtherBlues + + -236 + -226 + + postscriptFontName + FlippedGlyph + postscriptOtherBlues + + -243 + -233 + + postscriptStemSnapH + + 43 + + postscriptStemSnapV + + 47 + + postscriptUnderlinePosition + -75 + postscriptUnderlineThickness + 50 + styleName + Light + unitsPerEm + 1000 + versionMajor + 6 + versionMinor + 0 + xHeight + 479 + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist b/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist new file mode 100644 index 000000000..37d3dd58b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist @@ -0,0 +1,10 @@ + + + + + exclam + exclam.glif + exclamdown + exclamdown.glif + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/glyphs.com.adobe.type.processedglyphs/exclam.glif b/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/glyphs.com.adobe.type.processedglyphs/exclam.glif new file mode 100644 index 000000000..a30614364 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/glyphs.com.adobe.type.processedglyphs/exclam.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 14 -21 + vstem 100.5 41 + + + + id + w235l99398l102119l140119l143398l121-7l15425l12157l8825 + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/glyphs.com.adobe.type.processedglyphs/exclamdown.glif b/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/glyphs.com.adobe.type.processedglyphs/exclamdown.glif new file mode 100644 index 000000000..4f2fc2141 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/glyphs.com.adobe.type.processedglyphs/exclamdown.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 487 -20 + vstem 87.5 41 + + + + id + w196l13082l127361l89361l8682l108487l75455l108423l141455 + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/glyphs/contents.plist b/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/glyphs/contents.plist new file mode 100644 index 000000000..37d3dd58b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/glyphs/contents.plist @@ -0,0 +1,10 @@ + + + + + exclam + exclam.glif + exclamdown + exclamdown.glif + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/glyphs/exclam.glif b/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/glyphs/exclam.glif new file mode 100644 index 000000000..2b0ee28d1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/glyphs/exclam.glif @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/glyphs/exclamdown.glif b/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/glyphs/exclamdown.glif new file mode 100644 index 000000000..681e94ff4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/glyphs/exclamdown.glif @@ -0,0 +1,7 @@ + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/layercontents.plist b/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/layercontents.plist new file mode 100644 index 000000000..b07680883 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/layercontents.plist @@ -0,0 +1,14 @@ + + + + + + public.default + glyphs + + + com.adobe.type.processedglyphs + glyphs.com.adobe.type.processedglyphs + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/lib.plist b/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/lib.plist new file mode 100644 index 000000000..707976b2b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/lib.plist @@ -0,0 +1,11 @@ + + + + + public.glyphOrder + + exclam + exclamdown + + + diff --git a/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/metainfo.plist b/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/metainfo.plist new file mode 100644 index 000000000..7b8b34ac6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/hashmap_unnormalized_floats.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + com.github.fonttools.ufoLib + formatVersion + 3 + + diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/fontinfo.plist b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/fontinfo.plist new file mode 100644 index 000000000..0a5776c6a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/fontinfo.plist @@ -0,0 +1,90 @@ + + + + + ascender + 750 + capHeight + 750 + copyright + Copyright 2010, 2012 Adobe Systems Incorporated. All Rights Reserved. + descender + -250 + familyName + Source Code Pro + postscriptBlueFuzz + 0 + postscriptBlueScale + 0.0625 + postscriptBlueValues + + -12 + 0 + 486 + 498 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyBlues + + -12 + 0 + 486 + 498 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyOtherBlues + + -217 + -205 + + postscriptFontName + SourceCodePro-Regular + postscriptForceBold + + postscriptIsFixedPitch + + postscriptOtherBlues + + -217 + -205 + + postscriptStemSnapH + + 67 + + postscriptStemSnapV + + 85 + + postscriptUnderlinePosition + -100 + postscriptUnderlineThickness + 50 + styleName + Regular + trademark + Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + unitsPerEm + 1000 + versionMajor + 1 + versionMinor + 0 + xHeight + 500 + + diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/A_.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/A_.glif new file mode 100644 index 000000000..131a04666 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/A_.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/B_.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/B_.glif new file mode 100644 index 000000000..63ae21bfe --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/B_.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/C_.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/C_.glif new file mode 100644 index 000000000..285c27dae --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/C_.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/D_.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/D_.glif new file mode 100644 index 000000000..496efc3c9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/D_.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/E_.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/E_.glif new file mode 100644 index 000000000..44de74df2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/E_.glif @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/F_.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/F_.glif new file mode 100644 index 000000000..caa907c99 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/F_.glif @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/G_.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/G_.glif new file mode 100644 index 000000000..10665f436 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/G_.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/H_.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/H_.glif new file mode 100644 index 000000000..35eeebb40 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/H_.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/I_.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/I_.glif new file mode 100644 index 000000000..c9b6aa737 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/I_.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/J_.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/J_.glif new file mode 100644 index 000000000..40da602b7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/J_.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/K_.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/K_.glif new file mode 100644 index 000000000..9e87165b1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/K_.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/L_.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/L_.glif new file mode 100644 index 000000000..3e9824ebf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/L_.glif @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/M_.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/M_.glif new file mode 100644 index 000000000..253362028 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/M_.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/N_.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/N_.glif new file mode 100644 index 000000000..4e26932ff --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/N_.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/O_.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/O_.glif new file mode 100644 index 000000000..195301376 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/O_.glif @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/P_.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/P_.glif new file mode 100644 index 000000000..bd83befe3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/P_.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/Q_.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/Q_.glif new file mode 100644 index 000000000..1348f9eac --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/Q_.glif @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/R_.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/R_.glif new file mode 100644 index 000000000..b6f5dc817 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/R_.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/S_.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/S_.glif new file mode 100644 index 000000000..b8c374161 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/S_.glif @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/T_.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/T_.glif new file mode 100644 index 000000000..e8a64557d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/T_.glif @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/U_.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/U_.glif new file mode 100644 index 000000000..7832e0f1f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/U_.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/V_.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/V_.glif new file mode 100644 index 000000000..f758039f5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/V_.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/W_.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/W_.glif new file mode 100644 index 000000000..0226eda2b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/W_.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/X_.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/X_.glif new file mode 100644 index 000000000..d230679ec --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/X_.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/Y_.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/Y_.glif new file mode 100644 index 000000000..cbfee2948 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/Y_.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/Z_.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/Z_.glif new file mode 100644 index 000000000..165a5d08a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/Z_.glif @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/a.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/a.glif new file mode 100644 index 000000000..88d46ad0c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/a.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/ampersand.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/ampersand.glif new file mode 100644 index 000000000..0065ab7c8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/ampersand.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/asciicircum.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/asciicircum.glif new file mode 100644 index 000000000..09d47bb82 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/asciicircum.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/asciitilde.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/asciitilde.glif new file mode 100644 index 000000000..38c23961f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/asciitilde.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/asterisk.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/asterisk.glif new file mode 100644 index 000000000..198512128 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/asterisk.glif @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/at.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/at.glif new file mode 100644 index 000000000..b34a2ef28 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/at.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/b.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/b.glif new file mode 100644 index 000000000..26c097f91 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/b.glif @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/backslash.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/backslash.glif new file mode 100644 index 000000000..caf45cdba --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/backslash.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/bar.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/bar.glif new file mode 100644 index 000000000..58ec42ad1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/bar.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/braceleft.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/braceleft.glif new file mode 100644 index 000000000..853d9763d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/braceleft.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/braceright.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/braceright.glif new file mode 100644 index 000000000..1860343a3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/braceright.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/bracketleft.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/bracketleft.glif new file mode 100644 index 000000000..885fb01da --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/bracketleft.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/bracketright.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/bracketright.glif new file mode 100644 index 000000000..60d5f82cf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/bracketright.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/c.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/c.glif new file mode 100644 index 000000000..49a862d07 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/c.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/colon.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/colon.glif new file mode 100644 index 000000000..a5adeab65 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/colon.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/comma.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/comma.glif new file mode 100644 index 000000000..8ef16fe3d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/comma.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/contents.plist b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/contents.plist new file mode 100644 index 000000000..5ea2011fa --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/contents.plist @@ -0,0 +1,196 @@ + + + + + A + A_.glif + B + B_.glif + C + C_.glif + D + D_.glif + E + E_.glif + F + F_.glif + G + G_.glif + H + H_.glif + I + I_.glif + J + J_.glif + K + K_.glif + L + L_.glif + M + M_.glif + N + N_.glif + O + O_.glif + P + P_.glif + Q + Q_.glif + R + R_.glif + S + S_.glif + T + T_.glif + U + U_.glif + V + V_.glif + W + W_.glif + X + X_.glif + Y + Y_.glif + Z + Z_.glif + a + a.glif + ampersand + ampersand.glif + asciicircum + asciicircum.glif + asciitilde + asciitilde.glif + asterisk + asterisk.glif + at + at.glif + b + b.glif + backslash + backslash.glif + bar + bar.glif + braceleft + braceleft.glif + braceright + braceright.glif + bracketleft + bracketleft.glif + bracketright + bracketright.glif + c + c.glif + colon + colon.glif + comma + comma.glif + d + d.glif + dollar + dollar.glif + e + e.glif + eight + eight.glif + equal + equal.glif + exclam + exclam.glif + f + f.glif + five + five.glif + four + four.glif + g + g.glif + grave + grave.glif + greater + greater.glif + h + h.glif + hyphen + hyphen.glif + i + i.glif + j + j.glif + k + k.glif + l + l.glif + less + less.glif + m + m.glif + n + n.glif + nine + nine.glif + numbersign + numbersign.glif + o + o.glif + one + one.glif + p + p.glif + parenleft + parenleft.glif + parenright + parenright.glif + percent + percent.glif + period + period.glif + plus + plus.glif + q + q.glif + question + question.glif + quotedbl + quotedbl.glif + quotesingle + quotesingle.glif + r + r.glif + s + s.glif + semicolon + semicolon.glif + seven + seven.glif + six + six.glif + slash + slash.glif + space + space.glif + t + t.glif + three + three.glif + two + two.glif + u + u.glif + underscore + underscore.glif + v + v.glif + w + w.glif + x + x.glif + y + y.glif + z + z.glif + zero + zero.glif + + diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/d.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/d.glif new file mode 100644 index 000000000..ca1afa0ca --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/d.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/dollar.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/dollar.glif new file mode 100644 index 000000000..4300b9896 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/dollar.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/e.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/e.glif new file mode 100644 index 000000000..2b941dda4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/e.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/eight.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/eight.glif new file mode 100644 index 000000000..8fea2aa5e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/eight.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/equal.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/equal.glif new file mode 100644 index 000000000..fa58df725 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/equal.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/exclam.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/exclam.glif new file mode 100644 index 000000000..4fd4aefac --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/exclam.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/f.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/f.glif new file mode 100644 index 000000000..180ffa321 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/f.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/five.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/five.glif new file mode 100644 index 000000000..3db6a91a9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/five.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/four.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/four.glif new file mode 100644 index 000000000..f03f64fee --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/four.glif @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/g.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/g.glif new file mode 100644 index 000000000..07159cf2e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/g.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/grave.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/grave.glif new file mode 100644 index 000000000..8a318f41b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/grave.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/greater.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/greater.glif new file mode 100644 index 000000000..4454c2b79 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/greater.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/h.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/h.glif new file mode 100644 index 000000000..1aa027c58 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/h.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/hyphen.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/hyphen.glif new file mode 100644 index 000000000..2dd03f5bd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/hyphen.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/i.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/i.glif new file mode 100644 index 000000000..875d511c6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/i.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/j.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/j.glif new file mode 100644 index 000000000..82c80d8d7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/j.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/k.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/k.glif new file mode 100644 index 000000000..884f5d1b3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/k.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/l.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/l.glif new file mode 100644 index 000000000..f3e557678 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/l.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/less.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/less.glif new file mode 100644 index 000000000..122d5a31f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/less.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/m.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/m.glif new file mode 100644 index 000000000..1eb7f42ac --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/m.glif @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/n.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/n.glif new file mode 100644 index 000000000..85c90ce15 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/n.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/nine.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/nine.glif new file mode 100644 index 000000000..7623e3fa8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/nine.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/numbersign.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/numbersign.glif new file mode 100644 index 000000000..cfd71bd73 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/numbersign.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/o.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/o.glif new file mode 100644 index 000000000..44e8ffb99 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/o.glif @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/one.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/one.glif new file mode 100644 index 000000000..ae5e339fa --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/one.glif @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/p.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/p.glif new file mode 100644 index 000000000..329ba2ff6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/p.glif @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/parenleft.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/parenleft.glif new file mode 100644 index 000000000..dffcf7662 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/parenleft.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/parenright.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/parenright.glif new file mode 100644 index 000000000..ac776a10d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/parenright.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/percent.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/percent.glif new file mode 100644 index 000000000..db147e294 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/percent.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/period.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/period.glif new file mode 100644 index 000000000..cdb94ddd5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/period.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/plus.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/plus.glif new file mode 100644 index 000000000..c22794750 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/plus.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/q.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/q.glif new file mode 100644 index 000000000..8825e5f4f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/q.glif @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/question.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/question.glif new file mode 100644 index 000000000..e2866814e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/question.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/quotedbl.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/quotedbl.glif new file mode 100644 index 000000000..23cf4427f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/quotedbl.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/quotesingle.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/quotesingle.glif new file mode 100644 index 000000000..edd773e83 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/quotesingle.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/r.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/r.glif new file mode 100644 index 000000000..734bd8dd6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/r.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/s.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/s.glif new file mode 100644 index 000000000..e0b42d852 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/s.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/semicolon.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/semicolon.glif new file mode 100644 index 000000000..b54824e30 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/semicolon.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/seven.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/seven.glif new file mode 100644 index 000000000..a3c91ff01 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/seven.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/six.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/six.glif new file mode 100644 index 000000000..de56ad996 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/six.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/slash.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/slash.glif new file mode 100644 index 000000000..ab034abb2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/slash.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/space.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/space.glif new file mode 100644 index 000000000..9a1384257 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/space.glif @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/t.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/t.glif new file mode 100644 index 000000000..970adeda7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/t.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/three.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/three.glif new file mode 100644 index 000000000..bfe5f13b3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/three.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/two.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/two.glif new file mode 100644 index 000000000..f4acf43d7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/two.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/u.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/u.glif new file mode 100644 index 000000000..b06ef5351 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/u.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/underscore.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/underscore.glif new file mode 100644 index 000000000..bce851ae7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/underscore.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/v.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/v.glif new file mode 100644 index 000000000..548ba6766 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/v.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/w.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/w.glif new file mode 100644 index 000000000..a8e0bfb18 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/w.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/x.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/x.glif new file mode 100644 index 000000000..d51fe8dee --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/x.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/y.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/y.glif new file mode 100644 index 000000000..e5b2f9ff0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/y.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/z.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/z.glif new file mode 100644 index 000000000..ba25d5504 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/z.glif @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/zero.glif b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/zero.glif new file mode 100644 index 000000000..d95247867 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/glyphs/zero.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/groups.plist b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/groups.plist new file mode 100644 index 000000000..c96917c95 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/groups.plist @@ -0,0 +1,122 @@ + + + + + COMBINING_MARKS + + gravecmb + gravecmb.cap + variacmb + acutecmb + acutecmb.cap + tonoscmb + circumflexcmb + circumflexcmb.cap + tildecmb + tildecmb.cap + macroncmb + macroncmb.cap + overlinecmb + overlinecmb.cap + brevecmb + brevecmb.cyr + brevecmb.cap + brevecmb.cyrcap + dotaccentcmb + dotaccentcmb.cap + dieresiscmb + dieresiscmb.cap + hoicmb + hoicmb.cap + candrabinducmb + candrabinducmb.cap + ringcmb + ringcmb.cap + hungarumlautcmb + hungarumlautcmb.cap + caroncmb + caroncmb.cap + dblgravecmb + dblgravecmb.cap + breveinvertedcmb + breveinvertedcmb.cap + commaturnedabovecmb + aspercmb + commaabovecmb + leniscmb + lefttackbelowcmb + righttackbelowcmb + leftangleabovecmb + horncmb + ringhalfleftbelowcmb + uptackbelowcmb + downtackbelowcmb + plusbelowcmb + minusbelowcmb + dotbelowcmb + dieresisbelowcmb + ringbelowcmb + commabelowcmb + commabelowcmb.a + cedillacmb + cedillacmb.cap + ogonekcmb + ogonekcmb.cap + verticallinebelowcmb + bridgebelowcmb + caronbelowcmb + brevebelowcmb + breveinvertedbelowcmb + tildebelowcmb + macronbelowcmb + tildeoverlaycmb + ringhalfrightbelowcmb + bridgeinvertedbelowcmb + squarebelowcmb + seagullbelowcmb + xabovecmb + perispomenicmb + perispomenicmb.cap + iotasubscriptcmb + dieresisacutecmb + dieresisacutecmb.cap + dieresistonoscmb + dieresisgravecmb + dieresisgravecmb.cap + dialytikagravecmb + dieresistildecmb + dieresismacroncmb + dieresismacroncmb.cap + dieresiscaroncmb + dieresiscaroncmb.cap + circumflexacutecmb + circumflexacutecmb.cap + circumflexgravecmb + circumflexgravecmb.cap + circumflexhoicmb + circumflexhoicmb.cap + circumflextildecmb + circumflextildecmb.cap + breveacutecmb + breveacutecmb.cap + brevegravecmb + brevegravecmb.cap + brevehoicmb + brevehoicmb.cap + brevetildecmb + brevetildecmb.cap + circumflexbrevecmb + circumflexbrevecmb.cap + macronacutecmb + macronacutecmb.cap + carondotaccentcmb + carondotaccentcmb.cap + asperacutecmb + aspergravecmb + aspertildecmb + lenisacutecmb + lenisgravecmb + lenistildecmb + + + diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/layercontents.plist b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/layercontents.plist new file mode 100644 index 000000000..b9c1a4f27 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/layercontents.plist @@ -0,0 +1,10 @@ + + + + + + public.default + glyphs + + + diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/lib.plist b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/lib.plist new file mode 100644 index 000000000..90e7b42a7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/lib.plist @@ -0,0 +1,62 @@ + + + + + public.glyphOrder + + space + A + B + C + D + E + F + G + H + I + J + K + L + M + N + O + P + Q + R + S + T + U + V + W + X + Y + Z + a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + t + u + v + w + x + y + z + + + diff --git a/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/metainfo.plist b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/metainfo.plist new file mode 100644 index 000000000..7b8b34ac6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_glyphorder.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + com.github.fonttools.ufoLib + formatVersion + 3 + + diff --git a/tests/otfautohint_data/input/dummy/incomplete_metainfo.ufo/metainfo.plist b/tests/otfautohint_data/input/dummy/incomplete_metainfo.ufo/metainfo.plist new file mode 100644 index 000000000..cfd4d1378 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/incomplete_metainfo.ufo/metainfo.plist @@ -0,0 +1,8 @@ + + + + + creator + com.github.fonttools.ufoLib + + diff --git a/tests/otfautohint_data/input/dummy/layers.ufo/data/com.adobe.type.processedHashMap b/tests/otfautohint_data/input/dummy/layers.ufo/data/com.adobe.type.processedHashMap new file mode 100644 index 000000000..d70cd2fbe --- /dev/null +++ b/tests/otfautohint_data/input/dummy/layers.ufo/data/com.adobe.type.processedHashMap @@ -0,0 +1,4 @@ +{ +'a': ['w500c25003870500112c500250500387387500c2505001135000387c025001121130', ['autohint']], +'hashMapVersion': (1, 0), +} diff --git a/tests/otfautohint_data/input/dummy/layers.ufo/fontinfo.plist b/tests/otfautohint_data/input/dummy/layers.ufo/fontinfo.plist new file mode 100644 index 000000000..2bdf007f8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/layers.ufo/fontinfo.plist @@ -0,0 +1,37 @@ + + + + + ascender + 750 + capHeight + 750 + descender + -250 + familyName + x + guidelines + + postscriptBlueValues + + 0 + 10 + 490 + 500 + + postscriptFamilyBlues + + postscriptFamilyOtherBlues + + postscriptOtherBlues + + postscriptStemSnapH + + postscriptStemSnapV + + unitsPerEm + 1000 + xHeight + 500 + + diff --git a/tests/otfautohint_data/input/dummy/layers.ufo/glyphs.background/contents.plist b/tests/otfautohint_data/input/dummy/layers.ufo/glyphs.background/contents.plist new file mode 100644 index 000000000..1e96c942b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/layers.ufo/glyphs.background/contents.plist @@ -0,0 +1,5 @@ + + + + + diff --git a/tests/otfautohint_data/input/dummy/layers.ufo/glyphs.background/layerinfo.plist b/tests/otfautohint_data/input/dummy/layers.ufo/glyphs.background/layerinfo.plist new file mode 100644 index 000000000..7e385c7f1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/layers.ufo/glyphs.background/layerinfo.plist @@ -0,0 +1,8 @@ + + + + + color + 0.5,1,0,0.7 + + diff --git a/tests/otfautohint_data/input/dummy/layers.ufo/glyphs.com.adobe.type.processedglyphs/a.glif b/tests/otfautohint_data/input/dummy/layers.ufo/glyphs.com.adobe.type.processedglyphs/a.glif new file mode 100644 index 000000000..0e3085449 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/layers.ufo/glyphs.com.adobe.type.processedglyphs/a.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + com.adobe.type.autohint.v2 + + hintSetList + + + pointTag + hintRef0000 + stems + + hstem 21 -21 + vstem 0 500 + + + + id + w500c25003870500112c500250500387387500c2505001135000387c025001121130 + + + + diff --git a/tests/otfautohint_data/input/dummy/layers.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist b/tests/otfautohint_data/input/dummy/layers.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist new file mode 100644 index 000000000..63a44aca7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/layers.ufo/glyphs.com.adobe.type.processedglyphs/contents.plist @@ -0,0 +1,8 @@ + + + + + a + a.glif + + diff --git a/tests/otfautohint_data/input/dummy/layers.ufo/glyphs.condensed/a.glif b/tests/otfautohint_data/input/dummy/layers.ufo/glyphs.condensed/a.glif new file mode 100644 index 000000000..75a47aa7d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/layers.ufo/glyphs.condensed/a.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/layers.ufo/glyphs.condensed/contents.plist b/tests/otfautohint_data/input/dummy/layers.ufo/glyphs.condensed/contents.plist new file mode 100644 index 000000000..63a44aca7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/layers.ufo/glyphs.condensed/contents.plist @@ -0,0 +1,8 @@ + + + + + a + a.glif + + diff --git a/tests/otfautohint_data/input/dummy/layers.ufo/glyphs.condensed/layerinfo.plist b/tests/otfautohint_data/input/dummy/layers.ufo/glyphs.condensed/layerinfo.plist new file mode 100644 index 000000000..9aafa3330 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/layers.ufo/glyphs.condensed/layerinfo.plist @@ -0,0 +1,8 @@ + + + + + color + 0,0.25,1,0.7 + + diff --git a/tests/otfautohint_data/input/dummy/layers.ufo/glyphs.other layer/a.glif b/tests/otfautohint_data/input/dummy/layers.ufo/glyphs.other layer/a.glif new file mode 100644 index 000000000..9557ff387 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/layers.ufo/glyphs.other layer/a.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/layers.ufo/glyphs.other layer/contents.plist b/tests/otfautohint_data/input/dummy/layers.ufo/glyphs.other layer/contents.plist new file mode 100644 index 000000000..63a44aca7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/layers.ufo/glyphs.other layer/contents.plist @@ -0,0 +1,8 @@ + + + + + a + a.glif + + diff --git a/tests/otfautohint_data/input/dummy/layers.ufo/glyphs.other layer/layerinfo.plist b/tests/otfautohint_data/input/dummy/layers.ufo/glyphs.other layer/layerinfo.plist new file mode 100644 index 000000000..321e50a89 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/layers.ufo/glyphs.other layer/layerinfo.plist @@ -0,0 +1,8 @@ + + + + + color + 0,1,0.25,0.7 + + diff --git a/tests/otfautohint_data/input/dummy/layers.ufo/glyphs/a.glif b/tests/otfautohint_data/input/dummy/layers.ufo/glyphs/a.glif new file mode 100644 index 000000000..f33c999a0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/layers.ufo/glyphs/a.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/layers.ufo/glyphs/contents.plist b/tests/otfautohint_data/input/dummy/layers.ufo/glyphs/contents.plist new file mode 100644 index 000000000..63a44aca7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/layers.ufo/glyphs/contents.plist @@ -0,0 +1,8 @@ + + + + + a + a.glif + + diff --git a/tests/otfautohint_data/input/dummy/layers.ufo/glyphs/layerinfo.plist b/tests/otfautohint_data/input/dummy/layers.ufo/glyphs/layerinfo.plist new file mode 100644 index 000000000..3cf39b47b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/layers.ufo/glyphs/layerinfo.plist @@ -0,0 +1,8 @@ + + + + + color + 1,0.75,0,0.7 + + diff --git a/tests/otfautohint_data/input/dummy/layers.ufo/layercontents.plist b/tests/otfautohint_data/input/dummy/layers.ufo/layercontents.plist new file mode 100644 index 000000000..90f9ad100 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/layers.ufo/layercontents.plist @@ -0,0 +1,26 @@ + + + + + + foreground + glyphs + + + background + glyphs.background + + + other layer + glyphs.other layer + + + condensed + glyphs.condensed + + + com.adobe.type.processedglyphs + glyphs.com.adobe.type.processedglyphs + + + diff --git a/tests/otfautohint_data/input/dummy/layers.ufo/lib.plist b/tests/otfautohint_data/input/dummy/layers.ufo/lib.plist new file mode 100644 index 000000000..ddf0bc008 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/layers.ufo/lib.plist @@ -0,0 +1,266 @@ + + + + + com.defcon.sortDescriptor + + + ascending + Adobe Latin 1 + type + characterSet + + + com.typemytype.robofont.compileSettings.autohint + + com.typemytype.robofont.compileSettings.checkOutlines + + com.typemytype.robofont.compileSettings.createDummyDSIG + + com.typemytype.robofont.compileSettings.decompose + + com.typemytype.robofont.compileSettings.generateFormat + 0 + com.typemytype.robofont.compileSettings.releaseMode + + com.typemytype.robofont.italicSlantOffset + 0 + com.typemytype.robofont.segmentType + curve + com.typemytype.robofont.shouldAddPointsInSplineConversion + 1 + public.glyphOrder + + .notdef + space + exclam + quotedbl + numbersign + dollar + percent + ampersand + quotesingle + parenleft + parenright + asterisk + plus + comma + hyphen + period + slash + zero + one + two + three + four + five + six + seven + eight + nine + colon + semicolon + less + equal + greater + question + at + A + B + C + D + E + F + G + H + I + J + K + L + M + N + O + P + Q + R + S + T + U + V + W + X + Y + Z + bracketleft + backslash + bracketright + asciicircum + underscore + grave + a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + t + u + v + w + x + y + z + braceleft + bar + braceright + asciitilde + exclamdown + cent + sterling + currency + yen + brokenbar + section + dieresis + copyright + ordfeminine + guillemotleft + logicalnot + registered + macron + degree + plusminus + two.sups + three.sups + acute + mu.math + paragraph + periodcentered + cedilla + one.sups + ordmasculine + guillemotright + onequarter + onehalf + threequarters + questiondown + Agrave + Aacute + Acircumflex + Atilde + Adieresis + Aring + AE + Ccedilla + Egrave + Eacute + Ecircumflex + Edieresis + Igrave + Iacute + Icircumflex + Idieresis + Eth + Ntilde + Ograve + Oacute + Ocircumflex + Otilde + Odieresis + multiply + Oslash + Ugrave + Uacute + Ucircumflex + Udieresis + Yacute + Thorn + germandbls + agrave + aacute + acircumflex + atilde + adieresis + aring + ae + ccedilla + egrave + eacute + ecircumflex + edieresis + igrave + iacute + icircumflex + idieresis + eth + ntilde + ograve + oacute + ocircumflex + otilde + odieresis + divide + oslash + ugrave + uacute + ucircumflex + udieresis + yacute + thorn + ydieresis + dotlessi + Lslash + lslash + OE + oe + Scaron + scaron + Ydieresis + Zcaron + zcaron + florin + circumflex + caron + breve + dotaccent + ring + ogonek + tilde + hungarumlaut + endash + emdash + quoteleft + quoteright + quotesinglbase + quotedblleft + quotedblright + quotedblbase + dagger + daggerdbl + bullet + ellipsis + perthousand + guilsinglleft + guilsinglright + fraction + Euro + trademark + minus + f_i + f_l + + + diff --git a/tests/otfautohint_data/input/dummy/layers.ufo/metainfo.plist b/tests/otfautohint_data/input/dummy/layers.ufo/metainfo.plist new file mode 100644 index 000000000..7b8b34ac6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/layers.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + com.github.fonttools.ufoLib + formatVersion + 3 + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.otf b/tests/otfautohint_data/input/dummy/mm0/font0.otf new file mode 100644 index 0000000000000000000000000000000000000000..04fb09f1a2f029687d77e17b6e16cd9910156e88 GIT binary patch literal 116492 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 PGK!63=nGx>QbPV0u%?FI literal 0 HcmV?d00001 diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/fontinfo.plist b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/fontinfo.plist new file mode 100644 index 000000000..34ccf6f7d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/fontinfo.plist @@ -0,0 +1,94 @@ + + + + + ascender + 738 + capHeight + 677 + copyright + Copyright 2014 - 2017 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. + descender + -245 + familyName + Source Serif Variable + italicAngle + 0 + postscriptBlueFuzz + 0 + postscriptBlueScale + 0.0375 + postscriptBlueValues + + -13 + 0 + 470 + 483 + 534 + 547 + 556 + 569 + 654 + 667 + 677 + 690 + 738 + 758 + + postscriptFamilyBlues + + -15 + 0 + 475 + 488 + 527 + 540 + 549 + 563 + 646 + 659 + 669 + 684 + 729 + 749 + + postscriptFamilyOtherBlues + + -249 + -239 + + postscriptFontName + SourceSerif_ExtraLight + postscriptOtherBlues + + -255 + -245 + + postscriptStemSnapH + + 26 + 20 + + postscriptStemSnapV + + 28 + 32 + + postscriptUnderlinePosition + -75 + postscriptUnderlineThickness + 50 + styleName + ExtraLight + trademark + Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + unitsPerEm + 1000 + versionMajor + 1 + versionMinor + 0 + xHeight + 470 + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_E_.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_E_.glif new file mode 100644 index 000000000..d75c15abf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_E_.glif @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_acute.glif new file mode 100644 index 000000000..aea4eec01 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_acute.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_breve.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_breve.glif new file mode 100644 index 000000000..526c295a6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_breve.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_breveacute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_breveacute.glif new file mode 100644 index 000000000..60b056a77 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_breveacute.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_brevecyr.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_brevecyr.glif new file mode 100644 index 000000000..14a1ae21c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_brevecyr.glif @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_brevedotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_brevedotbelow.glif new file mode 100644 index 000000000..a492bcf3b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_brevedotbelow.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_brevegrave.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_brevegrave.glif new file mode 100644 index 000000000..ee30cbce2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_brevegrave.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_brevehoi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_brevehoi.glif new file mode 100644 index 000000000..bc1c76730 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_brevehoi.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_brevetilde.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_brevetilde.glif new file mode 100644 index 000000000..701d400fb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_brevetilde.glif @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_caron.glif new file mode 100644 index 000000000..e25f9e417 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_caron.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_circumflex.glif new file mode 100644 index 000000000..fa967cd3d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_circumflex.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_circumflexacute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_circumflexacute.glif new file mode 100644 index 000000000..8e27bcdba --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_circumflexacute.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_circumflexdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_circumflexdotbelow.glif new file mode 100644 index 000000000..0fe43fd56 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_circumflexdotbelow.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_circumflexgrave.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_circumflexgrave.glif new file mode 100644 index 000000000..8e6aed763 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_circumflexgrave.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_circumflexhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_circumflexhoi.glif new file mode 100644 index 000000000..116c0b568 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_circumflexhoi.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_circumflextilde.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_circumflextilde.glif new file mode 100644 index 000000000..db7da23d1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_circumflextilde.glif @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_cyr.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_cyr.glif new file mode 100644 index 000000000..de1de8e60 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_cyr.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_dieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_dieresis.glif new file mode 100644 index 000000000..b3a910a59 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_dieresis.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_dotbelow.glif new file mode 100644 index 000000000..025de0ce8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_dotbelow.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_grave.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_grave.glif new file mode 100644 index 000000000..9474ec2b1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_grave.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_hoi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_hoi.glif new file mode 100644 index 000000000..16fe1e290 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_hoi.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_ie.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_ie.glif new file mode 100644 index 000000000..d78a30677 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_ie.glif @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_lpha.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_lpha.glif new file mode 100644 index 000000000..aaba944a6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_lpha.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_lphatonos.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_lphatonos.glif new file mode 100644 index 000000000..341c1f39a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_lphatonos.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_macron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_macron.glif new file mode 100644 index 000000000..c1346316a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_macron.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_ogonek.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_ogonek.glif new file mode 100644 index 000000000..4c5e6cbd0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_ogonek.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_ring.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_ring.glif new file mode 100644 index 000000000..41fdf6aba --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_ring.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_tilde.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_tilde.glif new file mode 100644 index 000000000..4514c1567 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/A_tilde.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/B_e.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/B_e.glif new file mode 100644 index 000000000..4bc351f34 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/B_e.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/B_eta.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/B_eta.glif new file mode 100644 index 000000000..256b74f01 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/B_eta.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/C_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/C_acute.glif new file mode 100644 index 000000000..957e68495 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/C_acute.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/C_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/C_caron.glif new file mode 100644 index 000000000..a111ed044 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/C_caron.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/C_cedilla.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/C_cedilla.glif new file mode 100644 index 000000000..a2d94caee --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/C_cedilla.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/C_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/C_circumflex.glif new file mode 100644 index 000000000..f4c92978e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/C_circumflex.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/C_dotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/C_dotaccent.glif new file mode 100644 index 000000000..fdc24e9aa --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/C_dotaccent.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/C_he.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/C_he.glif new file mode 100644 index 000000000..b597f9649 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/C_he.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/C_hedescender.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/C_hedescender.glif new file mode 100644 index 000000000..95c2d9c9a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/C_hedescender.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/C_hi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/C_hi.glif new file mode 100644 index 000000000..193dabb37 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/C_hi.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_caron.glif new file mode 100644 index 000000000..416f6e0e6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_caron.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_croat.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_croat.glif new file mode 100644 index 000000000..0eececc86 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_croat.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_dotbelow.glif new file mode 100644 index 000000000..2ec5607cd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_dotbelow.glif @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_e.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_e.glif new file mode 100644 index 000000000..890fedcfc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_e.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_elta.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_elta.glif new file mode 100644 index 000000000..b56a583e9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_elta.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_je.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_je.glif new file mode 100644 index 000000000..543da8a1d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_je.glif @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_linebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_linebelow.glif new file mode 100644 index 000000000..b4b53b031 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_linebelow.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_ze.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_ze.glif new file mode 100644 index 000000000..17c139afd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_ze.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_zhe.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_zhe.glif new file mode 100644 index 000000000..663c1cfb0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/D_zhe.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_acute.glif new file mode 100644 index 000000000..97d1bc01e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_acute.glif @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_breve.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_breve.glif new file mode 100644 index 000000000..6808b3eaf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_breve.glif @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_caron.glif new file mode 100644 index 000000000..0ea86dc4f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_caron.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_circumflex.glif new file mode 100644 index 000000000..0bdf27c12 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_circumflex.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_circumflexacute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_circumflexacute.glif new file mode 100644 index 000000000..24b450a0c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_circumflexacute.glif @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_circumflexdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_circumflexdotbelow.glif new file mode 100644 index 000000000..9f49056d4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_circumflexdotbelow.glif @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_circumflexgrave.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_circumflexgrave.glif new file mode 100644 index 000000000..fbe536d5d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_circumflexgrave.glif @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_circumflexhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_circumflexhoi.glif new file mode 100644 index 000000000..20198c653 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_circumflexhoi.glif @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_circumflextilde.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_circumflextilde.glif new file mode 100644 index 000000000..17d22727e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_circumflextilde.glif @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_cyr.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_cyr.glif new file mode 100644 index 000000000..c29897521 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_cyr.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_dieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_dieresis.glif new file mode 100644 index 000000000..3d6412740 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_dieresis.glif @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_dotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_dotaccent.glif new file mode 100644 index 000000000..fa1dc352d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_dotaccent.glif @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_dotbelow.glif new file mode 100644 index 000000000..f32009235 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_dotbelow.glif @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_f.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_f.glif new file mode 100644 index 000000000..726a22885 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_f.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_grave.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_grave.glif new file mode 100644 index 000000000..244d3c532 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_grave.glif @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_hoi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_hoi.glif new file mode 100644 index 000000000..6bfeef5db --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_hoi.glif @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_l.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_l.glif new file mode 100644 index 000000000..b6025f2af --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_l.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_m.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_m.glif new file mode 100644 index 000000000..61ee90bc6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_m.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_macron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_macron.glif new file mode 100644 index 000000000..e4a04afdf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_macron.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_n.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_n.glif new file mode 100644 index 000000000..c698781e4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_n.glif @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_ndescender.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_ndescender.glif new file mode 100644 index 000000000..c8814124d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_ndescender.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_ng.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_ng.glif new file mode 100644 index 000000000..41794ef6b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_ng.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_ogonek.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_ogonek.glif new file mode 100644 index 000000000..e07aca1e1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_ogonek.glif @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_psilon.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_psilon.glif new file mode 100644 index 000000000..68153da64 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_psilon.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_psilontonos.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_psilontonos.glif new file mode 100644 index 000000000..4795f147a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_psilontonos.glif @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_r.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_r.glif new file mode 100644 index 000000000..e21c5abe9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_r.glif @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_s.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_s.glif new file mode 100644 index 000000000..59b70e00d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_s.glif @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_sdescender.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_sdescender.glif new file mode 100644 index 000000000..017ac0ddb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_sdescender.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_ta.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_ta.glif new file mode 100644 index 000000000..d673a5960 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_ta.glif @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_tatonos.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_tatonos.glif new file mode 100644 index 000000000..9500026a5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_tatonos.glif @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_th.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_th.glif new file mode 100644 index 000000000..acc59a850 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_th.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_tilde.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_tilde.glif new file mode 100644 index 000000000..da87d076f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_tilde.glif @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_uro.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_uro.glif new file mode 100644 index 000000000..5d6591751 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/E_uro.glif @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/F_ita.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/F_ita.glif new file mode 100644 index 000000000..3d5a11f3a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/F_ita.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_amma.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_amma.glif new file mode 100644 index 000000000..ce649c2b2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_amma.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_breve.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_breve.glif new file mode 100644 index 000000000..7768f4307 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_breve.glif @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_caron.glif new file mode 100644 index 000000000..2a29f5970 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_caron.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_circumflex.glif new file mode 100644 index 000000000..0f3c77e3f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_circumflex.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_commaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_commaaccent.glif new file mode 100644 index 000000000..65387c8be --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_commaaccent.glif @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_dotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_dotaccent.glif new file mode 100644 index 000000000..89669b948 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_dotaccent.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_ermandbls.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_ermandbls.glif new file mode 100644 index 000000000..82bcd20cd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_ermandbls.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_he.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_he.glif new file mode 100644 index 000000000..675309ad3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_he.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_hestroke.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_hestroke.glif new file mode 100644 index 000000000..9616d939d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_hestroke.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_heup.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_heup.glif new file mode 100644 index 000000000..59fe14f38 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_heup.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_je.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_je.glif new file mode 100644 index 000000000..8e9026c40 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_je.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_macron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_macron.glif new file mode 100644 index 000000000..2b655d540 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/G_macron.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/H_a.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/H_a.glif new file mode 100644 index 000000000..e132233a4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/H_a.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/H_adescender.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/H_adescender.glif new file mode 100644 index 000000000..eb1cfab0d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/H_adescender.glif @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/H_ard.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/H_ard.glif new file mode 100644 index 000000000..c0f95f3ed --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/H_ard.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/H_bar.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/H_bar.glif new file mode 100644 index 000000000..085694ff2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/H_bar.glif @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/H_brevebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/H_brevebelow.glif new file mode 100644 index 000000000..ccbc3d2ee --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/H_brevebelow.glif @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/H_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/H_circumflex.glif new file mode 100644 index 000000000..6016647ed --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/H_circumflex.glif @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/H_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/H_dotbelow.glif new file mode 100644 index 000000000..30d96af60 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/H_dotbelow.glif @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_J_.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_J_.glif new file mode 100644 index 000000000..850ccd0f4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_J_.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_acute.glif new file mode 100644 index 000000000..8ad7e2686 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_acute.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_caron.glif new file mode 100644 index 000000000..26fca62ce --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_caron.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_circumflex.glif new file mode 100644 index 000000000..6d9a839f1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_circumflex.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_cyr.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_cyr.glif new file mode 100644 index 000000000..d5502c05e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_cyr.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_dieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_dieresis.glif new file mode 100644 index 000000000..a8ba1ef05 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_dieresis.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_dotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_dotaccent.glif new file mode 100644 index 000000000..92b8b647d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_dotaccent.glif @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_dotbelow.glif new file mode 100644 index 000000000..dbcb6e599 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_dotbelow.glif @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_e.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_e.glif new file mode 100644 index 000000000..8a4fc7461 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_e.glif @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_ebreve.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_ebreve.glif new file mode 100644 index 000000000..b0b72e35f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_ebreve.glif @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_egrave.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_egrave.glif new file mode 100644 index 000000000..93e8c6218 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_egrave.glif @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_eukran.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_eukran.glif new file mode 100644 index 000000000..05672b71e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_eukran.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_grave.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_grave.glif new file mode 100644 index 000000000..91821149b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_grave.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_gravecyr.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_gravecyr.glif new file mode 100644 index 000000000..4188276eb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_gravecyr.glif @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_hoi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_hoi.glif new file mode 100644 index 000000000..bb411deec --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_hoi.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_macron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_macron.glif new file mode 100644 index 000000000..24d3293b5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_macron.glif @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_macroncyr.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_macroncyr.glif new file mode 100644 index 000000000..a04c95c59 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_macroncyr.glif @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_o.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_o.glif new file mode 100644 index 000000000..7cbffbd3d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_o.glif @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_ogonek.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_ogonek.glif new file mode 100644 index 000000000..d062e9ad4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_ogonek.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_ota.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_ota.glif new file mode 100644 index 000000000..ef6853dfd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_ota.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_otadieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_otadieresis.glif new file mode 100644 index 000000000..a61ae52b4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_otadieresis.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_otatonos.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_otatonos.glif new file mode 100644 index 000000000..71a9f79af --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_otatonos.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_short.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_short.glif new file mode 100644 index 000000000..a40e77a67 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_short.glif @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_tilde.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_tilde.glif new file mode 100644 index 000000000..af167f3a7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_tilde.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_ukran.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_ukran.glif new file mode 100644 index 000000000..54460f5e7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_ukran.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_zhitsa.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_zhitsa.glif new file mode 100644 index 000000000..e113ea6f5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/I_zhitsa.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/J_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/J_circumflex.glif new file mode 100644 index 000000000..af0e58558 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/J_circumflex.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/J_e.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/J_e.glif new file mode 100644 index 000000000..1e39d33d9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/J_e.glif @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/K_a.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/K_a.glif new file mode 100644 index 000000000..38079a330 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/K_a.glif @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/K_abashkir.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/K_abashkir.glif new file mode 100644 index 000000000..e8dc6635f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/K_abashkir.glif @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/K_adescender.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/K_adescender.glif new file mode 100644 index 000000000..4ae23c096 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/K_adescender.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/K_appa.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/K_appa.glif new file mode 100644 index 000000000..42b8a4866 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/K_appa.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/K_commaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/K_commaaccent.glif new file mode 100644 index 000000000..daffb5bc8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/K_commaaccent.glif @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/K_je.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/K_je.glif new file mode 100644 index 000000000..e22748c48 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/K_je.glif @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_acute.glif new file mode 100644 index 000000000..b530b1d7c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_acute.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_ambda.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_ambda.glif new file mode 100644 index 000000000..761391974 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_ambda.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_caron.glif new file mode 100644 index 000000000..263504b1d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_caron.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_commaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_commaaccent.glif new file mode 100644 index 000000000..6e8f96ef4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_commaaccent.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_dot.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_dot.glif new file mode 100644 index 000000000..6e4d99944 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_dot.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_dotbelow.glif new file mode 100644 index 000000000..ae0ff5e2e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_dotbelow.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_dotbelowmacron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_dotbelowmacron.glif new file mode 100644 index 000000000..4907aa33b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_dotbelowmacron.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_je.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_je.glif new file mode 100644 index 000000000..e52db1bc8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_je.glif @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_linebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_linebelow.glif new file mode 100644 index 000000000..a020cb7a3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_linebelow.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_slash.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_slash.glif new file mode 100644 index 000000000..96bac3c33 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/L_slash.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/M_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/M_acute.glif new file mode 100644 index 000000000..b61909bc4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/M_acute.glif @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/M_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/M_dotbelow.glif new file mode 100644 index 000000000..44c78f556 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/M_dotbelow.glif @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/M_u.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/M_u.glif new file mode 100644 index 000000000..fc4d67ef8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/M_u.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_acute.glif new file mode 100644 index 000000000..d1dd6f41e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_acute.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_caron.glif new file mode 100644 index 000000000..9e8a20f69 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_caron.glif @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_commaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_commaaccent.glif new file mode 100644 index 000000000..162c1ce93 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_commaaccent.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_dotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_dotaccent.glif new file mode 100644 index 000000000..9a723df48 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_dotaccent.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_dotbelow.glif new file mode 100644 index 000000000..04aaa8613 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_dotbelow.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_grave.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_grave.glif new file mode 100644 index 000000000..d88ca995a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_grave.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_je.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_je.glif new file mode 100644 index 000000000..76006592f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_je.glif @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_linebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_linebelow.glif new file mode 100644 index 000000000..c7d82b43d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_linebelow.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_tilde.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_tilde.glif new file mode 100644 index 000000000..173b05d98 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_tilde.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_u.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_u.glif new file mode 100644 index 000000000..9b3510e52 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/N_u.glif @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_E_.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_E_.glif new file mode 100644 index 000000000..18eb6cc5e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_E_.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_acute.glif new file mode 100644 index 000000000..9d4b99a94 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_acute.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_barcyr.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_barcyr.glif new file mode 100644 index 000000000..5b79e6fd0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_barcyr.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_breve.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_breve.glif new file mode 100644 index 000000000..790aa64c8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_breve.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_caron.glif new file mode 100644 index 000000000..623e65faf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_caron.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_circumflex.glif new file mode 100644 index 000000000..a64b705f9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_circumflex.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_circumflexacute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_circumflexacute.glif new file mode 100644 index 000000000..e965c3194 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_circumflexacute.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_circumflexdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_circumflexdotbelow.glif new file mode 100644 index 000000000..472843051 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_circumflexdotbelow.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_circumflexgrave.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_circumflexgrave.glif new file mode 100644 index 000000000..e7917af03 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_circumflexgrave.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_circumflexhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_circumflexhoi.glif new file mode 100644 index 000000000..5f9e2307d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_circumflexhoi.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_circumflextilde.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_circumflextilde.glif new file mode 100644 index 000000000..0ebbeda91 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_circumflextilde.glif @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_cyr.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_cyr.glif new file mode 100644 index 000000000..69c5163cb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_cyr.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_dieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_dieresis.glif new file mode 100644 index 000000000..4cd829f77 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_dieresis.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_dieresiscyr.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_dieresiscyr.glif new file mode 100644 index 000000000..075386377 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_dieresiscyr.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_dotbelow.glif new file mode 100644 index 000000000..b019f165b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_dotbelow.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_grave.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_grave.glif new file mode 100644 index 000000000..417663643 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_grave.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_hoi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_hoi.glif new file mode 100644 index 000000000..5dfc49463 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_hoi.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_horn.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_horn.glif new file mode 100644 index 000000000..2672c1460 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_horn.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_hornacute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_hornacute.glif new file mode 100644 index 000000000..cd66bd8c2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_hornacute.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_horndotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_horndotbelow.glif new file mode 100644 index 000000000..60e738911 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_horndotbelow.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_horngrave.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_horngrave.glif new file mode 100644 index 000000000..5d5e80330 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_horngrave.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_hornhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_hornhoi.glif new file mode 100644 index 000000000..6502d1595 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_hornhoi.glif @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_horntilde.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_horntilde.glif new file mode 100644 index 000000000..776da9074 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_horntilde.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_hungarumlaut.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_hungarumlaut.glif new file mode 100644 index 000000000..2746aaab2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_hungarumlaut.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_macron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_macron.glif new file mode 100644 index 000000000..eff84b10e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_macron.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_mega.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_mega.glif new file mode 100644 index 000000000..8d9cd3793 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_mega.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_megatonos.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_megatonos.glif new file mode 100644 index 000000000..03c3d281c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_megatonos.glif @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_micron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_micron.glif new file mode 100644 index 000000000..439426d0c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_micron.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_microntonos.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_microntonos.glif new file mode 100644 index 000000000..940023180 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_microntonos.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_slash.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_slash.glif new file mode 100644 index 000000000..fd54af82a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_slash.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_tilde.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_tilde.glif new file mode 100644 index 000000000..d53a10ef2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/O_tilde.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/P_alochka.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/P_alochka.glif new file mode 100644 index 000000000..d9727c359 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/P_alochka.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/P_e.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/P_e.glif new file mode 100644 index 000000000..260f52239 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/P_e.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/P_hi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/P_hi.glif new file mode 100644 index 000000000..92faea3ba --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/P_hi.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/P_i.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/P_i.glif new file mode 100644 index 000000000..daad6f132 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/P_i.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/P_si.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/P_si.glif new file mode 100644 index 000000000..2152352f7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/P_si.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/R_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/R_acute.glif new file mode 100644 index 000000000..3ae192449 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/R_acute.glif @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/R_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/R_caron.glif new file mode 100644 index 000000000..bc841f223 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/R_caron.glif @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/R_commaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/R_commaaccent.glif new file mode 100644 index 000000000..fbd8a0718 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/R_commaaccent.glif @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/R_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/R_dotbelow.glif new file mode 100644 index 000000000..019764c06 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/R_dotbelow.glif @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/R_dotbelowmacron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/R_dotbelowmacron.glif new file mode 100644 index 000000000..d0cfb5526 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/R_dotbelowmacron.glif @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/R_ho.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/R_ho.glif new file mode 100644 index 000000000..da980832b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/R_ho.glif @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/R_linebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/R_linebelow.glif new file mode 100644 index 000000000..9e8fa968e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/R_linebelow.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_acute.glif new file mode 100644 index 000000000..db0c6c954 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_acute.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_caron.glif new file mode 100644 index 000000000..e99615330 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_caron.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_cedilla.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_cedilla.glif new file mode 100644 index 000000000..3bc102ae6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_cedilla.glif @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_chwa.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_chwa.glif new file mode 100644 index 000000000..dd45e4e6b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_chwa.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_chwacyr.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_chwacyr.glif new file mode 100644 index 000000000..f164fd23d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_chwacyr.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_circumflex.glif new file mode 100644 index 000000000..85d255086 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_circumflex.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_commaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_commaaccent.glif new file mode 100644 index 000000000..529a64c1b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_commaaccent.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_dotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_dotaccent.glif new file mode 100644 index 000000000..f21fda01e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_dotaccent.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_dotbelow.glif new file mode 100644 index 000000000..3dbbb770e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_dotbelow.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_ha.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_ha.glif new file mode 100644 index 000000000..aca0dbef9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_ha.glif @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_hcha.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_hcha.glif new file mode 100644 index 000000000..9ffcc6fc1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_hcha.glif @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_hha.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_hha.glif new file mode 100644 index 000000000..210b7e001 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_hha.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_igma.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_igma.glif new file mode 100644 index 000000000..8b0de72da --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_igma.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_oft.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_oft.glif new file mode 100644 index 000000000..81d9667af --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/S_oft.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_au.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_au.glif new file mode 100644 index 000000000..1017c1f7b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_au.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_bar.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_bar.glif new file mode 100644 index 000000000..61d301c54 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_bar.glif @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_caron.glif new file mode 100644 index 000000000..3efe819c1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_caron.glif @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_cedilla.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_cedilla.glif new file mode 100644 index 000000000..602cbbd74 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_cedilla.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_commaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_commaaccent.glif new file mode 100644 index 000000000..04afdca0e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_commaaccent.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_dotbelow.glif new file mode 100644 index 000000000..0c7adf661 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_dotbelow.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_e.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_e.glif new file mode 100644 index 000000000..1a540ba5e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_e.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_heta.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_heta.glif new file mode 100644 index 000000000..6f6ca1778 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_heta.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_horn.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_horn.glif new file mode 100644 index 000000000..7a5d7a823 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_horn.glif @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_linebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_linebelow.glif new file mode 100644 index 000000000..cd3d5c68b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_linebelow.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_se.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_se.glif new file mode 100644 index 000000000..296698562 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_se.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_she.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_she.glif new file mode 100644 index 000000000..88671a8cf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/T_she.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_acute.glif new file mode 100644 index 000000000..3a2f30c30 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_acute.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_acutedblcyr.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_acutedblcyr.glif new file mode 100644 index 000000000..97296130f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_acutedblcyr.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_breve.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_breve.glif new file mode 100644 index 000000000..191947e33 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_breve.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_caron.glif new file mode 100644 index 000000000..0a1df33ab --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_caron.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_circumflex.glif new file mode 100644 index 000000000..fcec44abf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_circumflex.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_cyr.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_cyr.glif new file mode 100644 index 000000000..23f712b80 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_cyr.glif @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_dieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_dieresis.glif new file mode 100644 index 000000000..3182f983d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_dieresis.glif @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_dieresisacute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_dieresisacute.glif new file mode 100644 index 000000000..c8f108d57 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_dieresisacute.glif @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_dieresiscaron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_dieresiscaron.glif new file mode 100644 index 000000000..708340cdf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_dieresiscaron.glif @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_dieresisgrave.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_dieresisgrave.glif new file mode 100644 index 000000000..c001fd784 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_dieresisgrave.glif @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_dieresismacron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_dieresismacron.glif new file mode 100644 index 000000000..2f48fa75a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_dieresismacron.glif @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_dotbelow.glif new file mode 100644 index 000000000..7f9589769 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_dotbelow.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_grave.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_grave.glif new file mode 100644 index 000000000..27a45ca54 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_grave.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_hoi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_hoi.glif new file mode 100644 index 000000000..b859f108c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_hoi.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_horn.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_horn.glif new file mode 100644 index 000000000..15dd87147 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_horn.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_hornacute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_hornacute.glif new file mode 100644 index 000000000..f138d316b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_hornacute.glif @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_horndotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_horndotbelow.glif new file mode 100644 index 000000000..87405df09 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_horndotbelow.glif @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_horngrave.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_horngrave.glif new file mode 100644 index 000000000..9e1ccd067 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_horngrave.glif @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_hornhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_hornhoi.glif new file mode 100644 index 000000000..6ca124f36 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_hornhoi.glif @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_horntilde.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_horntilde.glif new file mode 100644 index 000000000..29dda8e09 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_horntilde.glif @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_hungarumlaut.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_hungarumlaut.glif new file mode 100644 index 000000000..ce829f491 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_hungarumlaut.glif @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_macron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_macron.glif new file mode 100644 index 000000000..d916d8b7f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_macron.glif @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_macroncyr.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_macroncyr.glif new file mode 100644 index 000000000..f33cffba4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_macroncyr.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_ogonek.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_ogonek.glif new file mode 100644 index 000000000..4e79c7e1c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_ogonek.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_psilon.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_psilon.glif new file mode 100644 index 000000000..7694d1f3f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_psilon.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_psilondieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_psilondieresis.glif new file mode 100644 index 000000000..f3f477dd7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_psilondieresis.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_psilontonos.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_psilontonos.glif new file mode 100644 index 000000000..7eafd281c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_psilontonos.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_ring.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_ring.glif new file mode 100644 index 000000000..4b60bb4af --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_ring.glif @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_short.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_short.glif new file mode 100644 index 000000000..934e8c04f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_short.glif @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_straight.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_straight.glif new file mode 100644 index 000000000..fc88d0aaf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_straight.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_straightstroke.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_straightstroke.glif new file mode 100644 index 000000000..b4b82aef6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_straightstroke.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_tilde.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_tilde.glif new file mode 100644 index 000000000..de4de7900 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/U_tilde.glif @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/V_e.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/V_e.glif new file mode 100644 index 000000000..f9a1e8f7b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/V_e.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/W_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/W_acute.glif new file mode 100644 index 000000000..51a77a5cb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/W_acute.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/W_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/W_circumflex.glif new file mode 100644 index 000000000..3ce5e9c76 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/W_circumflex.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/W_dieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/W_dieresis.glif new file mode 100644 index 000000000..c46bbab04 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/W_dieresis.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/W_grave.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/W_grave.glif new file mode 100644 index 000000000..46d28f403 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/W_grave.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/X_i.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/X_i.glif new file mode 100644 index 000000000..f8b01381b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/X_i.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_a.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_a.glif new file mode 100644 index 000000000..577545021 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_a.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_acute.glif new file mode 100644 index 000000000..a8f793ee3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_acute.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_at.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_at.glif new file mode 100644 index 000000000..2457aa9a7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_at.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_circumflex.glif new file mode 100644 index 000000000..87a24391b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_circumflex.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_dieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_dieresis.glif new file mode 100644 index 000000000..b12534c07 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_dieresis.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_dotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_dotaccent.glif new file mode 100644 index 000000000..a0f21e3a3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_dotaccent.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_dotbelow.glif new file mode 100644 index 000000000..329f6f1f5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_dotbelow.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_eru.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_eru.glif new file mode 100644 index 000000000..a3c4c7725 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_eru.glif @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_grave.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_grave.glif new file mode 100644 index 000000000..c52a70247 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_grave.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_hoi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_hoi.glif new file mode 100644 index 000000000..f2326be89 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_hoi.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_i.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_i.glif new file mode 100644 index 000000000..b4254bf66 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_i.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_tilde.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_tilde.glif new file mode 100644 index 000000000..22eaa51ba --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_tilde.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_u.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_u.glif new file mode 100644 index 000000000..28bba6565 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Y_u.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_acute.glif new file mode 100644 index 000000000..e0de0d72a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_acute.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_caron.glif new file mode 100644 index 000000000..c6d77c44f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_caron.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_dotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_dotaccent.glif new file mode 100644 index 000000000..dbf257552 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_dotaccent.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_dotbelow.glif new file mode 100644 index 000000000..63e5f0491 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_dotbelow.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_e.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_e.glif new file mode 100644 index 000000000..7103f65c7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_e.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_edescender.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_edescender.glif new file mode 100644 index 000000000..82c4d0747 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_edescender.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_eta.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_eta.glif new file mode 100644 index 000000000..ba6d0f51f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_eta.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_he.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_he.glif new file mode 100644 index 000000000..069c20ad0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_he.glif @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_hebreve.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_hebreve.glif new file mode 100644 index 000000000..066fac59c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_hebreve.glif @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_hedescender.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_hedescender.glif new file mode 100644 index 000000000..e238e4ed8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/Z_hedescender.glif @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/a.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/a.sups.glif new file mode 100644 index 000000000..9d689ac19 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/a.sups.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/aacute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/aacute.glif new file mode 100644 index 000000000..da825d29e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/aacute.glif @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/abreve.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/abreve.glif new file mode 100644 index 000000000..9e03b6b00 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/abreve.glif @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/abreveacute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/abreveacute.glif new file mode 100644 index 000000000..60eb52bd4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/abreveacute.glif @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/abrevecyr.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/abrevecyr.glif new file mode 100644 index 000000000..b8ce2497b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/abrevecyr.glif @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/abrevedotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/abrevedotbelow.glif new file mode 100644 index 000000000..9674a5f9e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/abrevedotbelow.glif @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/abrevegrave.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/abrevegrave.glif new file mode 100644 index 000000000..48c1e854c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/abrevegrave.glif @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/abrevehoi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/abrevehoi.glif new file mode 100644 index 000000000..8d9f198be --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/abrevehoi.glif @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/abrevetilde.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/abrevetilde.glif new file mode 100644 index 000000000..eb48d6c98 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/abrevetilde.glif @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acaron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acaron.glif new file mode 100644 index 000000000..87bcbd50c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acaron.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acircumflex.glif new file mode 100644 index 000000000..c0339bd54 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acircumflex.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acircumflexacute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acircumflexacute.glif new file mode 100644 index 000000000..0797c11e1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acircumflexacute.glif @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acircumflexdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acircumflexdotbelow.glif new file mode 100644 index 000000000..26be5113c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acircumflexdotbelow.glif @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acircumflexgrave.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acircumflexgrave.glif new file mode 100644 index 000000000..734e4d2d5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acircumflexgrave.glif @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acircumflexhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acircumflexhoi.glif new file mode 100644 index 000000000..9539f6a4d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acircumflexhoi.glif @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acircumflextilde.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acircumflextilde.glif new file mode 100644 index 000000000..be29e5707 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acircumflextilde.glif @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acute.glif new file mode 100644 index 000000000..c7dec24f1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acute.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acutecmb.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acutecmb.glif new file mode 100644 index 000000000..e4fc66ce4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acutecmb.glif @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acyr.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acyr.glif new file mode 100644 index 000000000..3b2a4624b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/acyr.glif @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/adieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/adieresis.glif new file mode 100644 index 000000000..595719f9d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/adieresis.glif @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/adotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/adotbelow.glif new file mode 100644 index 000000000..af57cf130 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/adotbelow.glif @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ae.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ae.glif new file mode 100644 index 000000000..8e81e7f81 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ae.glif @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/agrave.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/agrave.glif new file mode 100644 index 000000000..ea62994aa --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/agrave.glif @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ahoi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ahoi.glif new file mode 100644 index 000000000..a6605a5fb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ahoi.glif @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/aie.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/aie.glif new file mode 100644 index 000000000..9fe89f179 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/aie.glif @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/alpha.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/alpha.glif new file mode 100644 index 000000000..088080f6b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/alpha.glif @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/alphalatin.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/alphalatin.glif new file mode 100644 index 000000000..17a1b348b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/alphalatin.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/alphatonos.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/alphatonos.glif new file mode 100644 index 000000000..8c60a1fe7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/alphatonos.glif @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/amacron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/amacron.glif new file mode 100644 index 000000000..70741af96 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/amacron.glif @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/anoteleia.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/anoteleia.glif new file mode 100644 index 000000000..d4e67ccf6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/anoteleia.glif @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/aogonek.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/aogonek.glif new file mode 100644 index 000000000..a963743c2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/aogonek.glif @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/approxequal.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/approxequal.glif new file mode 100644 index 000000000..11a886149 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/approxequal.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/aring.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/aring.glif new file mode 100644 index 000000000..42251386f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/aring.glif @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/arrowdown.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/arrowdown.glif new file mode 100644 index 000000000..b661a0f03 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/arrowdown.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/arrowdownleft.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/arrowdownleft.glif new file mode 100644 index 000000000..8b03b46f7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/arrowdownleft.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/arrowdownright.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/arrowdownright.glif new file mode 100644 index 000000000..1af6387e9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/arrowdownright.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/arrowleft.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/arrowleft.glif new file mode 100644 index 000000000..7c783c440 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/arrowleft.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/arrowright.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/arrowright.glif new file mode 100644 index 000000000..1b99b5590 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/arrowright.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/arrowup.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/arrowup.glif new file mode 100644 index 000000000..810ff9513 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/arrowup.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/arrowupleft.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/arrowupleft.glif new file mode 100644 index 000000000..6d9802282 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/arrowupleft.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/arrowupright.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/arrowupright.glif new file mode 100644 index 000000000..b3efd4284 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/arrowupright.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/atilde.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/atilde.glif new file mode 100644 index 000000000..0fd7f5b8c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/atilde.glif @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/b.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/b.sups.glif new file mode 100644 index 000000000..d27b228ec --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/b.sups.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/be.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/be.glif new file mode 100644 index 000000000..d4785adc8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/be.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/beta.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/beta.glif new file mode 100644 index 000000000..1cf9784df --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/beta.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/bitcoin.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/bitcoin.glif new file mode 100644 index 000000000..efd044062 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/bitcoin.glif @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/breve.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/breve.glif new file mode 100644 index 000000000..96a1c40a5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/breve.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/brevebelowcmb.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/brevebelowcmb.glif new file mode 100644 index 000000000..13cf9f648 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/brevebelowcmb.glif @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/brevecmb.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/brevecmb.glif new file mode 100644 index 000000000..2bd36d3ec --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/brevecmb.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/brokenbar.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/brokenbar.glif new file mode 100644 index 000000000..f84f9bbba --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/brokenbar.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/bullet.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/bullet.glif new file mode 100644 index 000000000..bf3f7b206 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/bullet.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/bulletoperator.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/bulletoperator.glif new file mode 100644 index 000000000..6d5aa927b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/bulletoperator.glif @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/c.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/c.sups.glif new file mode 100644 index 000000000..dce4ce66e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/c.sups.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/cacute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/cacute.glif new file mode 100644 index 000000000..54cc73e48 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/cacute.glif @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/caron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/caron.glif new file mode 100644 index 000000000..33dd98d34 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/caron.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/caroncmb.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/caroncmb.glif new file mode 100644 index 000000000..37fc230ea --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/caroncmb.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ccaron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ccaron.glif new file mode 100644 index 000000000..3b179506e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ccaron.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ccedilla.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ccedilla.glif new file mode 100644 index 000000000..19f989585 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ccedilla.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ccircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ccircumflex.glif new file mode 100644 index 000000000..475230d8a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ccircumflex.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/cdotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/cdotaccent.glif new file mode 100644 index 000000000..b2851f618 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/cdotaccent.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/cedi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/cedi.glif new file mode 100644 index 000000000..3f1530e08 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/cedi.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/cedilla.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/cedilla.glif new file mode 100644 index 000000000..e3dddb6c3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/cedilla.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/cedillacmb.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/cedillacmb.glif new file mode 100644 index 000000000..8357ab3d7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/cedillacmb.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/cent.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/cent.glif new file mode 100644 index 000000000..1705b539e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/cent.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/che.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/che.glif new file mode 100644 index 000000000..6feb0894b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/che.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/check.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/check.glif new file mode 100644 index 000000000..08f69011a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/check.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/checkbox.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/checkbox.glif new file mode 100644 index 000000000..8278da64c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/checkbox.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/checkedbox.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/checkedbox.glif new file mode 100644 index 000000000..6468d8b44 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/checkedbox.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/chedescender.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/chedescender.glif new file mode 100644 index 000000000..be6c0a325 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/chedescender.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/chi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/chi.glif new file mode 100644 index 000000000..0fafd0a29 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/chi.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/circumflex.glif new file mode 100644 index 000000000..20db8ffdb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/circumflex.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/circumflexcmb.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/circumflexcmb.glif new file mode 100644 index 000000000..abbe6a911 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/circumflexcmb.glif @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/colonmonetary.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/colonmonetary.glif new file mode 100644 index 000000000..d9892d954 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/colonmonetary.glif @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/colontriangularmod.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/colontriangularmod.glif new file mode 100644 index 000000000..ae97c9092 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/colontriangularmod.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/commabelowcmb.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/commabelowcmb.glif new file mode 100644 index 000000000..d239f0ed5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/commabelowcmb.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/commercemark.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/commercemark.glif new file mode 100644 index 000000000..fc3b6ee99 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/commercemark.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/contents.plist b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/contents.plist new file mode 100644 index 000000000..b689da04d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/contents.plist @@ -0,0 +1,1630 @@ + + + + + AE + A_E_.glif + Aacute + A_acute.glif + Abreve + A_breve.glif + Abreveacute + A_breveacute.glif + Abrevecyr + A_brevecyr.glif + Abrevedotbelow + A_brevedotbelow.glif + Abrevegrave + A_brevegrave.glif + Abrevehoi + A_brevehoi.glif + Abrevetilde + A_brevetilde.glif + Acaron + A_caron.glif + Acircumflex + A_circumflex.glif + Acircumflexacute + A_circumflexacute.glif + Acircumflexdotbelow + A_circumflexdotbelow.glif + Acircumflexgrave + A_circumflexgrave.glif + Acircumflexhoi + A_circumflexhoi.glif + Acircumflextilde + A_circumflextilde.glif + Acyr + A_cyr.glif + Adieresis + A_dieresis.glif + Adotbelow + A_dotbelow.glif + Agrave + A_grave.glif + Ahoi + A_hoi.glif + Aie + A_ie.glif + Alpha + A_lpha.glif + Alphatonos + A_lphatonos.glif + Amacron + A_macron.glif + Aogonek + A_ogonek.glif + Aring + A_ring.glif + Atilde + A_tilde.glif + Be + B_e.glif + Beta + B_eta.glif + Cacute + C_acute.glif + Ccaron + C_caron.glif + Ccedilla + C_cedilla.glif + Ccircumflex + C_circumflex.glif + Cdotaccent + C_dotaccent.glif + Che + C_he.glif + Chedescender + C_hedescender.glif + Chi + C_hi.glif + Dcaron + D_caron.glif + Dcroat + D_croat.glif + Ddotbelow + D_dotbelow.glif + De + D_e.glif + Delta + D_elta.glif + Dje + D_je.glif + Dlinebelow + D_linebelow.glif + Dze + D_ze.glif + Dzhe + D_zhe.glif + Eacute + E_acute.glif + Ebreve + E_breve.glif + Ecaron + E_caron.glif + Ecircumflex + E_circumflex.glif + Ecircumflexacute + E_circumflexacute.glif + Ecircumflexdotbelow + E_circumflexdotbelow.glif + Ecircumflexgrave + E_circumflexgrave.glif + Ecircumflexhoi + E_circumflexhoi.glif + Ecircumflextilde + E_circumflextilde.glif + Ecyr + E_cyr.glif + Edieresis + E_dieresis.glif + Edotaccent + E_dotaccent.glif + Edotbelow + E_dotbelow.glif + Ef + E_f.glif + Egrave + E_grave.glif + Ehoi + E_hoi.glif + El + E_l.glif + Em + E_m.glif + Emacron + E_macron.glif + En + E_n.glif + Endescender + E_ndescender.glif + Eng + E_ng.glif + Eogonek + E_ogonek.glif + Epsilon + E_psilon.glif + Epsilontonos + E_psilontonos.glif + Er + E_r.glif + Es + E_s.glif + Esdescender + E_sdescender.glif + Eta + E_ta.glif + Etatonos + E_tatonos.glif + Eth + E_th.glif + Etilde + E_tilde.glif + Euro + E_uro.glif + Fita + F_ita.glif + Gamma + G_amma.glif + Gbreve + G_breve.glif + Gcaron + G_caron.glif + Gcircumflex + G_circumflex.glif + Gcommaaccent + G_commaaccent.glif + Gdotaccent + G_dotaccent.glif + Germandbls + G_ermandbls.glif + Ghe + G_he.glif + Ghestroke + G_hestroke.glif + Gheup + G_heup.glif + Gje + G_je.glif + Gmacron + G_macron.glif + Ha + H_a.glif + Hadescender + H_adescender.glif + Hard + H_ard.glif + Hbar + H_bar.glif + Hbrevebelow + H_brevebelow.glif + Hcircumflex + H_circumflex.glif + Hdotbelow + H_dotbelow.glif + IJ + I_J_.glif + Iacute + I_acute.glif + Icaron + I_caron.glif + Icircumflex + I_circumflex.glif + Icyr + I_cyr.glif + Idieresis + I_dieresis.glif + Idotaccent + I_dotaccent.glif + Idotbelow + I_dotbelow.glif + Ie + I_e.glif + Iebreve + I_ebreve.glif + Iegrave + I_egrave.glif + Ieukran + I_eukran.glif + Igrave + I_grave.glif + Igravecyr + I_gravecyr.glif + Ihoi + I_hoi.glif + Imacron + I_macron.glif + Imacroncyr + I_macroncyr.glif + Io + I_o.glif + Iogonek + I_ogonek.glif + Iota + I_ota.glif + Iotadieresis + I_otadieresis.glif + Iotatonos + I_otatonos.glif + Ishort + I_short.glif + Itilde + I_tilde.glif + Iukran + I_ukran.glif + Izhitsa + I_zhitsa.glif + Jcircumflex + J_circumflex.glif + Je + J_e.glif + Ka + K_a.glif + Kabashkir + K_abashkir.glif + Kadescender + K_adescender.glif + Kappa + K_appa.glif + Kcommaaccent + K_commaaccent.glif + Kje + K_je.glif + Lacute + L_acute.glif + Lambda + L_ambda.glif + Lcaron + L_caron.glif + Lcommaaccent + L_commaaccent.glif + Ldot + L_dot.glif + Ldotbelow + L_dotbelow.glif + Ldotbelowmacron + L_dotbelowmacron.glif + Lje + L_je.glif + Llinebelow + L_linebelow.glif + Lslash + L_slash.glif + Macute + M_acute.glif + Mdotbelow + M_dotbelow.glif + Mu + M_u.glif + Nacute + N_acute.glif + Ncaron + N_caron.glif + Ncommaaccent + N_commaaccent.glif + Ndotaccent + N_dotaccent.glif + Ndotbelow + N_dotbelow.glif + Ngrave + N_grave.glif + Nje + N_je.glif + Nlinebelow + N_linebelow.glif + Ntilde + N_tilde.glif + Nu + N_u.glif + OE + O_E_.glif + Oacute + O_acute.glif + Obarcyr + O_barcyr.glif + Obreve + O_breve.glif + Ocaron + O_caron.glif + Ocircumflex + O_circumflex.glif + Ocircumflexacute + O_circumflexacute.glif + Ocircumflexdotbelow + O_circumflexdotbelow.glif + Ocircumflexgrave + O_circumflexgrave.glif + Ocircumflexhoi + O_circumflexhoi.glif + Ocircumflextilde + O_circumflextilde.glif + Ocyr + O_cyr.glif + Odieresis + O_dieresis.glif + Odieresiscyr + O_dieresiscyr.glif + Odotbelow + O_dotbelow.glif + Ograve + O_grave.glif + Ohoi + O_hoi.glif + Ohorn + O_horn.glif + Ohornacute + O_hornacute.glif + Ohorndotbelow + O_horndotbelow.glif + Ohorngrave + O_horngrave.glif + Ohornhoi + O_hornhoi.glif + Ohorntilde + O_horntilde.glif + Ohungarumlaut + O_hungarumlaut.glif + Omacron + O_macron.glif + Omega + O_mega.glif + Omegatonos + O_megatonos.glif + Omicron + O_micron.glif + Omicrontonos + O_microntonos.glif + Oslash + O_slash.glif + Otilde + O_tilde.glif + Palochka + P_alochka.glif + Pe + P_e.glif + Phi + P_hi.glif + Pi + P_i.glif + Psi + P_si.glif + Racute + R_acute.glif + Rcaron + R_caron.glif + Rcommaaccent + R_commaaccent.glif + Rdotbelow + R_dotbelow.glif + Rdotbelowmacron + R_dotbelowmacron.glif + Rho + R_ho.glif + Rlinebelow + R_linebelow.glif + Sacute + S_acute.glif + Scaron + S_caron.glif + Scedilla + S_cedilla.glif + Schwa + S_chwa.glif + Schwacyr + S_chwacyr.glif + Scircumflex + S_circumflex.glif + Scommaaccent + S_commaaccent.glif + Sdotaccent + S_dotaccent.glif + Sdotbelow + S_dotbelow.glif + Sha + S_ha.glif + Shcha + S_hcha.glif + Shha + S_hha.glif + Sigma + S_igma.glif + Soft + S_oft.glif + Tau + T_au.glif + Tbar + T_bar.glif + Tcaron + T_caron.glif + Tcedilla + T_cedilla.glif + Tcommaaccent + T_commaaccent.glif + Tdotbelow + T_dotbelow.glif + Te + T_e.glif + Theta + T_heta.glif + Thorn + T_horn.glif + Tlinebelow + T_linebelow.glif + Tse + T_se.glif + Tshe + T_she.glif + Uacute + U_acute.glif + Uacutedblcyr + U_acutedblcyr.glif + Ubreve + U_breve.glif + Ucaron + U_caron.glif + Ucircumflex + U_circumflex.glif + Ucyr + U_cyr.glif + Udieresis + U_dieresis.glif + Udieresisacute + U_dieresisacute.glif + Udieresiscaron + U_dieresiscaron.glif + Udieresisgrave + U_dieresisgrave.glif + Udieresismacron + U_dieresismacron.glif + Udotbelow + U_dotbelow.glif + Ugrave + U_grave.glif + Uhoi + U_hoi.glif + Uhorn + U_horn.glif + Uhornacute + U_hornacute.glif + Uhorndotbelow + U_horndotbelow.glif + Uhorngrave + U_horngrave.glif + Uhornhoi + U_hornhoi.glif + Uhorntilde + U_horntilde.glif + Uhungarumlaut + U_hungarumlaut.glif + Umacron + U_macron.glif + Umacroncyr + U_macroncyr.glif + Uogonek + U_ogonek.glif + Upsilon + U_psilon.glif + Upsilondieresis + U_psilondieresis.glif + Upsilontonos + U_psilontonos.glif + Uring + U_ring.glif + Ushort + U_short.glif + Ustraight + U_straight.glif + Ustraightstroke + U_straightstroke.glif + Utilde + U_tilde.glif + Ve + V_e.glif + Wacute + W_acute.glif + Wcircumflex + W_circumflex.glif + Wdieresis + W_dieresis.glif + Wgrave + W_grave.glif + Xi + X_i.glif + Ya + Y_a.glif + Yacute + Y_acute.glif + Yat + Y_at.glif + Ycircumflex + Y_circumflex.glif + Ydieresis + Y_dieresis.glif + Ydotaccent + Y_dotaccent.glif + Ydotbelow + Y_dotbelow.glif + Yeru + Y_eru.glif + Ygrave + Y_grave.glif + Yhoi + Y_hoi.glif + Yi + Y_i.glif + Ytilde + Y_tilde.glif + Yu + Y_u.glif + Zacute + Z_acute.glif + Zcaron + Z_caron.glif + Zdotaccent + Z_dotaccent.glif + Zdotbelow + Z_dotbelow.glif + Ze + Z_e.glif + Zedescender + Z_edescender.glif + Zeta + Z_eta.glif + Zhe + Z_he.glif + Zhebreve + Z_hebreve.glif + Zhedescender + Z_hedescender.glif + a.sups + a.sups.glif + aacute + aacute.glif + abreve + abreve.glif + abreveacute + abreveacute.glif + abrevecyr + abrevecyr.glif + abrevedotbelow + abrevedotbelow.glif + abrevegrave + abrevegrave.glif + abrevehoi + abrevehoi.glif + abrevetilde + abrevetilde.glif + acaron + acaron.glif + acircumflex + acircumflex.glif + acircumflexacute + acircumflexacute.glif + acircumflexdotbelow + acircumflexdotbelow.glif + acircumflexgrave + acircumflexgrave.glif + acircumflexhoi + acircumflexhoi.glif + acircumflextilde + acircumflextilde.glif + acute + acute.glif + acutecmb + acutecmb.glif + acyr + acyr.glif + adieresis + adieresis.glif + adotbelow + adotbelow.glif + ae + ae.glif + agrave + agrave.glif + ahoi + ahoi.glif + aie + aie.glif + alpha + alpha.glif + alphalatin + alphalatin.glif + alphatonos + alphatonos.glif + amacron + amacron.glif + anoteleia + anoteleia.glif + aogonek + aogonek.glif + approxequal + approxequal.glif + aring + aring.glif + arrowdown + arrowdown.glif + arrowdownleft + arrowdownleft.glif + arrowdownright + arrowdownright.glif + arrowleft + arrowleft.glif + arrowright + arrowright.glif + arrowup + arrowup.glif + arrowupleft + arrowupleft.glif + arrowupright + arrowupright.glif + atilde + atilde.glif + b.sups + b.sups.glif + be + be.glif + beta + beta.glif + bitcoin + bitcoin.glif + breve + breve.glif + brevebelowcmb + brevebelowcmb.glif + brevecmb + brevecmb.glif + brokenbar + brokenbar.glif + bullet + bullet.glif + bulletoperator + bulletoperator.glif + c.sups + c.sups.glif + cacute + cacute.glif + caron + caron.glif + caroncmb + caroncmb.glif + ccaron + ccaron.glif + ccedilla + ccedilla.glif + ccircumflex + ccircumflex.glif + cdotaccent + cdotaccent.glif + cedi + cedi.glif + cedilla + cedilla.glif + cedillacmb + cedillacmb.glif + cent + cent.glif + che + che.glif + check + check.glif + checkbox + checkbox.glif + checkedbox + checkedbox.glif + chedescender + chedescender.glif + chi + chi.glif + circumflex + circumflex.glif + circumflexcmb + circumflexcmb.glif + colonmonetary + colonmonetary.glif + colontriangularmod + colontriangularmod.glif + commabelowcmb + commabelowcmb.glif + commercemark + commercemark.glif + copyleft + copyleft.glif + copyright + copyright.glif + currency + currency.glif + d.sups + d.sups.glif + dagger + dagger.glif + daggerdbl + daggerdbl.glif + dblprime + dblprime.glif + dcaron + dcaron.glif + dcroat + dcroat.glif + ddotbelow + ddotbelow.glif + de + de.glif + degree + degree.glif + delta + delta.glif + deposeemark + deposeemark.glif + diamondblack + diamondblack.glif + dieresis + dieresis.glif + dieresisbelowcmb + dieresisbelowcmb.glif + dieresiscmb + dieresiscmb.glif + dieresistonos + dieresistonos.glif + digamma + digamma.glif + divide + divide.glif + divisionslash + divisionslash.glif + dje + dje.glif + dlinebelow + dlinebelow.glif + dngb:cross + dngb_cross.glif + dong + dong.glif + dotaccent + dotaccent.glif + dotaccentcmb + dotaccentcmb.glif + dotbelowcmb + dotbelowcmb.glif + dotlessi + dotlessi.glif + dotlessj + dotlessj.glif + dze + dze.glif + dzhe + dzhe.glif + e.sups + e.sups.glif + eacute + eacute.glif + ebreve + ebreve.glif + ecaron + ecaron.glif + ecircumflex + ecircumflex.glif + ecircumflexacute + ecircumflexacute.glif + ecircumflexdotbelow + ecircumflexdotbelow.glif + ecircumflexgrave + ecircumflexgrave.glif + ecircumflexhoi + ecircumflexhoi.glif + ecircumflextilde + ecircumflextilde.glif + ecyr + ecyr.glif + edieresis + edieresis.glif + edotaccent + edotaccent.glif + edotbelow + edotbelow.glif + ef + ef.glif + egrave + egrave.glif + ehoi + ehoi.glif + eight.subs + eight.subs.glif + eight.sups + eight.sups.glif + eighthnote + eighthnote.glif + el + el.glif + ellipsis + ellipsis.glif + em + em.glif + emacron + emacron.glif + emdash + emdash.glif + en + en.glif + endash + endash.glif + endescender + endescender.glif + eng + eng.glif + eogonek + eogonek.glif + epsilon + epsilon.glif + epsilontonos + epsilontonos.glif + er + er.glif + es + es.glif + esdescender + esdescender.glif + estimated + estimated.glif + eta + eta.glif + etatonos + etatonos.glif + eth + eth.glif + etilde + etilde.glif + exclamdbl + exclamdbl.glif + exclamdown + exclamdown.glif + exclamquestion + exclamquestion.glif + f.sups + f.sups.glif + f_f + f_f.glif + f_f_i + f_f_i.glif + f_f_l + f_f_l.glif + f_i + f_i.glif + f_l + f_l.glif + figuredash + figuredash.glif + figurespace + figurespace.glif + fisheye + fisheye.glif + fita + fita.glif + five.subs + five.subs.glif + five.sups + five.sups.glif + fiveeighths + fiveeighths.glif + florin + florin.glif + four.subs + four.subs.glif + four.sups + four.sups.glif + fraction + fraction.glif + g.sups + g.sups.glif + gamma + gamma.glif + gbreve + gbreve.glif + gcaron + gcaron.glif + gcircumflex + gcircumflex.glif + gcommaaccent + gcommaaccent.glif + gdotaccent + gdotaccent.glif + germandbls + germandbls.glif + ghe + ghe.glif + ghestroke + ghestroke.glif + gheup + gheup.glif + gje + gje.glif + gmacron + gmacron.glif + gravecmb + gravecmb.glif + greaterequal + greaterequal.glif + gscript + gscript.glif + guarani + guarani.glif + guillemotleft + guillemotleft.glif + guillemotright + guillemotright.glif + guilsinglleft + guilsinglleft.glif + guilsinglright + guilsinglright.glif + h.sups + h.sups.glif + ha + ha.glif + hadescender + hadescender.glif + hard + hard.glif + hbar + hbar.glif + hbrevebelow + hbrevebelow.glif + hcircumflex + hcircumflex.glif + hdotbelow + hdotbelow.glif + hoicmb + hoicmb.glif + horizontalbar + horizontalbar.glif + horncmb + horncmb.glif + hryvnia + hryvnia.glif + hungarumlaut + hungarumlaut.glif + hungarumlautcmb + hungarumlautcmb.glif + i.sups + i.sups.glif + iacute + iacute.glif + icaron + icaron.glif + icircumflex + icircumflex.glif + icyr + icyr.glif + idieresis + idieresis.glif + idotbelow + idotbelow.glif + ie + ie.glif + iebreve + iebreve.glif + iegrave + iegrave.glif + ieukran + ieukran.glif + igrave + igrave.glif + igravecyr + igravecyr.glif + ihoi + ihoi.glif + ij + ij.glif + imacron + imacron.glif + imacroncyr + imacroncyr.glif + infinity + infinity.glif + integral + integral.glif + io + io.glif + iogonek + iogonek.glif + iota + iota.glif + iotadieresis + iotadieresis.glif + iotadieresistonos + iotadieresistonos.glif + iotatonos + iotatonos.glif + ishort + ishort.glif + itilde + itilde.glif + iukran + iukran.glif + izhitsa + izhitsa.glif + j.sups + j.sups.glif + jcircumflex + jcircumflex.glif + je + je.glif + k.sups + k.sups.glif + ka + ka.glif + kabashkir + kabashkir.glif + kadescender + kadescender.glif + kai + kai.glif + kappa + kappa.glif + kcommaaccent + kcommaaccent.glif + kgreenlandic + kgreenlandic.glif + kje + kje.glif + koppa + koppa.glif + l.sups + l.sups.glif + lacute + lacute.glif + lambda + lambda.glif + lcaron + lcaron.glif + lcommaaccent + lcommaaccent.glif + ldot + ldot.glif + ldotbelow + ldotbelow.glif + ldotbelowmacron + ldotbelowmacron.glif + lessequal + lessequal.glif + lira + lira.glif + liraturkish + liraturkish.glif + litre + litre.glif + lje + lje.glif + llinebelow + llinebelow.glif + logicalnot + logicalnot.glif + longs + longs.glif + lownumeralsign + lownumeralsign.glif + lozenge + lozenge.glif + lslash + lslash.glif + m.sups + m.sups.glif + macronbelowcmb + macronbelowcmb.glif + macroncmb + macroncmb.glif + macronmod + macronmod.glif + macute + macute.glif + mdotbelow + mdotbelow.glif + minus + minus.glif + mu + mu.glif + multiply + multiply.glif + n.sups + n.sups.glif + nacute + nacute.glif + naira + naira.glif + napostrophe + napostrophe.glif + ncaron + ncaron.glif + ncommaaccent + ncommaaccent.glif + ndotaccent + ndotaccent.glif + ndotbelow + ndotbelow.glif + ngrave + ngrave.glif + nine.subs + nine.subs.glif + nine.sups + nine.sups.glif + nje + nje.glif + nlinebelow + nlinebelow.glif + notequal + notequal.glif + ntilde + ntilde.glif + nu + nu.glif + numeralsign + numeralsign.glif + numero + numero.glif + o.sups + o.sups.glif + oacute + oacute.glif + obarcyr + obarcyr.glif + obreve + obreve.glif + ocaron + ocaron.glif + ocircumflex + ocircumflex.glif + ocircumflexacute + ocircumflexacute.glif + ocircumflexdotbelow + ocircumflexdotbelow.glif + ocircumflexgrave + ocircumflexgrave.glif + ocircumflexhoi + ocircumflexhoi.glif + ocircumflextilde + ocircumflextilde.glif + ocyr + ocyr.glif + odieresis + odieresis.glif + odieresiscyr + odieresiscyr.glif + odotbelow + odotbelow.glif + oe + oe.glif + ogonek + ogonek.glif + ogonekcmb + ogonekcmb.glif + ograve + ograve.glif + ohoi + ohoi.glif + ohorn + ohorn.glif + ohornacute + ohornacute.glif + ohorndotbelow + ohorndotbelow.glif + ohorngrave + ohorngrave.glif + ohornhoi + ohornhoi.glif + ohorntilde + ohorntilde.glif + ohungarumlaut + ohungarumlaut.glif + omacron + omacron.glif + omega + omega.glif + omegatonos + omegatonos.glif + omicron + omicron.glif + omicrontonos + omicrontonos.glif + one.subs + one.subs.glif + one.sups + one.sups.glif + oneeighth + oneeighth.glif + onehalf + onehalf.glif + onequarter + onequarter.glif + onethird + onethird.glif + ordfeminine + ordfeminine.glif + ordmasculine + ordmasculine.glif + oslash + oslash.glif + otilde + otilde.glif + overline + overline.glif + p.sups + p.sups.glif + palochka + palochka.glif + paragraph + paragraph.glif + parenleft.subs + parenleft.subs.glif + parenleft.sups + parenleft.sups.glif + parenright.subs + parenright.subs.glif + parenright.sups + parenright.sups.glif + partialdiff + partialdiff.glif + pe + pe.glif + periodcentered + periodcentered.glif + perthousand + perthousand.glif + peseta + peseta.glif + peso + peso.glif + phi + phi.glif + pi + pi.glif + plusminus + plusminus.glif + prime + prime.glif + product + product.glif + psi + psi.glif + questiondbl + questiondbl.glif + questiondown + questiondown.glif + questionexclam + questionexclam.glif + questiongreek + questiongreek.glif + quotedblbase + quotedblbase.glif + quotedblleft + quotedblleft.glif + quotedblright + quotedblright.glif + quoteleft + quoteleft.glif + quoteright + quoteright.glif + quotesinglbase + quotesinglbase.glif + r.sups + r.sups.glif + racute + racute.glif + radical + radical.glif + rcaron + rcaron.glif + rcommaaccent + rcommaaccent.glif + rdotbelow + rdotbelow.glif + rdotbelowmacron + rdotbelowmacron.glif + registered + registered.glif + rho + rho.glif + ring + ring.glif + ringcmb + ringcmb.glif + ringhalfleftmod + ringhalfleftmod.glif + ringhalfrightmod + ringhalfrightmod.glif + rlinebelow + rlinebelow.glif + ruble + ruble.glif + rupeeindian + rupeeindian.glif + s.sups + s.sups.glif + sacute + sacute.glif + sampi + sampi.glif + scaron + scaron.glif + scedilla + scedilla.glif + schwa + schwa.glif + schwacyr + schwacyr.glif + scircumflex + scircumflex.glif + scommaaccent + scommaaccent.glif + sdotaccent + sdotaccent.glif + sdotbelow + sdotbelow.glif + section + section.glif + servicemark + servicemark.glif + seven.subs + seven.subs.glif + seven.sups + seven.sups.glif + seveneighths + seveneighths.glif + sha + sha.glif + shcha + shcha.glif + shha + shha.glif + sigma + sigma.glif + sigma.end + sigma.end.glif + similar + similar.glif + six.subs + six.subs.glif + six.sups + six.sups.glif + soft + soft.glif + soundcopyright + soundcopyright.glif + squareblack + squareblack.glif + squareshadow + squareshadow.glif + sterling + sterling.glif + stigma + stigma.glif + summation + summation.glif + t.sups + t.sups.glif + tau + tau.glif + tbar + tbar.glif + tcaron + tcaron.glif + tcedilla + tcedilla.glif + tcommaaccent + tcommaaccent.glif + tdieresis + tdieresis.glif + tdotbelow + tdotbelow.glif + te + te.glif + tenge + tenge.glif + theta + theta.glif + thorn + thorn.glif + three.subs + three.subs.glif + three.sups + three.sups.glif + threeeighths + threeeighths.glif + threeemdash + threeemdash.glif + threequarters + threequarters.glif + tilde + tilde.glif + tildecmb + tildecmb.glif + tlinebelow + tlinebelow.glif + tonos + tonos.glif + trademark + trademark.glif + triangleblackdown + triangleblackdown.glif + triangleblackleft + triangleblackleft.glif + triangleblackright + triangleblackright.glif + triangleblackup + triangleblackup.glif + trianglewhitedown + trianglewhitedown.glif + trianglewhiteleft + trianglewhiteleft.glif + trianglewhiteright + trianglewhiteright.glif + trianglewhiteup + trianglewhiteup.glif + triangularbullet + triangularbullet.glif + tse + tse.glif + tshe + tshe.glif + tugrik + tugrik.glif + two.subs + two.subs.glif + two.sups + two.sups.glif + twodotenleader + twodotenleader.glif + twoemdash + twoemdash.glif + twothirds + twothirds.glif + u.sups + u.sups.glif + uacute + uacute.glif + uacutedblcyr + uacutedblcyr.glif + ubreve + ubreve.glif + ucaron + ucaron.glif + ucircumflex + ucircumflex.glif + ucyr + ucyr.glif + udieresis + udieresis.glif + udieresisacute + udieresisacute.glif + udieresiscaron + udieresiscaron.glif + udieresisgrave + udieresisgrave.glif + udieresismacron + udieresismacron.glif + udotbelow + udotbelow.glif + ugrave + ugrave.glif + uhoi + uhoi.glif + uhorn + uhorn.glif + uhornacute + uhornacute.glif + uhorndotbelow + uhorndotbelow.glif + uhorngrave + uhorngrave.glif + uhornhoi + uhornhoi.glif + uhorntilde + uhorntilde.glif + uhungarumlaut + uhungarumlaut.glif + umacron + umacron.glif + umacroncyr + umacroncyr.glif + uogonek + uogonek.glif + upsilon + upsilon.glif + upsilondieresis + upsilondieresis.glif + upsilondieresistonos + upsilondieresistonos.glif + upsilontonos + upsilontonos.glif + uring + uring.glif + ushort + ushort.glif + ustraight + ustraight.glif + ustraightstroke + ustraightstroke.glif + utilde + utilde.glif + v.sups + v.sups.glif + ve + ve.glif + verticallinebelowcmb + verticallinebelowcmb.glif + verticallinelowmod + verticallinelowmod.glif + verticallinemod + verticallinemod.glif + w.sups + w.sups.glif + wacute + wacute.glif + wcircumflex + wcircumflex.glif + wdieresis + wdieresis.glif + wgrave + wgrave.glif + won + won.glif + x.sups + x.sups.glif + xi + xi.glif + y.sups + y.sups.glif + ya + ya.glif + yacute + yacute.glif + yat + yat.glif + ycircumflex + ycircumflex.glif + ydieresis + ydieresis.glif + ydotaccent + ydotaccent.glif + ydotbelow + ydotbelow.glif + yen + yen.glif + yeru + yeru.glif + ygrave + ygrave.glif + yhoi + yhoi.glif + yi + yi.glif + ytilde + ytilde.glif + yu + yu.glif + z.sups + z.sups.glif + zacute + zacute.glif + zcaron + zcaron.glif + zdotaccent + zdotaccent.glif + zdotbelow + zdotbelow.glif + ze + ze.glif + zedescender + zedescender.glif + zero.subs + zero.subs.glif + zero.sups + zero.sups.glif + zeta + zeta.glif + zhe + zhe.glif + zhebreve + zhebreve.glif + zhedescender + zhedescender.glif + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/copyleft.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/copyleft.glif new file mode 100644 index 000000000..e22789b36 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/copyleft.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/copyright.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/copyright.glif new file mode 100644 index 000000000..4f77528ed --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/copyright.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/currency.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/currency.glif new file mode 100644 index 000000000..956657cd0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/currency.glif @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/d.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/d.sups.glif new file mode 100644 index 000000000..23721313e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/d.sups.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dagger.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dagger.glif new file mode 100644 index 000000000..a7151d4e0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dagger.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/daggerdbl.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/daggerdbl.glif new file mode 100644 index 000000000..d46081730 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/daggerdbl.glif @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dblprime.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dblprime.glif new file mode 100644 index 000000000..0354ad1ef --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dblprime.glif @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dcaron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dcaron.glif new file mode 100644 index 000000000..bfa92a771 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dcaron.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dcroat.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dcroat.glif new file mode 100644 index 000000000..a18967462 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dcroat.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ddotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ddotbelow.glif new file mode 100644 index 000000000..15a578afe --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ddotbelow.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/de.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/de.glif new file mode 100644 index 000000000..b5768b73c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/de.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/degree.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/degree.glif new file mode 100644 index 000000000..c83f03143 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/degree.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/delta.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/delta.glif new file mode 100644 index 000000000..a86227d2f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/delta.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/deposeemark.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/deposeemark.glif new file mode 100644 index 000000000..d61f03f68 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/deposeemark.glif @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/diamondblack.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/diamondblack.glif new file mode 100644 index 000000000..fc56073cb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/diamondblack.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dieresis.glif new file mode 100644 index 000000000..2e25f7098 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dieresis.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dieresisbelowcmb.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dieresisbelowcmb.glif new file mode 100644 index 000000000..1d03e04ed --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dieresisbelowcmb.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dieresiscmb.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dieresiscmb.glif new file mode 100644 index 000000000..f13d24538 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dieresiscmb.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dieresistonos.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dieresistonos.glif new file mode 100644 index 000000000..fb1649c13 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dieresistonos.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/digamma.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/digamma.glif new file mode 100644 index 000000000..e34d1ca42 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/digamma.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/divide.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/divide.glif new file mode 100644 index 000000000..ede58ba47 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/divide.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/divisionslash.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/divisionslash.glif new file mode 100644 index 000000000..f2ed9a2af --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/divisionslash.glif @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dje.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dje.glif new file mode 100644 index 000000000..1969f731f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dje.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dlinebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dlinebelow.glif new file mode 100644 index 000000000..ad4b611c0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dlinebelow.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dngb_cross.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dngb_cross.glif new file mode 100644 index 000000000..aeabf0669 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dngb_cross.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dong.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dong.glif new file mode 100644 index 000000000..924e94116 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dong.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dotaccent.glif new file mode 100644 index 000000000..de42e7a39 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dotaccent.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dotaccentcmb.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dotaccentcmb.glif new file mode 100644 index 000000000..6194947fb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dotaccentcmb.glif @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dotbelowcmb.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dotbelowcmb.glif new file mode 100644 index 000000000..2d14f476c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dotbelowcmb.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dotlessi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dotlessi.glif new file mode 100644 index 000000000..e1e6bbc08 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dotlessi.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dotlessj.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dotlessj.glif new file mode 100644 index 000000000..7a19d65d5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dotlessj.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dze.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dze.glif new file mode 100644 index 000000000..a29ced1f5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dze.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dzhe.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dzhe.glif new file mode 100644 index 000000000..f2d53e6b2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/dzhe.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/e.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/e.sups.glif new file mode 100644 index 000000000..5c3719f47 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/e.sups.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/eacute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/eacute.glif new file mode 100644 index 000000000..8590b4aeb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/eacute.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ebreve.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ebreve.glif new file mode 100644 index 000000000..51741336f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ebreve.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ecaron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ecaron.glif new file mode 100644 index 000000000..148da8aaa --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ecaron.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ecircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ecircumflex.glif new file mode 100644 index 000000000..dafe7553c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ecircumflex.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ecircumflexacute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ecircumflexacute.glif new file mode 100644 index 000000000..09b010530 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ecircumflexacute.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ecircumflexdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ecircumflexdotbelow.glif new file mode 100644 index 000000000..06e023caf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ecircumflexdotbelow.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ecircumflexgrave.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ecircumflexgrave.glif new file mode 100644 index 000000000..8b083c064 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ecircumflexgrave.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ecircumflexhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ecircumflexhoi.glif new file mode 100644 index 000000000..d400d9375 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ecircumflexhoi.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ecircumflextilde.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ecircumflextilde.glif new file mode 100644 index 000000000..0757049c4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ecircumflextilde.glif @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ecyr.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ecyr.glif new file mode 100644 index 000000000..2dd1e5116 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ecyr.glif @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/edieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/edieresis.glif new file mode 100644 index 000000000..b43ddfd9f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/edieresis.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/edotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/edotaccent.glif new file mode 100644 index 000000000..edcb6e756 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/edotaccent.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/edotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/edotbelow.glif new file mode 100644 index 000000000..10c9ba807 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/edotbelow.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ef.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ef.glif new file mode 100644 index 000000000..e0e273fc3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ef.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/egrave.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/egrave.glif new file mode 100644 index 000000000..afc403fd0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/egrave.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ehoi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ehoi.glif new file mode 100644 index 000000000..8b8021fe4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ehoi.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/eight.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/eight.subs.glif new file mode 100644 index 000000000..d6fa023bf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/eight.subs.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/eight.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/eight.sups.glif new file mode 100644 index 000000000..e647deb2f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/eight.sups.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/eighthnote.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/eighthnote.glif new file mode 100644 index 000000000..09525afe0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/eighthnote.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/el.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/el.glif new file mode 100644 index 000000000..4e2bb9ce2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/el.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ellipsis.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ellipsis.glif new file mode 100644 index 000000000..9325422cf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ellipsis.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/em.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/em.glif new file mode 100644 index 000000000..21015d61c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/em.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/emacron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/emacron.glif new file mode 100644 index 000000000..fb6dac1b2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/emacron.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/emdash.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/emdash.glif new file mode 100644 index 000000000..c4f9f36d1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/emdash.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/en.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/en.glif new file mode 100644 index 000000000..dc7fe81de --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/en.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/endash.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/endash.glif new file mode 100644 index 000000000..d1ac007ad --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/endash.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/endescender.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/endescender.glif new file mode 100644 index 000000000..5a769e70d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/endescender.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/eng.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/eng.glif new file mode 100644 index 000000000..17423f0ec --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/eng.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/eogonek.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/eogonek.glif new file mode 100644 index 000000000..3c2e514b0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/eogonek.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/epsilon.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/epsilon.glif new file mode 100644 index 000000000..7103677c9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/epsilon.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/epsilontonos.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/epsilontonos.glif new file mode 100644 index 000000000..ed09ffb89 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/epsilontonos.glif @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/er.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/er.glif new file mode 100644 index 000000000..a326ebc8a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/er.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/es.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/es.glif new file mode 100644 index 000000000..fbf069538 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/es.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/esdescender.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/esdescender.glif new file mode 100644 index 000000000..fe64a34a1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/esdescender.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/estimated.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/estimated.glif new file mode 100644 index 000000000..539c6c77e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/estimated.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/eta.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/eta.glif new file mode 100644 index 000000000..0768f67f4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/eta.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/etatonos.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/etatonos.glif new file mode 100644 index 000000000..73da9ae6d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/etatonos.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/eth.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/eth.glif new file mode 100644 index 000000000..34188038a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/eth.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/etilde.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/etilde.glif new file mode 100644 index 000000000..b1b98e986 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/etilde.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/exclamdbl.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/exclamdbl.glif new file mode 100644 index 000000000..ef740e791 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/exclamdbl.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/exclamdown.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/exclamdown.glif new file mode 100644 index 000000000..d4c1568af --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/exclamdown.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/exclamquestion.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/exclamquestion.glif new file mode 100644 index 000000000..06fa274a1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/exclamquestion.glif @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/f.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/f.sups.glif new file mode 100644 index 000000000..eaf7ad1c2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/f.sups.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/f_f.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/f_f.glif new file mode 100644 index 000000000..e9da2ef12 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/f_f.glif @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/f_f_i.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/f_f_i.glif new file mode 100644 index 000000000..eff1f2bee --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/f_f_i.glif @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/f_f_l.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/f_f_l.glif new file mode 100644 index 000000000..e2013e9db --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/f_f_l.glif @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/f_i.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/f_i.glif new file mode 100644 index 000000000..b00439d62 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/f_i.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/f_l.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/f_l.glif new file mode 100644 index 000000000..11a099a0d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/f_l.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/figuredash.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/figuredash.glif new file mode 100644 index 000000000..59738715f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/figuredash.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/figurespace.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/figurespace.glif new file mode 100644 index 000000000..41809ef7a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/figurespace.glif @@ -0,0 +1,5 @@ + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/fisheye.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/fisheye.glif new file mode 100644 index 000000000..fcec83053 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/fisheye.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/fita.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/fita.glif new file mode 100644 index 000000000..cee1277d0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/fita.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/five.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/five.subs.glif new file mode 100644 index 000000000..eb6fce7e7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/five.subs.glif @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/five.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/five.sups.glif new file mode 100644 index 000000000..17a6f9d2e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/five.sups.glif @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/fiveeighths.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/fiveeighths.glif new file mode 100644 index 000000000..76d659fa2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/fiveeighths.glif @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/florin.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/florin.glif new file mode 100644 index 000000000..efeb94b58 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/florin.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/four.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/four.subs.glif new file mode 100644 index 000000000..1f343e8a1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/four.subs.glif @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/four.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/four.sups.glif new file mode 100644 index 000000000..df49f1966 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/four.sups.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/fraction.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/fraction.glif new file mode 100644 index 000000000..09f03171b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/fraction.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/g.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/g.sups.glif new file mode 100644 index 000000000..6f9494db0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/g.sups.glif @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gamma.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gamma.glif new file mode 100644 index 000000000..f8f0fc967 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gamma.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gbreve.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gbreve.glif new file mode 100644 index 000000000..053de70a8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gbreve.glif @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gcaron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gcaron.glif new file mode 100644 index 000000000..4cb0079fb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gcaron.glif @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gcircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gcircumflex.glif new file mode 100644 index 000000000..82b160461 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gcircumflex.glif @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gcommaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gcommaaccent.glif new file mode 100644 index 000000000..c51cfbab6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gcommaaccent.glif @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gdotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gdotaccent.glif new file mode 100644 index 000000000..27d344308 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gdotaccent.glif @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/germandbls.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/germandbls.glif new file mode 100644 index 000000000..e800c16b8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/germandbls.glif @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ghe.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ghe.glif new file mode 100644 index 000000000..fcc03e66a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ghe.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ghestroke.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ghestroke.glif new file mode 100644 index 000000000..21037076b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ghestroke.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gheup.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gheup.glif new file mode 100644 index 000000000..d2f04fd13 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gheup.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gje.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gje.glif new file mode 100644 index 000000000..f3673f82a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gje.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gmacron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gmacron.glif new file mode 100644 index 000000000..4189abc65 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gmacron.glif @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gravecmb.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gravecmb.glif new file mode 100644 index 000000000..31f87ef9f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gravecmb.glif @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/greaterequal.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/greaterequal.glif new file mode 100644 index 000000000..457a65319 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/greaterequal.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gscript.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gscript.glif new file mode 100644 index 000000000..d1c32004f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/gscript.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/guarani.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/guarani.glif new file mode 100644 index 000000000..01fc2d22a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/guarani.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/guillemotleft.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/guillemotleft.glif new file mode 100644 index 000000000..f5a6d05b7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/guillemotleft.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/guillemotright.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/guillemotright.glif new file mode 100644 index 000000000..12846b633 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/guillemotright.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/guilsinglleft.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/guilsinglleft.glif new file mode 100644 index 000000000..b86bf83ce --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/guilsinglleft.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/guilsinglright.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/guilsinglright.glif new file mode 100644 index 000000000..4aad6db5d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/guilsinglright.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/h.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/h.sups.glif new file mode 100644 index 000000000..77f73846d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/h.sups.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ha.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ha.glif new file mode 100644 index 000000000..2484e4e54 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ha.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hadescender.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hadescender.glif new file mode 100644 index 000000000..34db6b33a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hadescender.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hard.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hard.glif new file mode 100644 index 000000000..aed1646c1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hard.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hbar.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hbar.glif new file mode 100644 index 000000000..fbd114c92 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hbar.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hbrevebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hbrevebelow.glif new file mode 100644 index 000000000..4495fec64 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hbrevebelow.glif @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hcircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hcircumflex.glif new file mode 100644 index 000000000..45fae2fc4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hcircumflex.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hdotbelow.glif new file mode 100644 index 000000000..e89cae96e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hdotbelow.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hoicmb.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hoicmb.glif new file mode 100644 index 000000000..d1884a348 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hoicmb.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/horizontalbar.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/horizontalbar.glif new file mode 100644 index 000000000..e0b2a889c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/horizontalbar.glif @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/horncmb.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/horncmb.glif new file mode 100644 index 000000000..6ad8fe424 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/horncmb.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hryvnia.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hryvnia.glif new file mode 100644 index 000000000..df80b5a30 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hryvnia.glif @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hungarumlaut.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hungarumlaut.glif new file mode 100644 index 000000000..aa26f07ef --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hungarumlaut.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hungarumlautcmb.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hungarumlautcmb.glif new file mode 100644 index 000000000..e1cb6ca8c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/hungarumlautcmb.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/i.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/i.sups.glif new file mode 100644 index 000000000..8147a681c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/i.sups.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iacute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iacute.glif new file mode 100644 index 000000000..919a4e7af --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iacute.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/icaron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/icaron.glif new file mode 100644 index 000000000..27077c996 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/icaron.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/icircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/icircumflex.glif new file mode 100644 index 000000000..795be0b54 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/icircumflex.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/icyr.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/icyr.glif new file mode 100644 index 000000000..24f9c8b4a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/icyr.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/idieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/idieresis.glif new file mode 100644 index 000000000..1332b2ce6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/idieresis.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/idotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/idotbelow.glif new file mode 100644 index 000000000..67cfc46a1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/idotbelow.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ie.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ie.glif new file mode 100644 index 000000000..f7f01883d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ie.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iebreve.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iebreve.glif new file mode 100644 index 000000000..3048842ac --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iebreve.glif @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iegrave.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iegrave.glif new file mode 100644 index 000000000..d5cfa7a7e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iegrave.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ieukran.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ieukran.glif new file mode 100644 index 000000000..fcdec3361 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ieukran.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/igrave.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/igrave.glif new file mode 100644 index 000000000..c7d71c3a0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/igrave.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/igravecyr.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/igravecyr.glif new file mode 100644 index 000000000..cb7f568f5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/igravecyr.glif @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ihoi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ihoi.glif new file mode 100644 index 000000000..b917c501b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ihoi.glif @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ij.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ij.glif new file mode 100644 index 000000000..264c6abdc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ij.glif @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/imacron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/imacron.glif new file mode 100644 index 000000000..0cd9bc646 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/imacron.glif @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/imacroncyr.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/imacroncyr.glif new file mode 100644 index 000000000..3891a6978 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/imacroncyr.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/infinity.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/infinity.glif new file mode 100644 index 000000000..b57c5a3d5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/infinity.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/integral.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/integral.glif new file mode 100644 index 000000000..2f5f16088 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/integral.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/io.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/io.glif new file mode 100644 index 000000000..91a415e64 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/io.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iogonek.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iogonek.glif new file mode 100644 index 000000000..5222ece60 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iogonek.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iota.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iota.glif new file mode 100644 index 000000000..b2b9d735d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iota.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iotadieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iotadieresis.glif new file mode 100644 index 000000000..125c0831d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iotadieresis.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iotadieresistonos.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iotadieresistonos.glif new file mode 100644 index 000000000..43c2b73f6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iotadieresistonos.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iotatonos.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iotatonos.glif new file mode 100644 index 000000000..551bddfef --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iotatonos.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ishort.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ishort.glif new file mode 100644 index 000000000..364f2a6b7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ishort.glif @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/itilde.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/itilde.glif new file mode 100644 index 000000000..7905b035c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/itilde.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iukran.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iukran.glif new file mode 100644 index 000000000..64402471a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/iukran.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/izhitsa.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/izhitsa.glif new file mode 100644 index 000000000..f14e8e170 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/izhitsa.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/j.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/j.sups.glif new file mode 100644 index 000000000..f7e199e84 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/j.sups.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/jcircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/jcircumflex.glif new file mode 100644 index 000000000..66122b350 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/jcircumflex.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/je.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/je.glif new file mode 100644 index 000000000..501aaccfd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/je.glif @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/k.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/k.sups.glif new file mode 100644 index 000000000..0289df898 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/k.sups.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ka.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ka.glif new file mode 100644 index 000000000..91f322170 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ka.glif @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/kabashkir.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/kabashkir.glif new file mode 100644 index 000000000..c91f68be2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/kabashkir.glif @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/kadescender.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/kadescender.glif new file mode 100644 index 000000000..0af3eb49b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/kadescender.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/kai.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/kai.glif new file mode 100644 index 000000000..2fa8a6007 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/kai.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/kappa.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/kappa.glif new file mode 100644 index 000000000..6c9872351 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/kappa.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/kcommaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/kcommaaccent.glif new file mode 100644 index 000000000..d04b3a638 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/kcommaaccent.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/kgreenlandic.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/kgreenlandic.glif new file mode 100644 index 000000000..b59676cf5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/kgreenlandic.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/kje.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/kje.glif new file mode 100644 index 000000000..80d2527f5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/kje.glif @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/koppa.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/koppa.glif new file mode 100644 index 000000000..78d4c908c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/koppa.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/l.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/l.sups.glif new file mode 100644 index 000000000..2e6dd57bf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/l.sups.glif @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lacute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lacute.glif new file mode 100644 index 000000000..7b0271ce7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lacute.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lambda.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lambda.glif new file mode 100644 index 000000000..697a26188 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lambda.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lcaron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lcaron.glif new file mode 100644 index 000000000..71bdf084d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lcaron.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lcommaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lcommaaccent.glif new file mode 100644 index 000000000..61458a87e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lcommaaccent.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ldot.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ldot.glif new file mode 100644 index 000000000..51682b5f8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ldot.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ldotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ldotbelow.glif new file mode 100644 index 000000000..1de280a84 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ldotbelow.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ldotbelowmacron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ldotbelowmacron.glif new file mode 100644 index 000000000..b2ad8ffb3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ldotbelowmacron.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lessequal.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lessequal.glif new file mode 100644 index 000000000..7c5aa0d74 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lessequal.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lira.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lira.glif new file mode 100644 index 000000000..e780758c5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lira.glif @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/liraturkish.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/liraturkish.glif new file mode 100644 index 000000000..f8a6f3966 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/liraturkish.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/litre.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/litre.glif new file mode 100644 index 000000000..7a6ff2a36 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/litre.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lje.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lje.glif new file mode 100644 index 000000000..f9cd11347 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lje.glif @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/llinebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/llinebelow.glif new file mode 100644 index 000000000..50ce3c89e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/llinebelow.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/logicalnot.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/logicalnot.glif new file mode 100644 index 000000000..3264a66fc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/logicalnot.glif @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/longs.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/longs.glif new file mode 100644 index 000000000..9320631b3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/longs.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lownumeralsign.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lownumeralsign.glif new file mode 100644 index 000000000..f559c1129 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lownumeralsign.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lozenge.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lozenge.glif new file mode 100644 index 000000000..a69aba9a1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lozenge.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lslash.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lslash.glif new file mode 100644 index 000000000..6f83a7d53 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/lslash.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/m.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/m.sups.glif new file mode 100644 index 000000000..2676a4a35 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/m.sups.glif @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/macronbelowcmb.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/macronbelowcmb.glif new file mode 100644 index 000000000..4de21641e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/macronbelowcmb.glif @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/macroncmb.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/macroncmb.glif new file mode 100644 index 000000000..8d5bc46be --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/macroncmb.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/macronmod.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/macronmod.glif new file mode 100644 index 000000000..4061ee9c8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/macronmod.glif @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/macute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/macute.glif new file mode 100644 index 000000000..dea0e8005 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/macute.glif @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/mdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/mdotbelow.glif new file mode 100644 index 000000000..91b79afe6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/mdotbelow.glif @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/minus.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/minus.glif new file mode 100644 index 000000000..6a1be7eec --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/minus.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/mu.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/mu.glif new file mode 100644 index 000000000..929c66ac2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/mu.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/multiply.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/multiply.glif new file mode 100644 index 000000000..8814a30ed --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/multiply.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/n.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/n.sups.glif new file mode 100644 index 000000000..4a113e91a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/n.sups.glif @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/nacute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/nacute.glif new file mode 100644 index 000000000..7e1885f84 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/nacute.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/naira.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/naira.glif new file mode 100644 index 000000000..1da2ff1ad --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/naira.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/napostrophe.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/napostrophe.glif new file mode 100644 index 000000000..b47011e17 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/napostrophe.glif @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ncaron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ncaron.glif new file mode 100644 index 000000000..bf5dc4d7b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ncaron.glif @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ncommaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ncommaaccent.glif new file mode 100644 index 000000000..852c2363a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ncommaaccent.glif @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ndotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ndotaccent.glif new file mode 100644 index 000000000..f1ec68767 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ndotaccent.glif @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ndotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ndotbelow.glif new file mode 100644 index 000000000..58f4ef8c6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ndotbelow.glif @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ngrave.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ngrave.glif new file mode 100644 index 000000000..b24d88236 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ngrave.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/nine.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/nine.subs.glif new file mode 100644 index 000000000..bb2ba6661 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/nine.subs.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/nine.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/nine.sups.glif new file mode 100644 index 000000000..e836d6d41 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/nine.sups.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/nje.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/nje.glif new file mode 100644 index 000000000..6cc18eee4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/nje.glif @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/nlinebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/nlinebelow.glif new file mode 100644 index 000000000..8faa1be59 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/nlinebelow.glif @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/notequal.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/notequal.glif new file mode 100644 index 000000000..7aa86e223 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/notequal.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ntilde.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ntilde.glif new file mode 100644 index 000000000..d34f120d3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ntilde.glif @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/nu.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/nu.glif new file mode 100644 index 000000000..923f61665 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/nu.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/numeralsign.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/numeralsign.glif new file mode 100644 index 000000000..045503033 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/numeralsign.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/numero.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/numero.glif new file mode 100644 index 000000000..1ac3ac686 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/numero.glif @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/o.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/o.sups.glif new file mode 100644 index 000000000..d7296e226 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/o.sups.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/oacute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/oacute.glif new file mode 100644 index 000000000..d67ba00c2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/oacute.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/obarcyr.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/obarcyr.glif new file mode 100644 index 000000000..7b100a40f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/obarcyr.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/obreve.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/obreve.glif new file mode 100644 index 000000000..e8801445d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/obreve.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ocaron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ocaron.glif new file mode 100644 index 000000000..f0e7b9ec6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ocaron.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ocircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ocircumflex.glif new file mode 100644 index 000000000..a763c6fc4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ocircumflex.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ocircumflexacute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ocircumflexacute.glif new file mode 100644 index 000000000..195ecd954 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ocircumflexacute.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ocircumflexdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ocircumflexdotbelow.glif new file mode 100644 index 000000000..81aac8d11 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ocircumflexdotbelow.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ocircumflexgrave.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ocircumflexgrave.glif new file mode 100644 index 000000000..16fca98ff --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ocircumflexgrave.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ocircumflexhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ocircumflexhoi.glif new file mode 100644 index 000000000..40b8af01c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ocircumflexhoi.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ocircumflextilde.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ocircumflextilde.glif new file mode 100644 index 000000000..0ee024df2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ocircumflextilde.glif @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ocyr.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ocyr.glif new file mode 100644 index 000000000..0820299ef --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ocyr.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/odieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/odieresis.glif new file mode 100644 index 000000000..990e2e265 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/odieresis.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/odieresiscyr.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/odieresiscyr.glif new file mode 100644 index 000000000..abfd2ebcb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/odieresiscyr.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/odotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/odotbelow.glif new file mode 100644 index 000000000..7ce0eb994 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/odotbelow.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/oe.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/oe.glif new file mode 100644 index 000000000..ee4746215 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/oe.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ogonek.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ogonek.glif new file mode 100644 index 000000000..662f8a307 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ogonek.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ogonekcmb.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ogonekcmb.glif new file mode 100644 index 000000000..00c573041 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ogonekcmb.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ograve.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ograve.glif new file mode 100644 index 000000000..870dd2565 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ograve.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ohoi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ohoi.glif new file mode 100644 index 000000000..913041354 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ohoi.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ohorn.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ohorn.glif new file mode 100644 index 000000000..ebe785d91 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ohorn.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ohornacute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ohornacute.glif new file mode 100644 index 000000000..426dba6a0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ohornacute.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ohorndotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ohorndotbelow.glif new file mode 100644 index 000000000..571453756 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ohorndotbelow.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ohorngrave.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ohorngrave.glif new file mode 100644 index 000000000..c243e4f7f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ohorngrave.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ohornhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ohornhoi.glif new file mode 100644 index 000000000..112fccc2b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ohornhoi.glif @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ohorntilde.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ohorntilde.glif new file mode 100644 index 000000000..ebfe9330b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ohorntilde.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ohungarumlaut.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ohungarumlaut.glif new file mode 100644 index 000000000..8fd471261 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ohungarumlaut.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/omacron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/omacron.glif new file mode 100644 index 000000000..ea8bf8a6e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/omacron.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/omega.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/omega.glif new file mode 100644 index 000000000..60adc5da4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/omega.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/omegatonos.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/omegatonos.glif new file mode 100644 index 000000000..74e011001 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/omegatonos.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/omicron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/omicron.glif new file mode 100644 index 000000000..4b774f002 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/omicron.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/omicrontonos.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/omicrontonos.glif new file mode 100644 index 000000000..7aec24cf7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/omicrontonos.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/one.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/one.subs.glif new file mode 100644 index 000000000..821e2f37c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/one.subs.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/one.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/one.sups.glif new file mode 100644 index 000000000..bf129572c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/one.sups.glif @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/oneeighth.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/oneeighth.glif new file mode 100644 index 000000000..dedc15eba --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/oneeighth.glif @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/onehalf.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/onehalf.glif new file mode 100644 index 000000000..23d5277a8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/onehalf.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/onequarter.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/onequarter.glif new file mode 100644 index 000000000..974ead155 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/onequarter.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/onethird.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/onethird.glif new file mode 100644 index 000000000..334ef2549 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/onethird.glif @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ordfeminine.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ordfeminine.glif new file mode 100644 index 000000000..c7450321e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ordfeminine.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ordmasculine.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ordmasculine.glif new file mode 100644 index 000000000..130b61a77 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ordmasculine.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/oslash.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/oslash.glif new file mode 100644 index 000000000..558d9256b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/oslash.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/otilde.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/otilde.glif new file mode 100644 index 000000000..b1c34549c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/otilde.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/overline.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/overline.glif new file mode 100644 index 000000000..2108265c3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/overline.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/p.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/p.sups.glif new file mode 100644 index 000000000..ace0e8b6b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/p.sups.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/palochka.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/palochka.glif new file mode 100644 index 000000000..a7fa6d91c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/palochka.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/paragraph.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/paragraph.glif new file mode 100644 index 000000000..4b68ff927 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/paragraph.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/parenleft.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/parenleft.subs.glif new file mode 100644 index 000000000..c81be4dc8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/parenleft.subs.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/parenleft.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/parenleft.sups.glif new file mode 100644 index 000000000..ec7c3b3dd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/parenleft.sups.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/parenright.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/parenright.subs.glif new file mode 100644 index 000000000..38b4b4199 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/parenright.subs.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/parenright.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/parenright.sups.glif new file mode 100644 index 000000000..2b4e14e5a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/parenright.sups.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/partialdiff.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/partialdiff.glif new file mode 100644 index 000000000..f1d965e61 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/partialdiff.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/pe.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/pe.glif new file mode 100644 index 000000000..c5ca79790 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/pe.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/periodcentered.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/periodcentered.glif new file mode 100644 index 000000000..215f6821d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/periodcentered.glif @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/perthousand.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/perthousand.glif new file mode 100644 index 000000000..0c73d620a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/perthousand.glif @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/peseta.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/peseta.glif new file mode 100644 index 000000000..39a59a789 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/peseta.glif @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/peso.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/peso.glif new file mode 100644 index 000000000..385536369 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/peso.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/phi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/phi.glif new file mode 100644 index 000000000..6b60e57a5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/phi.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/pi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/pi.glif new file mode 100644 index 000000000..eaf0adf82 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/pi.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/plusminus.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/plusminus.glif new file mode 100644 index 000000000..945ad8242 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/plusminus.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/prime.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/prime.glif new file mode 100644 index 000000000..93cdae522 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/prime.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/product.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/product.glif new file mode 100644 index 000000000..7de4814e4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/product.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/psi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/psi.glif new file mode 100644 index 000000000..088dcf696 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/psi.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/questiondbl.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/questiondbl.glif new file mode 100644 index 000000000..07c49c3b9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/questiondbl.glif @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/questiondown.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/questiondown.glif new file mode 100644 index 000000000..1d64830a8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/questiondown.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/questionexclam.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/questionexclam.glif new file mode 100644 index 000000000..ca42f4fdd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/questionexclam.glif @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/questiongreek.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/questiongreek.glif new file mode 100644 index 000000000..541d353e6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/questiongreek.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/quotedblbase.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/quotedblbase.glif new file mode 100644 index 000000000..16a851251 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/quotedblbase.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/quotedblleft.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/quotedblleft.glif new file mode 100644 index 000000000..b59f0758d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/quotedblleft.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/quotedblright.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/quotedblright.glif new file mode 100644 index 000000000..61495999e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/quotedblright.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/quoteleft.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/quoteleft.glif new file mode 100644 index 000000000..e03a740ec --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/quoteleft.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/quoteright.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/quoteright.glif new file mode 100644 index 000000000..e904fe71a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/quoteright.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/quotesinglbase.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/quotesinglbase.glif new file mode 100644 index 000000000..5edd93a44 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/quotesinglbase.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/r.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/r.sups.glif new file mode 100644 index 000000000..1b2bd9088 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/r.sups.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/racute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/racute.glif new file mode 100644 index 000000000..614782883 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/racute.glif @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/radical.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/radical.glif new file mode 100644 index 000000000..a6f3baf6b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/radical.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/rcaron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/rcaron.glif new file mode 100644 index 000000000..2e6b99bdb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/rcaron.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/rcommaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/rcommaaccent.glif new file mode 100644 index 000000000..6c3382492 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/rcommaaccent.glif @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/rdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/rdotbelow.glif new file mode 100644 index 000000000..d316c9651 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/rdotbelow.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/rdotbelowmacron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/rdotbelowmacron.glif new file mode 100644 index 000000000..26dfe5228 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/rdotbelowmacron.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/registered.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/registered.glif new file mode 100644 index 000000000..3670576a8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/registered.glif @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/rho.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/rho.glif new file mode 100644 index 000000000..e62da9677 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/rho.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ring.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ring.glif new file mode 100644 index 000000000..93c2d66d4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ring.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ringcmb.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ringcmb.glif new file mode 100644 index 000000000..9fbc0d1a3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ringcmb.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ringhalfleftmod.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ringhalfleftmod.glif new file mode 100644 index 000000000..039515221 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ringhalfleftmod.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ringhalfrightmod.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ringhalfrightmod.glif new file mode 100644 index 000000000..ab2faf59f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ringhalfrightmod.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/rlinebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/rlinebelow.glif new file mode 100644 index 000000000..8469f3ee6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/rlinebelow.glif @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ruble.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ruble.glif new file mode 100644 index 000000000..fda767ed1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ruble.glif @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/rupeeindian.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/rupeeindian.glif new file mode 100644 index 000000000..0857b48cf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/rupeeindian.glif @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/s.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/s.sups.glif new file mode 100644 index 000000000..687abc7dd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/s.sups.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/sacute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/sacute.glif new file mode 100644 index 000000000..d180c4787 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/sacute.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/sampi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/sampi.glif new file mode 100644 index 000000000..1e808c87e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/sampi.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/scaron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/scaron.glif new file mode 100644 index 000000000..68550ba67 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/scaron.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/scedilla.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/scedilla.glif new file mode 100644 index 000000000..d5b532afb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/scedilla.glif @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/schwa.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/schwa.glif new file mode 100644 index 000000000..373f2c6f7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/schwa.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/schwacyr.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/schwacyr.glif new file mode 100644 index 000000000..8ce55135b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/schwacyr.glif @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/scircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/scircumflex.glif new file mode 100644 index 000000000..865e767da --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/scircumflex.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/scommaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/scommaaccent.glif new file mode 100644 index 000000000..aa21ec91b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/scommaaccent.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/sdotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/sdotaccent.glif new file mode 100644 index 000000000..e5912b86a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/sdotaccent.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/sdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/sdotbelow.glif new file mode 100644 index 000000000..2b6cc057b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/sdotbelow.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/section.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/section.glif new file mode 100644 index 000000000..feaf72eb6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/section.glif @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/servicemark.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/servicemark.glif new file mode 100644 index 000000000..d6ceb4cf7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/servicemark.glif @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/seven.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/seven.subs.glif new file mode 100644 index 000000000..6890578fe --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/seven.subs.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/seven.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/seven.sups.glif new file mode 100644 index 000000000..0c4845501 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/seven.sups.glif @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/seveneighths.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/seveneighths.glif new file mode 100644 index 000000000..00007b7b9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/seveneighths.glif @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/sha.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/sha.glif new file mode 100644 index 000000000..239a1c811 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/sha.glif @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/shcha.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/shcha.glif new file mode 100644 index 000000000..ec10a7ff6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/shcha.glif @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/shha.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/shha.glif new file mode 100644 index 000000000..9c32d0d4a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/shha.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/sigma.end.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/sigma.end.glif new file mode 100644 index 000000000..64ec53ecc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/sigma.end.glif @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/sigma.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/sigma.glif new file mode 100644 index 000000000..5b8537c00 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/sigma.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/similar.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/similar.glif new file mode 100644 index 000000000..baad65c13 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/similar.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/six.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/six.subs.glif new file mode 100644 index 000000000..0b71db140 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/six.subs.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/six.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/six.sups.glif new file mode 100644 index 000000000..6b55bb634 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/six.sups.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/soft.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/soft.glif new file mode 100644 index 000000000..0287ed2b2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/soft.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/soundcopyright.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/soundcopyright.glif new file mode 100644 index 000000000..9a1402013 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/soundcopyright.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/squareblack.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/squareblack.glif new file mode 100644 index 000000000..0c2a4c5a2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/squareblack.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/squareshadow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/squareshadow.glif new file mode 100644 index 000000000..ed95fe44c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/squareshadow.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/sterling.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/sterling.glif new file mode 100644 index 000000000..847d2a9f3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/sterling.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/stigma.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/stigma.glif new file mode 100644 index 000000000..0ed98c6cc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/stigma.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/summation.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/summation.glif new file mode 100644 index 000000000..ea51a9639 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/summation.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/t.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/t.sups.glif new file mode 100644 index 000000000..3eb636cfa --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/t.sups.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tau.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tau.glif new file mode 100644 index 000000000..3991b3759 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tau.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tbar.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tbar.glif new file mode 100644 index 000000000..15e43e5ca --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tbar.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tcaron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tcaron.glif new file mode 100644 index 000000000..ab07ac5b3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tcaron.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tcedilla.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tcedilla.glif new file mode 100644 index 000000000..1a0da2818 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tcedilla.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tcommaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tcommaaccent.glif new file mode 100644 index 000000000..a0e8a5195 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tcommaaccent.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tdieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tdieresis.glif new file mode 100644 index 000000000..4d9aea9e1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tdieresis.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tdotbelow.glif new file mode 100644 index 000000000..ea88e4ab4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tdotbelow.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/te.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/te.glif new file mode 100644 index 000000000..810d60845 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/te.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tenge.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tenge.glif new file mode 100644 index 000000000..808af9790 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tenge.glif @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/theta.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/theta.glif new file mode 100644 index 000000000..49a7d9520 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/theta.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/thorn.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/thorn.glif new file mode 100644 index 000000000..85a448ff1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/thorn.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/three.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/three.subs.glif new file mode 100644 index 000000000..1108efc27 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/three.subs.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/three.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/three.sups.glif new file mode 100644 index 000000000..e9b737dde --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/three.sups.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/threeeighths.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/threeeighths.glif new file mode 100644 index 000000000..49eaee01c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/threeeighths.glif @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/threeemdash.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/threeemdash.glif new file mode 100644 index 000000000..6dc7d0114 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/threeemdash.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/threequarters.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/threequarters.glif new file mode 100644 index 000000000..59f9f1183 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/threequarters.glif @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tilde.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tilde.glif new file mode 100644 index 000000000..fdf881a4c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tilde.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tildecmb.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tildecmb.glif new file mode 100644 index 000000000..5f88313a3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tildecmb.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tlinebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tlinebelow.glif new file mode 100644 index 000000000..e9f93a782 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tlinebelow.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tonos.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tonos.glif new file mode 100644 index 000000000..65555c945 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tonos.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/trademark.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/trademark.glif new file mode 100644 index 000000000..d58d7ff95 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/trademark.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/triangleblackdown.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/triangleblackdown.glif new file mode 100644 index 000000000..17d261c3e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/triangleblackdown.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/triangleblackleft.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/triangleblackleft.glif new file mode 100644 index 000000000..c01556066 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/triangleblackleft.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/triangleblackright.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/triangleblackright.glif new file mode 100644 index 000000000..a845b5d08 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/triangleblackright.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/triangleblackup.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/triangleblackup.glif new file mode 100644 index 000000000..02b08a1f4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/triangleblackup.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/trianglewhitedown.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/trianglewhitedown.glif new file mode 100644 index 000000000..6836118c6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/trianglewhitedown.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/trianglewhiteleft.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/trianglewhiteleft.glif new file mode 100644 index 000000000..342205d81 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/trianglewhiteleft.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/trianglewhiteright.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/trianglewhiteright.glif new file mode 100644 index 000000000..8600ef027 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/trianglewhiteright.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/trianglewhiteup.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/trianglewhiteup.glif new file mode 100644 index 000000000..ef3a518ba --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/trianglewhiteup.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/triangularbullet.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/triangularbullet.glif new file mode 100644 index 000000000..6e2260b4c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/triangularbullet.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tse.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tse.glif new file mode 100644 index 000000000..f0925f2b5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tse.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tshe.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tshe.glif new file mode 100644 index 000000000..e6e79fff0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tshe.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tugrik.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tugrik.glif new file mode 100644 index 000000000..e1ff84fa9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/tugrik.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/two.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/two.subs.glif new file mode 100644 index 000000000..022cb005e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/two.subs.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/two.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/two.sups.glif new file mode 100644 index 000000000..b614390d5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/two.sups.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/twodotenleader.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/twodotenleader.glif new file mode 100644 index 000000000..d4d43b132 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/twodotenleader.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/twoemdash.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/twoemdash.glif new file mode 100644 index 000000000..c5298d692 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/twoemdash.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/twothirds.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/twothirds.glif new file mode 100644 index 000000000..056d6a1be --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/twothirds.glif @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/u.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/u.sups.glif new file mode 100644 index 000000000..233852f23 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/u.sups.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uacute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uacute.glif new file mode 100644 index 000000000..424a202b7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uacute.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uacutedblcyr.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uacutedblcyr.glif new file mode 100644 index 000000000..9f40a74a8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uacutedblcyr.glif @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ubreve.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ubreve.glif new file mode 100644 index 000000000..369175ad7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ubreve.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ucaron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ucaron.glif new file mode 100644 index 000000000..c799eda25 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ucaron.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ucircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ucircumflex.glif new file mode 100644 index 000000000..34335104d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ucircumflex.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ucyr.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ucyr.glif new file mode 100644 index 000000000..80fea94e3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ucyr.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/udieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/udieresis.glif new file mode 100644 index 000000000..b16e2c1e3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/udieresis.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/udieresisacute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/udieresisacute.glif new file mode 100644 index 000000000..9a9241f0a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/udieresisacute.glif @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/udieresiscaron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/udieresiscaron.glif new file mode 100644 index 000000000..eff28f699 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/udieresiscaron.glif @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/udieresisgrave.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/udieresisgrave.glif new file mode 100644 index 000000000..aa0ff9d38 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/udieresisgrave.glif @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/udieresismacron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/udieresismacron.glif new file mode 100644 index 000000000..c816f0f2f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/udieresismacron.glif @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/udotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/udotbelow.glif new file mode 100644 index 000000000..0bbc09cea --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/udotbelow.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ugrave.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ugrave.glif new file mode 100644 index 000000000..a0d3e7008 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ugrave.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uhoi.glif new file mode 100644 index 000000000..5fbd4dc43 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uhoi.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uhorn.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uhorn.glif new file mode 100644 index 000000000..b64601d53 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uhorn.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uhornacute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uhornacute.glif new file mode 100644 index 000000000..f380fdd54 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uhornacute.glif @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uhorndotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uhorndotbelow.glif new file mode 100644 index 000000000..e13d040d6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uhorndotbelow.glif @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uhorngrave.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uhorngrave.glif new file mode 100644 index 000000000..f23101b23 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uhorngrave.glif @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uhornhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uhornhoi.glif new file mode 100644 index 000000000..eef178124 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uhornhoi.glif @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uhorntilde.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uhorntilde.glif new file mode 100644 index 000000000..89d69f12c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uhorntilde.glif @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uhungarumlaut.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uhungarumlaut.glif new file mode 100644 index 000000000..e7230cceb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uhungarumlaut.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/umacron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/umacron.glif new file mode 100644 index 000000000..5484970fe --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/umacron.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/umacroncyr.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/umacroncyr.glif new file mode 100644 index 000000000..8ccf16b0e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/umacroncyr.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uogonek.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uogonek.glif new file mode 100644 index 000000000..ba66863da --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uogonek.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/upsilon.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/upsilon.glif new file mode 100644 index 000000000..b101feeda --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/upsilon.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/upsilondieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/upsilondieresis.glif new file mode 100644 index 000000000..65ea3aa45 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/upsilondieresis.glif @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/upsilondieresistonos.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/upsilondieresistonos.glif new file mode 100644 index 000000000..c76b16605 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/upsilondieresistonos.glif @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/upsilontonos.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/upsilontonos.glif new file mode 100644 index 000000000..337908c07 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/upsilontonos.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uring.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uring.glif new file mode 100644 index 000000000..77e97b7c3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/uring.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ushort.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ushort.glif new file mode 100644 index 000000000..da9935768 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ushort.glif @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ustraight.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ustraight.glif new file mode 100644 index 000000000..dea446407 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ustraight.glif @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ustraightstroke.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ustraightstroke.glif new file mode 100644 index 000000000..6cf714846 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ustraightstroke.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/utilde.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/utilde.glif new file mode 100644 index 000000000..0102c5096 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/utilde.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/v.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/v.sups.glif new file mode 100644 index 000000000..75f1035f4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/v.sups.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ve.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ve.glif new file mode 100644 index 000000000..08caef633 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ve.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/verticallinebelowcmb.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/verticallinebelowcmb.glif new file mode 100644 index 000000000..bb7532801 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/verticallinebelowcmb.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/verticallinelowmod.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/verticallinelowmod.glif new file mode 100644 index 000000000..f9da6e656 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/verticallinelowmod.glif @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/verticallinemod.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/verticallinemod.glif new file mode 100644 index 000000000..f005b1f90 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/verticallinemod.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/w.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/w.sups.glif new file mode 100644 index 000000000..825c4aba6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/w.sups.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/wacute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/wacute.glif new file mode 100644 index 000000000..fc10fcae8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/wacute.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/wcircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/wcircumflex.glif new file mode 100644 index 000000000..0201ac48d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/wcircumflex.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/wdieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/wdieresis.glif new file mode 100644 index 000000000..817696d1c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/wdieresis.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/wgrave.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/wgrave.glif new file mode 100644 index 000000000..12645b587 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/wgrave.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/won.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/won.glif new file mode 100644 index 000000000..3a97d7976 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/won.glif @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/x.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/x.sups.glif new file mode 100644 index 000000000..8600545c0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/x.sups.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/xi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/xi.glif new file mode 100644 index 000000000..9223a2fc2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/xi.glif @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/y.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/y.sups.glif new file mode 100644 index 000000000..44f2959fd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/y.sups.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ya.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ya.glif new file mode 100644 index 000000000..f65375454 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ya.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/yacute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/yacute.glif new file mode 100644 index 000000000..3545b7569 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/yacute.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/yat.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/yat.glif new file mode 100644 index 000000000..5d47ee9d3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/yat.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ycircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ycircumflex.glif new file mode 100644 index 000000000..3dfe827bd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ycircumflex.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ydieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ydieresis.glif new file mode 100644 index 000000000..0532fa691 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ydieresis.glif @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ydotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ydotaccent.glif new file mode 100644 index 000000000..6c18be672 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ydotaccent.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ydotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ydotbelow.glif new file mode 100644 index 000000000..7dff905bc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ydotbelow.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/yen.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/yen.glif new file mode 100644 index 000000000..8bd16f5bc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/yen.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/yeru.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/yeru.glif new file mode 100644 index 000000000..402b67584 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/yeru.glif @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ygrave.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ygrave.glif new file mode 100644 index 000000000..61b5071c8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ygrave.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/yhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/yhoi.glif new file mode 100644 index 000000000..5cc528c39 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/yhoi.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/yi.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/yi.glif new file mode 100644 index 000000000..a90c0f729 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/yi.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ytilde.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ytilde.glif new file mode 100644 index 000000000..02671acb8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ytilde.glif @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/yu.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/yu.glif new file mode 100644 index 000000000..bc2a1affc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/yu.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/z.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/z.sups.glif new file mode 100644 index 000000000..adae3027a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/z.sups.glif @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zacute.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zacute.glif new file mode 100644 index 000000000..40d3d49c0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zacute.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zcaron.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zcaron.glif new file mode 100644 index 000000000..67ad63e69 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zcaron.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zdotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zdotaccent.glif new file mode 100644 index 000000000..e103baf42 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zdotaccent.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zdotbelow.glif new file mode 100644 index 000000000..58f19a47d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zdotbelow.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ze.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ze.glif new file mode 100644 index 000000000..fb4243a36 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/ze.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zedescender.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zedescender.glif new file mode 100644 index 000000000..b30ce017a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zedescender.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zero.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zero.subs.glif new file mode 100644 index 000000000..476d52ec9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zero.subs.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zero.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zero.sups.glif new file mode 100644 index 000000000..2b3a285bd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zero.sups.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zeta.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zeta.glif new file mode 100644 index 000000000..4c43b30ac --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zeta.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zhe.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zhe.glif new file mode 100644 index 000000000..56ca7ec65 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zhe.glif @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zhebreve.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zhebreve.glif new file mode 100644 index 000000000..f1fdafad4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zhebreve.glif @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zhedescender.glif b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zhedescender.glif new file mode 100644 index 000000000..b77b39b87 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/glyphs/zhedescender.glif @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/groups.plist b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/groups.plist new file mode 100644 index 000000000..27395a37e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/groups.plist @@ -0,0 +1,5997 @@ + + + + + @MMK_L_CYR_Acyr + + Abrevecyr + Acyr + + @MMK_L_CYR_Acyr.sc + + Abrevecyr.sc + Acyr.sc + + @MMK_L_CYR_De + + Chedescender + De + Endescender + Shcha + Tse + + @MMK_L_CYR_De.sc + + Chedescender.sc + De.sc + Endescender.sc + Shcha.sc + Tse.sc + + @MMK_L_CYR_En + + Dzhe + El + Em + En + Icyr + Igravecyr + Imacroncyr + Ishort + Iukran + Palochka + Pe + Sha + Yeru + Yi + Che + Ya + + @MMK_L_CYR_En.sc + + Dzhe.sc + El.sc + Em.sc + En.sc + Icyr.sc + Igravecyr.sc + Imacroncyr.sc + Ishort.sc + Iukran.sc + Palochka.sc + Pe.sc + Sha.sc + Yeru.sc + Yi.sc + Che.sc + Ya.sc + + @MMK_L_CYR_Es + + Es + Esdescender + Ieukran + + @MMK_L_CYR_Es.sc + + Es.sc + Esdescender.sc + Ieukran.sc + + @MMK_L_CYR_Ghe + + Ghe + Ghestroke + Gje + Te + Gheup + + @MMK_L_CYR_Ghe.sc + + Ghe.sc + Ghestroke.sc + Gje.sc + Te.sc + Gheup.sc + + @MMK_L_CYR_Ie + + Aie + Ie + Iebreve + Iegrave + Io + + @MMK_L_CYR_Ie.sc + + Aie.sc + Ie.sc + Iebreve.sc + Iegrave.sc + Io.sc + + @MMK_L_CYR_Ka + + Ha + Hadescender + Ka + Kabashkir + Kadescender + Kje + Zhe + Zhebreve + Zhedescender + + @MMK_L_CYR_Ka.sc + + Ha.sc + Hadescender.sc + Ka.sc + Kabashkir.sc + Kadescender.sc + Kje.sc + Zhe.sc + Zhebreve.sc + Zhedescender.sc + + @MMK_L_CYR_Ocyr + + Fita + Obarcyr + Ocyr + Odieresiscyr + Schwacyr + Yu + Ecyr + + @MMK_L_CYR_Ocyr.sc + + Fita.sc + Obarcyr.sc + Ocyr.sc + Odieresiscyr.sc + Schwacyr.sc + Yu.sc + Ecyr.sc + + @MMK_L_CYR_Soft + + Hard + Lje + Nje + Soft + + @MMK_L_CYR_Soft.sc + + Hard.sc + Lje.sc + Nje.sc + Soft.sc + + @MMK_L_CYR_Ucyr + + Izhitsa + Uacutedblcyr + Ucyr + Umacroncyr + Ushort + + @MMK_L_CYR_Ucyr.sc + + Izhitsa.sc + Uacutedblcyr.sc + Ucyr.sc + Umacroncyr.sc + Ushort.sc + + @MMK_L_CYR_Ustraight + + Ustraight + Ustraightstroke + + @MMK_L_CYR_Ustraight.sc + + Ustraight.sc + Ustraightstroke.sc + + @MMK_L_CYR_Ve + + Be + Ve + Ze + Zedescender + + @MMK_L_CYR_Ve.sc + + Be.sc + Ve.sc + Ze.sc + Zedescender.sc + + @MMK_L_CYR_acyr + + abrevecyr + acyr + + @MMK_L_CYR_be + + be + be.srb + + @MMK_L_CYR_de + + che + chedescender + de + el + em + en + endescender + icyr + igravecyr + imacroncyr + ishort + pe + sha + shcha + tse + ya + yeru + dzhe + + @MMK_L_CYR_es + + es + ieukran + esdescender + + @MMK_L_CYR_ghe + + ghe + ghestroke + gheup + gje + te + + @MMK_L_CYR_hard + + hard + lje + nje + soft + + @MMK_L_CYR_ie + + ecyr + ef + er + fita + ie + iebreve + iegrave + io + obarcyr + ocyr + odieresiscyr + schwacyr + yu + aie + + @MMK_L_CYR_iukran + + iukran + yi + + @MMK_L_CYR_tshe + + shha + tshe + + @MMK_L_CYR_ucyr + + uacutedblcyr + ucyr + umacroncyr + ushort + + @MMK_L_CYR_ustraight + + ustraight + ustraightstroke + + @MMK_L_CYR_ve + + ve + ze + zedescender + + @MMK_L_CYR_zhe + + ha + hadescender + ka + kabashkir + kadescender + kje + zhe + zhebreve + zhedescender + + @MMK_L_GRK_Alpha + + Alpha + Alphatonos + Lambda + Delta + + @MMK_L_GRK_Alpha.sc + + Alpha.sc + Lambda.sc + Delta.sc + + @MMK_L_GRK_Epsilon + + Epsilon + Epsilontonos + Sigma + Xi + + @MMK_L_GRK_Epsilon.sc + + Epsilon.sc + Sigma.sc + Xi.sc + + @MMK_L_GRK_Eta + + Eta + Etatonos + Iota + Iotadieresis + Iotatonos + Mu + Pi + Nu + + @MMK_L_GRK_Eta.sc + + Eta.sc + Iota.sc + Iotadieresis.sc + Mu.sc + Pi.sc + Nu.sc + + @MMK_L_GRK_Gamma + + Gamma + Tau + + @MMK_L_GRK_Gamma.sc + + Gamma.sc + Tau.sc + + @MMK_L_GRK_Omega + + Omega + Omegatonos + + @MMK_L_GRK_Omicron + + Omicron + Omicrontonos + Theta + + @MMK_L_GRK_Omicron.sc + + Omicron.sc + Theta.sc + + @MMK_L_GRK_Upsilon + + Upsilon + Upsilondieresis + Upsilontonos + + @MMK_L_GRK_Upsilon.sc + + Upsilon.sc + Upsilondieresis.sc + + @MMK_L_GRK_alpha + + alpha + alphatonos + iota + iotadieresis + iotadieresistonos + iotatonos + mu + + @MMK_L_GRK_epsilon + + epsilon + epsilontonos + + @MMK_L_GRK_eta + + eta + etatonos + + @MMK_L_GRK_gamma + + gamma + nu + + @MMK_L_GRK_omicron + + omicron + omicrontonos + phi + rho + koppa + omega + omegatonos + + @MMK_L_GRK_pi + + pi + tau + + @MMK_L_GRK_upsilon + + psi + upsilon + upsilondieresis + upsilondieresistonos + upsilontonos + + @MMK_L_LAT_A + + A + Aacute + Abreve + Acircumflex + Adieresis + Agrave + Amacron + Aogonek + Aring + Atilde + Abreveacute + Abrevedotbelow + Abrevegrave + Abrevehoi + Abrevetilde + Acaron + Acircumflexacute + Acircumflexdotbelow + Acircumflexgrave + Acircumflexhoi + Acircumflextilde + Adotbelow + Ahoi + + @MMK_L_LAT_A.sc + + A.sc + Aacute.sc + Abreve.sc + Acircumflex.sc + Adieresis.sc + Agrave.sc + Amacron.sc + Aogonek.sc + Aring.sc + Atilde.sc + Abreveacute.sc + Abrevedotbelow.sc + Abrevegrave.sc + Abrevehoi.sc + Abrevetilde.sc + Acaron.sc + Acircumflexacute.sc + Acircumflexdotbelow.sc + Acircumflexgrave.sc + Acircumflexhoi.sc + Acircumflextilde.sc + Adotbelow.sc + Ahoi.sc + + @MMK_L_LAT_C + + C + Cacute + Ccaron + Ccedilla + Ccircumflex + Cdotaccent + + @MMK_L_LAT_C.sc + + C.sc + Cacute.sc + Ccaron.sc + Ccedilla.sc + Ccircumflex.sc + Cdotaccent.sc + + @MMK_L_LAT_D + + D + Dcaron + Dcroat + Eth + Ddotbelow + Dlinebelow + + @MMK_L_LAT_D.sc + + D.sc + Dcaron.sc + Dcroat.sc + Eth.sc + Ddotbelow.sc + Dlinebelow.sc + + @MMK_L_LAT_E + + AE + E + Eacute + Ecaron + Ecircumflex + Edieresis + Edotaccent + Egrave + Emacron + Eogonek + OE + Ebreve + Ecircumflexacute + Ecircumflexdotbelow + Ecircumflexgrave + Ecircumflexhoi + Ecircumflextilde + Edotbelow + Ehoi + Etilde + + @MMK_L_LAT_E.sc + + AE.sc + E.sc + Eacute.sc + Ecaron.sc + Ecircumflex.sc + Edieresis.sc + Edotaccent.sc + Egrave.sc + Emacron.sc + Eogonek.sc + OE.sc + Ebreve.sc + Ecircumflexacute.sc + Ecircumflexdotbelow.sc + Ecircumflexgrave.sc + Ecircumflexhoi.sc + Ecircumflextilde.sc + Edotbelow.sc + Ehoi.sc + Etilde.sc + + @MMK_L_LAT_G + + G + Gbreve + Gdotaccent + Gcommaaccent + Gcaron + Gcircumflex + Gmacron + Gtilde + + @MMK_L_LAT_G.sc + + G.sc + Gbreve.sc + Gdotaccent.sc + Gcommaaccent.sc + Gcaron.sc + Gcircumflex.sc + Gmacron.sc + Gtilde.sc + + @MMK_L_LAT_H + + H + I + Iacute + Icircumflex + Idieresis + Idotaccent + Igrave + Imacron + Iogonek + M + Icaron + Idotbelow + Ihoi + Itilde + Macute + Mdotbelow + Hbrevebelow + Hcircumflex + Hdotbelow + Hbar + f_i.sc + + @MMK_L_LAT_H.sc + + H.sc + I.sc + Iacute.sc + Icircumflex.sc + Idieresis.sc + Idotaccent.sc + Igrave.sc + Imacron.sc + Iogonek.sc + M.sc + Icaron.sc + Idotbelow.sc + Ihoi.sc + Itilde.sc + Macute.sc + Mdotbelow.sc + Hbrevebelow.sc + Hcircumflex.sc + Hdotbelow.sc + Hbar.sc + + @MMK_L_LAT_J + + J + Jcircumflex + + @MMK_L_LAT_J.sc + + J.sc + Jcircumflex.sc + + @MMK_L_LAT_K + + K + Kcommaaccent + + @MMK_L_LAT_K.sc + + K.sc + Kcommaaccent.sc + + @MMK_L_LAT_L + + L + Lacute + Lcaron + Lslash + Lcommaaccent + Ldotbelow + Ldotbelowmacron + Llinebelow + + @MMK_L_LAT_L.sc + + L.sc + Lacute.sc + Lcaron.sc + Lslash.sc + Lcommaaccent.sc + Ldotbelow.sc + Ldotbelowmacron.sc + Llinebelow.sc + f_l.sc + + @MMK_L_LAT_N + + N + Nacute + Ncaron + Ntilde + Ndotaccent + Ncommaaccent + Ndotbelow + Ngrave + Nlinebelow + + @MMK_L_LAT_N.sc + + N.sc + Nacute.sc + Ncaron.sc + Ntilde.sc + Ndotaccent.sc + Ncommaaccent.sc + Ndotbelow.sc + Ngrave.sc + Nlinebelow.sc + + @MMK_L_LAT_O + + O + Oacute + Ocircumflex + Odieresis + Ograve + Ohungarumlaut + Omacron + Oslash + Otilde + Q + Obreve + Ocaron + Ocircumflexacute + Ocircumflexdotbelow + Ocircumflexgrave + Ocircumflexhoi + Ocircumflextilde + Odotbelow + Ohoi + Ohorn + Ohornacute + Ohorndotbelow + Ohorngrave + Ohornhoi + Ohorntilde + Schwa + + @MMK_L_LAT_O.sc + + O.sc + Oacute.sc + Ocircumflex.sc + Odieresis.sc + Ograve.sc + Ohungarumlaut.sc + Omacron.sc + Oslash.sc + Otilde.sc + Q.sc + Obreve.sc + Ocaron.sc + Ocircumflexacute.sc + Ocircumflexdotbelow.sc + Ocircumflexgrave.sc + Ocircumflexhoi.sc + Ocircumflextilde.sc + Odotbelow.sc + Ohoi.sc + Ohorn.sc + Ohornacute.sc + Ohorndotbelow.sc + Ohorngrave.sc + Ohornhoi.sc + Ohorntilde.sc + Schwa.sc + + @MMK_L_LAT_R + + R + Racute + Rcaron + Rcommaaccent + Rdotbelow + Rdotbelowmacron + Rlinebelow + + @MMK_L_LAT_R.sc + + R.sc + Racute.sc + Rcaron.sc + Rcommaaccent.sc + Rdotbelow.sc + Rdotbelowmacron.sc + Rlinebelow.sc + + @MMK_L_LAT_S + + S + Sacute + Scaron + Scedilla + Scommaaccent + Scircumflex + Sdotaccent + Sdotbelow + + @MMK_L_LAT_S.sc + + S.sc + Sacute.sc + Scaron.sc + Scedilla.sc + Scommaaccent.sc + Scircumflex.sc + Sdotaccent.sc + Sdotbelow.sc + germandbls.sc + + @MMK_L_LAT_T + + T + Tcaron + Tcommaaccent + Tcedilla + Tdotbelow + Tlinebelow + + @MMK_L_LAT_T.sc + + T.sc + Tcaron.sc + Tcommaaccent.sc + Tcedilla.sc + Tdotbelow.sc + Tlinebelow.sc + tdieresis.sc + + @MMK_L_LAT_U + + U + Uacute + Ucircumflex + Udieresis + Ugrave + Uhungarumlaut + Umacron + Uogonek + Uring + Ubreve + Ucaron + Udieresisacute + Udieresiscaron + Udieresisgrave + Udieresismacron + Udotbelow + Uhoi + Uhorn + Uhornacute + Uhorndotbelow + Uhorngrave + Uhornhoi + Uhorntilde + Utilde + + @MMK_L_LAT_U.sc + + U.sc + Uacute.sc + Ucircumflex.sc + Udieresis.sc + Ugrave.sc + Uhungarumlaut.sc + Umacron.sc + Uogonek.sc + Uring.sc + Ubreve.sc + Ucaron.sc + Udieresisacute.sc + Udieresiscaron.sc + Udieresisgrave.sc + Udieresismacron.sc + Udotbelow.sc + Uhoi.sc + Uhorn.sc + Uhornacute.sc + Uhorndotbelow.sc + Uhorngrave.sc + Uhornhoi.sc + Uhorntilde.sc + Utilde.sc + + @MMK_L_LAT_W + + W + Wacute + Wcircumflex + Wdieresis + Wgrave + + @MMK_L_LAT_W.sc + + W.sc + Wacute.sc + Wcircumflex.sc + Wdieresis.sc + Wgrave.sc + + @MMK_L_LAT_Y + + Y + Yacute + Ydieresis + Ycircumflex + Ydotaccent + Ydotbelow + Ygrave + Yhoi + Ytilde + + @MMK_L_LAT_Y.sc + + Y.sc + Yacute.sc + Ydieresis.sc + Ycircumflex.sc + Ydotaccent.sc + Ydotbelow.sc + Ygrave.sc + Yhoi.sc + Ytilde.sc + + @MMK_L_LAT_Z + + Z + Zacute + Zcaron + Zdotaccent + Zdotbelow + + @MMK_L_LAT_Z.sc + + Z.sc + Zacute.sc + Zcaron.sc + Zdotaccent.sc + Zdotbelow.sc + + @MMK_L_LAT_a + + a + aacute + abreve + acircumflex + adieresis + agrave + amacron + aogonek + aring + atilde + abreveacute + abrevedotbelow + abrevegrave + abrevehoi + abrevetilde + acaron + acircumflexacute + acircumflexdotbelow + acircumflexgrave + acircumflexhoi + acircumflextilde + adotbelow + ahoi + + @MMK_L_LAT_b + + b + p + thorn + o + oacute + ocircumflex + odieresis + ograve + ohungarumlaut + omacron + oslash + otilde + obreve + ocaron + ocircumflexacute + ocircumflexdotbelow + ocircumflexgrave + ocircumflexhoi + ocircumflextilde + odotbelow + ohoi + schwa + + @MMK_L_LAT_c + + c + cacute + ccaron + ccedilla + ccircumflex + cdotaccent + + @MMK_L_LAT_dcaron + + dcaron + lcaron + + @MMK_L_LAT_e + + ae + e + eacute + ecaron + ecircumflex + edieresis + edotaccent + egrave + emacron + eogonek + oe + ebreve + ecircumflexacute + ecircumflexdotbelow + ecircumflexgrave + ecircumflexhoi + ecircumflextilde + edotbelow + ehoi + etilde + + @MMK_L_LAT_f + + f + longs + f_f + + @MMK_L_LAT_g + + g + gbreve + gdotaccent + gcommaaccent + gcaron + gcircumflex + gmacron + gtilde + + @MMK_L_LAT_h + + h + m + n + nacute + ncaron + ntilde + ndotaccent + ncommaaccent + hbrevebelow + hcircumflex + hdotbelow + macute + mdotbelow + ndotbelow + ngrave + nlinebelow + hbar + + @MMK_L_LAT_i + + dotlessi + i + iacute + igrave + iogonek + f_i + i.trk + idotbelow + ihoi + f_f_i + + @MMK_L_LAT_icircumflex + + icircumflex + idieresis + imacron + icaron + itilde + + @MMK_L_LAT_j + + j + jcircumflex + dotlessj + + @MMK_L_LAT_k + + k + kcommaaccent + kgreenlandic + + @MMK_L_LAT_l + + d + dcroat + l + lacute + lslash + f_l + lcommaaccent + ldotbelow + ldotbelowmacron + llinebelow + ddotbelow + dlinebelow + f_f_l + + @MMK_L_LAT_ohorn + + ohorn + ohornacute + ohorndotbelow + ohorngrave + ohornhoi + ohorntilde + + @MMK_L_LAT_r + + r + racute + rcaron + rcommaaccent + rdotbelow + rdotbelowmacron + rlinebelow + + @MMK_L_LAT_s + + s + sacute + scaron + scedilla + scommaaccent + scircumflex + sdotaccent + sdotbelow + + @MMK_L_LAT_t + + t + tcaron + tcommaaccent + tcedilla + f_t + tdieresis + tdotbelow + tlinebelow + + @MMK_L_LAT_u + + u + uacute + ucircumflex + udieresis + ugrave + uhungarumlaut + umacron + uogonek + uring + ubreve + ucaron + udieresisacute + udieresiscaron + udieresisgrave + udieresismacron + udotbelow + uhoi + utilde + + @MMK_L_LAT_uhorn + + uhorn + uhornacute + uhorndotbelow + uhorngrave + uhornhoi + uhorntilde + + @MMK_L_LAT_v + + v + w + y + yacute + ydieresis + wacute + wcircumflex + wdieresis + wgrave + ycircumflex + ydotaccent + ydotbelow + ygrave + yhoi + ytilde + + @MMK_L_LAT_z + + z + zacute + zcaron + zdotaccent + zdotbelow + + @MMK_L_colon + + colon + semicolon + + @MMK_L_comma + + comma + ellipsis + period + + @MMK_L_comma.sups + + comma.sups + period.sups + + @MMK_L_copyright + + copyright + soundcopyright + copyleft + + @MMK_L_eight.lf + + eight.lf + eight.osf + three.lf + + @MMK_L_equal + + equal + notequal + approxequal + logicalnot + + @MMK_L_fractions + + onehalf + onequarter + percent + threequarters + perthousand + fiveeighths + oneeighth + onethird + seveneighths + threeeighths + twothirds + + @MMK_L_guilsinglleft + + guillemotleft + guillemotleft.cap + guilsinglleft + guilsinglleft.cap + + @MMK_L_guilsinglright + + guillemotright + guillemotright.cap + guilsinglright + guilsinglright.cap + + @MMK_L_hyphen + + emdash + endash + hyphen + horizontalbar + emdash.cap + endash.cap + horizontalbar.cap + hyphen.cap + figuredash + threeemdash + twoemdash + + @MMK_L_hyphen.sc + + emdash.sc + endash.sc + hyphen.sc + + @MMK_L_hyphen.sups + + emdash.sups + endash.sups + hyphen.sups + + @MMK_L_less + + less + multiply + + @MMK_L_parenleft + + braceleft + braceleft.cap + bracketleft + bracketleft.cap + parenleft + parenleft.cap + + @MMK_L_parenleft.sc + + braceleft.sc + bracketleft.sc + parenleft.sc + + @MMK_L_parenright + + braceright + braceright.cap + bracketright + bracketright.cap + parenright + parenright.cap + + @MMK_L_parenright.sc + + braceright.sc + bracketright.sc + parenright.sc + + @MMK_L_periodcentered + + bulletoperator + periodcentered + + @MMK_L_plus + + asciitilde + divide + greater + minus + plus + + @MMK_L_quotedbl + + quotedbl + quotesingle + + @MMK_L_quotedbl.sc + + quotedbl.sc + quotesingle.sc + + @MMK_L_quoteleft + + quotedblleft + quoteleft + + @MMK_L_quoteleft.sc + + quotedblleft.sc + quoteleft.sc + + @MMK_L_quoteright + + quotedblright + quoteright + + @MMK_L_quoteright.sc + + quotedblright.sc + quoteright.sc + + @MMK_L_quotesinglbase + + quotedblbase + quotesinglbase + + @MMK_L_registered + + asterisk + registered + + @MMK_L_six.lf + + six.lf + six.osf + + @MMK_L_subs_figures + + eight.subs + five.subs + four.subs + nine.subs + one.subs + seven.subs + six.subs + three.subs + two.subs + zero.subs + + @MMK_L_sups_corner + + H.sups + I.sups + K.sups + L.sups + M.sups + N.sups + u.sups + A.sups + E.sups + R.sups + X.sups + Z.sups + d.sups + f.sups + h.sups + i.sups + k.sups + l.sups + m.sups + n.sups + t.sups + x.sups + a.sups + z.sups + ordfeminine + + @MMK_L_sups_figures + + eight.sups + five.sups + four.sups + nine.sups + one.sups + seven.sups + six.sups + three.sups + two.sups + zero.sups + + @MMK_L_sups_low + + g.sups + j.sups + q.sups + J.sups + Q.sups + + @MMK_L_sups_round + + b.sups + c.sups + e.sups + eacute.sups + egrave.sups + o.sups + p.sups + s.sups + ordmasculine + G.sups + O.sups + S.sups + U.sups + D.sups + B.sups + C.sups + + @MMK_L_sups_v + + r.sups + v.sups + w.sups + y.sups + T.sups + V.sups + W.sups + Y.sups + F.sups + P.sups + + @MMK_L_trademark + + servicemark + trademark + commercemark + deposeemark + + @MMK_L_zero.lf + + zero.lf + zero.lfslash + + @MMK_R_CYR_Acyr + + Abrevecyr + Acyr + + @MMK_R_CYR_Acyr.sc + + Abrevecyr.sc + Acyr.sc + + @MMK_R_CYR_Che + + Che + Chedescender + + @MMK_R_CYR_Che.sc + + Che.sc + Chedescender.sc + + @MMK_R_CYR_De + + De + El + Lje + + @MMK_R_CYR_De.sc + + De.sc + El.sc + Lje.sc + + @MMK_R_CYR_Dje + + Dje + Te + Tshe + Hard + Kabashkir + + @MMK_R_CYR_Dje.sc + + Dje.sc + Te.sc + Tshe.sc + Hard.sc + Kabashkir.sc + + @MMK_R_CYR_En + + Be + Dzhe + En + Endescender + Er + Ghe + Ghestroke + Gheup + Gje + Icyr + Ie + Iebreve + Iegrave + Igravecyr + Imacroncyr + Io + Ishort + Iukran + Kadescender + Nje + Palochka + Pe + Sha + Shcha + Shha + Soft + Tse + Ve + Yeru + Yi + Yu + Ka + Kje + Em + + @MMK_R_CYR_En.sc + + Be.sc + Dzhe.sc + En.sc + Endescender.sc + Er.sc + Ghe.sc + Ghestroke.sc + Gheup.sc + Gje.sc + Icyr.sc + Ie.sc + Iebreve.sc + Iegrave.sc + Igravecyr.sc + Imacroncyr.sc + Io.sc + Ishort.sc + Iukran.sc + Kadescender.sc + Nje.sc + Palochka.sc + Pe.sc + Sha.sc + Shcha.sc + Shha.sc + Soft.sc + Tse.sc + Ve.sc + Yeru.sc + Yi.sc + Yu.sc + Ka.sc + Kje.sc + Em.sc + + @MMK_R_CYR_Ocyr + + Es + Esdescender + Fita + Ieukran + Obarcyr + Ocyr + Odieresiscyr + Schwacyr + + @MMK_R_CYR_Ocyr.sc + + Es.sc + Esdescender.sc + Fita.sc + Ieukran.sc + Obarcyr.sc + Ocyr.sc + Odieresiscyr.sc + Schwacyr.sc + + @MMK_R_CYR_Ucyr + + Uacutedblcyr + Ucyr + Umacroncyr + Ushort + + @MMK_R_CYR_Ucyr.sc + + Uacutedblcyr.sc + Ucyr.sc + Umacroncyr.sc + Ushort.sc + + @MMK_R_CYR_Ustraight + + Ustraight + Ustraightstroke + + @MMK_R_CYR_Ustraight.sc + + Ustraight.sc + Ustraightstroke.sc + + @MMK_R_CYR_Ze + + Ecyr + Ze + Zedescender + + @MMK_R_CYR_Ze.sc + + Ecyr.sc + Ze.sc + Zedescender.sc + + @MMK_R_CYR_Zhe + + Zhe + Zhebreve + Zhedescender + Ha + Hadescender + + @MMK_R_CYR_Zhe.sc + + Zhe.sc + Zhebreve.sc + Zhedescender.sc + Ha.sc + Hadescender.sc + + @MMK_R_CYR_acyr + + abrevecyr + acyr + aie + + @MMK_R_CYR_che + + che + chedescender + + @MMK_R_CYR_el + + el + lje + + @MMK_R_CYR_ie + + ef + es + esdescender + fita + ie + iebreve + iegrave + ieukran + io + obarcyr + ocyr + odieresiscyr + schwacyr + + @MMK_R_CYR_iukran + + iukran + yi + + @MMK_R_CYR_shha + + palochka + shha + dje + tshe + + @MMK_R_CYR_te + + hard + kabashkir + te + + @MMK_R_CYR_ucyr + + uacutedblcyr + ucyr + umacroncyr + ushort + + @MMK_R_CYR_ustraight + + izhitsa + ustraight + ustraightstroke + + @MMK_R_CYR_ve + + dzhe + em + en + ghe + ghestroke + gheup + gje + icyr + igravecyr + imacroncyr + ishort + ka + kadescender + kje + nje + pe + sha + shcha + soft + tse + ve + yeru + endescender + yu + + @MMK_R_CYR_ze + + ecyr + ze + zedescender + + @MMK_R_CYR_zhe + + ha + zhe + zhebreve + zhedescender + hadescender + + @MMK_R_GRK_Alpha + + Alpha + Lambda + Delta + + @MMK_R_GRK_Alpha.sc + + Alpha.sc + Lambda.sc + Delta.sc + + @MMK_R_GRK_Beta + + Beta + Epsilon + Eta + Gamma + Iota + Iotadieresis + Kappa + Pi + Rho + + @MMK_R_GRK_Beta.sc + + Beta.sc + Epsilon.sc + Eta.sc + Gamma.sc + Iota.sc + Iotadieresis.sc + Kappa.sc + Pi.sc + Rho.sc + + @MMK_R_GRK_Epsilontonos + + Epsilontonos + Etatonos + Iotatonos + + @MMK_R_GRK_Mu + + Mu + Nu + + @MMK_R_GRK_Mu.sc + + Mu.sc + Nu.sc + + @MMK_R_GRK_Theta + + Omicron + Theta + + @MMK_R_GRK_Theta.sc + + Omicron.sc + Theta.sc + + @MMK_R_GRK_Upsilon + + Upsilon + Upsilondieresis + + @MMK_R_GRK_Upsilon.sc + + Upsilon.sc + Upsilondieresis.sc + + @MMK_R_GRK_alpha + + alpha + alphatonos + omicron + omicrontonos + phi + sigma + koppa + sigma.end + stigma + omega + omegatonos + + @MMK_R_GRK_epsilon + + epsilon + epsilontonos + + @MMK_R_GRK_eta + + eta + etatonos + kappa + + @MMK_R_GRK_gamma + + gamma + nu + + @MMK_R_GRK_iota + + iota + iotatonos + + @MMK_R_GRK_iotadieresis + + iotadieresis + iotadieresistonos + + @MMK_R_GRK_mu + + digamma + mu + + @MMK_R_GRK_upsilon + + psi + upsilon + upsilondieresis + upsilondieresistonos + upsilontonos + + @MMK_R_LAT_A + + A + Aacute + Abreve + Acircumflex + Adieresis + Agrave + Amacron + Aogonek + Aring + Atilde + Abreveacute + Abrevedotbelow + Abrevegrave + Abrevehoi + Abrevetilde + Acaron + Acircumflexacute + Acircumflexdotbelow + Acircumflexgrave + Acircumflexhoi + Acircumflextilde + Adotbelow + Ahoi + + @MMK_R_LAT_A.sc + + A.sc + Aacute.sc + Abreve.sc + Acircumflex.sc + Adieresis.sc + Agrave.sc + Amacron.sc + Aogonek.sc + Aring.sc + Atilde.sc + Abreveacute.sc + Abrevedotbelow.sc + Abrevegrave.sc + Abrevehoi.sc + Abrevetilde.sc + Acaron.sc + Acircumflexacute.sc + Acircumflexdotbelow.sc + Acircumflexgrave.sc + Acircumflexhoi.sc + Acircumflextilde.sc + Adotbelow.sc + Ahoi.sc + + @MMK_R_LAT_E + + B + D + Dcaron + Dcroat + E + Eacute + Ecaron + Ecircumflex + Edieresis + Edotaccent + Egrave + Emacron + Eogonek + Eth + F + H + I + Iacute + Icircumflex + Idieresis + Idotaccent + Igrave + Imacron + Iogonek + K + Kcommaaccent + L + Lacute + Lcaron + Ldot + Lslash + P + R + Racute + Rcaron + Rcommaaccent + Thorn + Lcommaaccent + Ddotbelow + Dlinebelow + Ebreve + Ecircumflexacute + Ecircumflexdotbelow + Ecircumflexgrave + Ecircumflexhoi + Ecircumflextilde + Edotbelow + Ehoi + Etilde + Hbrevebelow + Hcircumflex + Hdotbelow + Icaron + Idotbelow + Ihoi + Itilde + Ldotbelow + Ldotbelowmacron + Llinebelow + Rdotbelow + Rdotbelowmacron + Rlinebelow + Hbar + + @MMK_R_LAT_E.sc + + B.sc + D.sc + Dcaron.sc + Dcroat.sc + E.sc + Eacute.sc + Ecaron.sc + Ecircumflex.sc + Edieresis.sc + Edotaccent.sc + Egrave.sc + Emacron.sc + Eogonek.sc + Eth.sc + F.sc + H.sc + I.sc + Iacute.sc + Icircumflex.sc + Idieresis.sc + Idotaccent.sc + Igrave.sc + Imacron.sc + Iogonek.sc + K.sc + Kcommaaccent.sc + L.sc + Lacute.sc + Lcaron.sc + Ldot.sc + Lslash.sc + P.sc + R.sc + Racute.sc + Rcaron.sc + Rcommaaccent.sc + Thorn.sc + Lcommaaccent.sc + Ddotbelow.sc + Dlinebelow.sc + Ebreve.sc + Ecircumflexacute.sc + Ecircumflexdotbelow.sc + Ecircumflexgrave.sc + Ecircumflexhoi.sc + Ecircumflextilde.sc + Edotbelow.sc + Ehoi.sc + Etilde.sc + Hbrevebelow.sc + Hcircumflex.sc + Hdotbelow.sc + Icaron.sc + Idotbelow.sc + Ihoi.sc + Itilde.sc + Ldotbelow.sc + Ldotbelowmacron.sc + Llinebelow.sc + Rdotbelow.sc + Rdotbelowmacron.sc + Rlinebelow.sc + Hbar.sc + + @MMK_R_LAT_J + + J + Jcircumflex + + @MMK_R_LAT_J.sc + + J.sc + Jcircumflex.sc + + @MMK_R_LAT_M + + M + N + Nacute + Ncaron + Ntilde + Ndotaccent + Ncommaaccent + Macute + Mdotbelow + Ndotbelow + Ngrave + Nlinebelow + + @MMK_R_LAT_M.sc + + M.sc + N.sc + Nacute.sc + Ncaron.sc + Ntilde.sc + Ndotaccent.sc + Ncommaaccent.sc + Macute.sc + Mdotbelow.sc + Ndotbelow.sc + Ngrave.sc + Nlinebelow.sc + + @MMK_R_LAT_O + + C + Cacute + Ccaron + Ccedilla + G + Gbreve + Gdotaccent + O + OE + Oacute + Ocircumflex + Odieresis + Ograve + Ohungarumlaut + Omacron + Oslash + Otilde + Q + Gcommaaccent + Ccircumflex + Cdotaccent + Obreve + Ocaron + Ocircumflexacute + Ocircumflexdotbelow + Ocircumflexgrave + Ocircumflexhoi + Ocircumflextilde + Odotbelow + Ohoi + Ohorn + Ohornacute + Ohorndotbelow + Ohorngrave + Ohornhoi + Ohorntilde + Gcaron + Gcircumflex + Gmacron + Gtilde + Schwa + + @MMK_R_LAT_O.sc + + C.sc + Cacute.sc + Ccaron.sc + Ccedilla.sc + G.sc + Gbreve.sc + Gdotaccent.sc + O.sc + OE.sc + Oacute.sc + Ocircumflex.sc + Odieresis.sc + Ograve.sc + Ohungarumlaut.sc + Omacron.sc + Oslash.sc + Otilde.sc + Q.sc + Gcommaaccent.sc + Ccircumflex.sc + Cdotaccent.sc + Obreve.sc + Ocaron.sc + Ocircumflexacute.sc + Ocircumflexdotbelow.sc + Ocircumflexgrave.sc + Ocircumflexhoi.sc + Ocircumflextilde.sc + Odotbelow.sc + Ohoi.sc + Ohorn.sc + Ohornacute.sc + Ohorndotbelow.sc + Ohorngrave.sc + Ohornhoi.sc + Ohorntilde.sc + Gcaron.sc + Gcircumflex.sc + Gmacron.sc + Gtilde.sc + Schwa.sc + + @MMK_R_LAT_S + + S + Sacute + Scaron + Scedilla + Scommaaccent + Scircumflex + Sdotaccent + Sdotbelow + + @MMK_R_LAT_S.sc + + S.sc + Sacute.sc + Scaron.sc + Scedilla.sc + Scommaaccent.sc + Scircumflex.sc + Sdotaccent.sc + Sdotbelow.sc + germandbls.sc + + @MMK_R_LAT_T + + T + Tcaron + Tcommaaccent + Tcedilla + Tdotbelow + Tlinebelow + + @MMK_R_LAT_T.sc + + T.sc + Tcaron.sc + Tcommaaccent.sc + Tcedilla.sc + Tdotbelow.sc + Tlinebelow.sc + tdieresis.sc + + @MMK_R_LAT_U + + U + Uacute + Ucircumflex + Udieresis + Ugrave + Uhungarumlaut + Umacron + Uogonek + Uring + Ubreve + Ucaron + Udieresisacute + Udieresiscaron + Udieresisgrave + Udieresismacron + Udotbelow + Uhoi + Uhorn + Uhornacute + Uhorndotbelow + Uhorngrave + Uhornhoi + Uhorntilde + Utilde + + @MMK_R_LAT_U.sc + + U.sc + Uacute.sc + Ucircumflex.sc + Udieresis.sc + Ugrave.sc + Uhungarumlaut.sc + Umacron.sc + Uogonek.sc + Uring.sc + Ubreve.sc + Ucaron.sc + Udieresisacute.sc + Udieresiscaron.sc + Udieresisgrave.sc + Udieresismacron.sc + Udotbelow.sc + Uhoi.sc + Uhorn.sc + Uhornacute.sc + Uhorndotbelow.sc + Uhorngrave.sc + Uhornhoi.sc + Uhorntilde.sc + Utilde.sc + + @MMK_R_LAT_W + + W + Wacute + Wcircumflex + Wdieresis + Wgrave + + @MMK_R_LAT_W.sc + + W.sc + Wacute.sc + Wcircumflex.sc + Wdieresis.sc + Wgrave.sc + + @MMK_R_LAT_Y + + Y + Yacute + Ydieresis + Ycircumflex + Ydotaccent + Ydotbelow + Ygrave + Yhoi + Ytilde + + @MMK_R_LAT_Y.sc + + Y.sc + Yacute.sc + Ydieresis.sc + Ycircumflex.sc + Ydotaccent.sc + Ydotbelow.sc + Ygrave.sc + Yhoi.sc + Ytilde.sc + + @MMK_R_LAT_Z + + Z + Zacute + Zcaron + Zdotaccent + Zdotbelow + + @MMK_R_LAT_Z.sc + + Z.sc + Zacute.sc + Zcaron.sc + Zdotaccent.sc + Zdotbelow.sc + + @MMK_R_LAT_a + + a + aacute + abreve + acircumflex + adieresis + ae + agrave + amacron + aogonek + aring + atilde + abreveacute + abrevedotbelow + abrevegrave + abrevehoi + abrevetilde + acaron + acircumflexacute + acircumflexdotbelow + acircumflexgrave + acircumflexhoi + acircumflextilde + adotbelow + ahoi + + @MMK_R_LAT_f + + f + germandbls + longs + f_i + f_l + f_t + f_f + f_f_i + f_f_l + + @MMK_R_LAT_f.sc + + f_i.sc + f_l.sc + + @MMK_R_LAT_g + + g + gbreve + gdotaccent + gcommaaccent + gcaron + gcircumflex + gmacron + gtilde + + @MMK_R_LAT_h + + h + k + kcommaaccent + l + lacute + lcaron + ldot + lslash + b + lcommaaccent + ldotbelow + ldotbelowmacron + llinebelow + hbrevebelow + hcircumflex + hdotbelow + hbar + + @MMK_R_LAT_i + + i + iacute + igrave + iogonek + i.trk + idotbelow + ihoi + + @MMK_R_LAT_icircumflex + + icircumflex + idieresis + imacron + icaron + itilde + + @MMK_R_LAT_j + + j + jcircumflex + dotlessj + + @MMK_R_LAT_m + + m + n + nacute + ncaron + ntilde + r + racute + rcaron + rcommaaccent + ndotaccent + ncommaaccent + dotlessi + macute + mdotbelow + ndotbelow + ngrave + nlinebelow + rdotbelow + rdotbelowmacron + rlinebelow + kgreenlandic + + @MMK_R_LAT_o + + c + cacute + ccaron + ccedilla + d + dcaron + dcroat + e + eacute + ecaron + ecircumflex + edieresis + edotaccent + egrave + emacron + eogonek + eth + o + oacute + ocircumflex + odieresis + oe + ograve + ohungarumlaut + omacron + oslash + otilde + q + ccircumflex + cdotaccent + ddotbelow + dlinebelow + ebreve + ecircumflexacute + ecircumflexdotbelow + ecircumflexgrave + ecircumflexhoi + ecircumflextilde + edotbelow + ehoi + etilde + ocaron + ocircumflexacute + ocircumflexdotbelow + ocircumflexgrave + ocircumflexhoi + ocircumflextilde + odotbelow + ohoi + ohorn + ohornacute + ohorndotbelow + ohorngrave + ohornhoi + ohorntilde + obreve + schwa + + @MMK_R_LAT_s + + s + sacute + scaron + scedilla + scommaaccent + scircumflex + sdotaccent + sdotbelow + + @MMK_R_LAT_t + + t + tcaron + tcommaaccent + tcedilla + tdieresis + tdotbelow + tlinebelow + + @MMK_R_LAT_u + + u + uacute + ucircumflex + udieresis + ugrave + uhungarumlaut + umacron + uogonek + uring + ubreve + ucaron + udieresisacute + udieresiscaron + udieresisgrave + udieresismacron + udotbelow + uhoi + uhorn + uhornacute + uhorndotbelow + uhorngrave + uhornhoi + uhorntilde + utilde + + @MMK_R_LAT_v + + v + w + wacute + wcircumflex + wdieresis + wgrave + + @MMK_R_LAT_y + + y + yacute + ydieresis + ycircumflex + ydotaccent + ydotbelow + ygrave + yhoi + ytilde + + @MMK_R_LAT_z + + z + zacute + zcaron + zdotaccent + zdotbelow + + @MMK_R_colon + + colon + semicolon + + @MMK_R_comma + + comma + ellipsis + period + + @MMK_R_comma.sups + + comma.sups + period.sups + + @MMK_R_copyright + + copyright + soundcopyright + copyleft + + @MMK_R_eight.lf + + eight.lf + eight.osf + + @MMK_R_equal + + equal + notequal + approxequal + + @MMK_R_fractions + + onehalf + onequarter + percent + perthousand + threequarters + fiveeighths + oneeighth + onethird + seveneighths + threeeighths + twothirds + + @MMK_R_greater + + greater + multiply + + @MMK_R_guilsinglleft + + guillemotleft + guillemotleft.cap + guilsinglleft + guilsinglleft.cap + + @MMK_R_guilsinglright + + guillemotright + guillemotright.cap + guilsinglright + guilsinglright.cap + + @MMK_R_hyphen + + emdash + endash + hyphen + horizontalbar + emdash.cap + endash.cap + horizontalbar.cap + hyphen.cap + figuredash + threeemdash + twoemdash + + @MMK_R_hyphen.sc + + emdash.sc + endash.sc + hyphen.sc + + @MMK_R_hyphen.sups + + emdash.sups + endash.sups + hyphen.sups + + @MMK_R_parenleft + + braceleft + braceleft.cap + bracketleft + bracketleft.cap + parenleft + parenleft.cap + + @MMK_R_parenleft.sc + + braceleft.sc + bracketleft.sc + parenleft.sc + + @MMK_R_parenright + + braceright + braceright.cap + bracketright + bracketright.cap + parenright + parenright.cap + + @MMK_R_parenright.sc + + braceright.sc + bracketright.sc + parenright.sc + + @MMK_R_periodcentered + + bulletoperator + periodcentered + + @MMK_R_plus + + asciitilde + divide + less + logicalnot + minus + plus + + @MMK_R_quotedbl + + quotedbl + quotesingle + + @MMK_R_quotedbl.sc + + quotedbl.sc + quotesingle.sc + + @MMK_R_quoteleft + + quotedblleft + quoteleft + + @MMK_R_quoteleft.sc + + quotedblleft.sc + quoteleft.sc + + @MMK_R_quoteright + + quotedblright + quoteright + + @MMK_R_quoteright.sc + + quotedblright.sc + quoteright.sc + + @MMK_R_quotesinglbase + + quotedblbase + quotesinglbase + + @MMK_R_registered + + asterisk + registered + + @MMK_R_six.lf + + six.lf + six.osf + + @MMK_R_subs_figures + + eight.subs + five.subs + four.subs + nine.subs + one.subs + seven.subs + six.subs + three.subs + two.subs + zero.subs + + @MMK_R_sups_corner + + b.sups + f.sups + h.sups + i.sups + k.sups + l.sups + m.sups + n.sups + r.sups + x.sups + z.sups + A.sups + B.sups + D.sups + E.sups + F.sups + H.sups + I.sups + K.sups + L.sups + M.sups + N.sups + P.sups + R.sups + X.sups + Z.sups + + @MMK_R_sups_desc + + g.sups + p.sups + y.sups + + @MMK_R_sups_diag + + v.sups + w.sups + V.sups + W.sups + T.sups + Y.sups + + @MMK_R_sups_figures + + eight.sups + five.sups + four.sups + nine.sups + one.sups + seven.sups + six.sups + three.sups + two.sups + zero.sups + + @MMK_R_sups_j + + J.sups + j.sups + + @MMK_R_sups_round + + a.sups + c.sups + d.sups + e.sups + eacute.sups + egrave.sups + o.sups + q.sups + s.sups + ordfeminine + ordmasculine + u.sups + t.sups + C.sups + G.sups + O.sups + Q.sups + S.sups + U.sups + + @MMK_R_trademark + + servicemark + trademark + commercemark + deposeemark + + @MMK_R_zero.lf + + zero.lf + zero.lfslash + + ADDL_AL3_AL4 + + Abreveacute + Abrevedotbelow + Abrevegrave + Abrevehoi + Abrevetilde + Acaron + Acircumflexacute + Acircumflexdotbelow + Acircumflexgrave + Acircumflexhoi + Acircumflextilde + Adotbelow + Ahoi + Ccircumflex + Cdotaccent + Ddotbelow + Dlinebelow + Ebreve + Ecircumflexacute + Ecircumflexdotbelow + Ecircumflexgrave + Ecircumflexhoi + Ecircumflextilde + Edotbelow + Ehoi + Etilde + Gcaron + Gcircumflex + Gmacron + Gtilde + Hbar + Hbrevebelow + Hcircumflex + Hdotbelow + Icaron + Idotbelow + Ihoi + Itilde + Jcircumflex + Ldotbelow + Ldotbelowmacron + Llinebelow + Mdotbelow + Ndotbelow + Nlinebelow + Ocaron + Ocircumflexacute + Ocircumflexdotbelow + Ocircumflexgrave + Ocircumflexhoi + Ocircumflextilde + Odotbelow + Ohoi + Ohorn + Ohornacute + Ohorndotbelow + Ohorngrave + Ohornhoi + Ohorntilde + Rdotbelow + Rdotbelowmacron + Rlinebelow + Scircumflex + Sdotaccent + Sdotbelow + Germandbls + Tdotbelow + Tlinebelow + Ubreve + Ucaron + Udieresisacute + Udieresiscaron + Udieresisgrave + Udieresismacron + Udotbelow + Uhoi + Uhorn + Uhornacute + Uhorndotbelow + Uhorngrave + Uhornhoi + Uhorntilde + Utilde + Wacute + Wcircumflex + Wdieresis + Wgrave + Ycircumflex + Ydotaccent + Ydotbelow + Ygrave + Yhoi + Ytilde + Zdotbelow + Schwa + abreveacute + abrevedotbelow + abrevegrave + abrevehoi + abrevetilde + acaron + acircumflexacute + acircumflexdotbelow + acircumflexgrave + acircumflexhoi + acircumflextilde + adotbelow + ahoi + ccircumflex + cdotaccent + ddotbelow + dlinebelow + ebreve + ecircumflexacute + ecircumflexdotbelow + ecircumflexgrave + ecircumflexhoi + ecircumflextilde + edotbelow + ehoi + etilde + gcaron + gcircumflex + gmacron + gtilde + hbar + hbrevebelow + hcircumflex + hdotbelow + icaron + idotbelow + ihoi + itilde + dotlessj + jcircumflex + kgreenlandic + ldotbelow + ldotbelowmacron + llinebelow + mdotbelow + napostrophe + ndotbelow + nlinebelow + ocaron + ocircumflexacute + ocircumflexdotbelow + ocircumflexgrave + ocircumflexhoi + ocircumflextilde + odotbelow + ohoi + ohorn + ohornacute + ohorndotbelow + ohorngrave + ohornhoi + ohorntilde + rdotbelow + rdotbelowmacron + rlinebelow + scircumflex + sdotaccent + sdotbelow + tdieresis + tdotbelow + tlinebelow + ubreve + ucaron + udieresisacute + udieresiscaron + udieresisgrave + udieresismacron + udotbelow + uhoi + uhorn + uhornacute + uhorndotbelow + uhorngrave + uhornhoi + uhorntilde + utilde + wacute + wcircumflex + wdieresis + wgrave + ycircumflex + ydotaccent + ydotbelow + ygrave + yhoi + ytilde + zdotbelow + schwa + alphalatin + gscript + f_f + f_f_i + f_f_l + zero.cap + one.cap + two.cap + three.cap + four.cap + five.cap + six.cap + seven.cap + eight.cap + nine.cap + bracketleft.sups + bracketright.sups + bracketleft.subs + bracketright.subs + bracketleft.dnom + bracketright.dnom + bracketleft.numr + bracketright.numr + A.sups + B.sups + C.sups + D.sups + E.sups + F.sups + G.sups + H.sups + I.sups + J.sups + K.sups + L.sups + M.sups + N.sups + O.sups + P.sups + Q.sups + R.sups + S.sups + T.sups + U.sups + V.sups + W.sups + X.sups + Y.sups + Z.sups + colonmonetary + lira + naira + peseta + won + dong + peso + guarani + hryvnia + cedi + ruble + bitcoin + ringhalfleftmod + ringhalfrightmod + verticallinemod + verticallinelowmod + verticallinebelowcmb + brevebelowcmb + dieresisbelowcmb + dotbelowcmb + hoicmb + hoicmb.cap + horncmb + macronbelowcmb + dieresisacute + dieresisacute.cap + dieresisgrave + dieresisgrave.cap + dieresismacron + dieresismacron.cap + dieresiscaron + dieresiscaron.cap + circumflexacute + circumflexacute.cap + circumflexgrave + circumflexgrave.cap + circumflexhoi + circumflexhoi.cap + circumflextilde + circumflextilde.cap + breveacute + breveacute.cap + brevegrave + brevegrave.cap + brevehoi + brevehoi.cap + brevetilde + brevetilde.cap + Alpha + Beta + Gamma + Delta + Epsilon + Zeta + Eta + Theta + Iota + Kappa + Lambda + Mu + Nu + Xi + Omicron + Pi + Rho + Sigma + Tau + Upsilon + Phi + Chi + Psi + Omega + Alphatonos + Epsilontonos + Etatonos + Iotatonos + Iotadieresis + Omicrontonos + Upsilontonos + Upsilondieresis + Omegatonos + alpha + beta + gamma + delta + epsilon + zeta + eta + theta + iota + kappa + lambda + mu + nu + xi + omicron + rho + sigma + tau + upsilon + phi + chi + psi + omega + sigma.end + alphatonos + epsilontonos + etatonos + iotatonos + iotadieresis + omicrontonos + upsilontonos + upsilondieresis + omegatonos + iotadieresistonos + upsilondieresistonos + kai + koppa + stigma + digamma + sampi + questiongreek + anoteleia + anoteleia.cap + numeralsign + lownumeralsign + tonos + tonos.cap + dieresistonos + tonoscmb + dieresistonoscmb + Acyr + Be + Ve + Ghe + De + Ie + Zhe + Ze + Icyr + Ishort + Ka + El + Em + En + Ocyr + Pe + Er + Es + Te + Ucyr + Ef + Ha + Tse + Che + Sha + Shcha + Hard + Yeru + Soft + Ecyr + Yu + Ya + Iegrave + Io + Dje + Gje + Ieukran + Dze + Iukran + Yi + Je + Lje + Nje + Tshe + Kje + Igravecyr + Ushort + Dzhe + Yat + Fita + Izhitsa + Gheup + Ghestroke + Zhedescender + Zedescender + Kadescender + Kabashkir + Endescender + Esdescender + Ustraight + Ustraightstroke + Hadescender + Chedescender + Shha + Palochka + Zhebreve + Abrevecyr + Aie + Iebreve + Schwacyr + Imacroncyr + Odieresiscyr + Obarcyr + Umacroncyr + Uacutedblcyr + acyr + be + ve + ghe + de + ie + zhe + ze + icyr + ishort + ka + el + em + en + ocyr + pe + er + es + te + ucyr + ef + ha + tse + che + sha + shcha + hard + yeru + soft + ecyr + yu + ya + iegrave + io + dje + gje + ieukran + dze + iukran + yi + je + lje + nje + tshe + kje + igravecyr + ushort + dzhe + yat + fita + izhitsa + gheup + ghestroke + zhedescender + zedescender + kadescender + kabashkir + endescender + esdescender + ustraight + ustraightstroke + hadescender + chedescender + shha + zhebreve + palochka + abrevecyr + aie + iebreve + schwacyr + imacroncyr + odieresiscyr + obarcyr + umacroncyr + uacutedblcyr + be.srb + numero + brevecmb.cyr + brevecmb.cyrcap + twoemdash + threeemdash + commercemark + deposeemark + Macute + macute + Ngrave + ngrave + Obreve + obreve + twodotenleader + exclamdbl + questiondbl + questionexclam + exclamquestion + + ADDL_AL3_AL4.sc + + Abreveacute.sc + Abrevedotbelow.sc + Abrevegrave.sc + Abrevehoi.sc + Abrevetilde.sc + Acaron.sc + Acircumflexacute.sc + Acircumflexdotbelow.sc + Acircumflexgrave.sc + Acircumflexhoi.sc + Acircumflextilde.sc + Adotbelow.sc + Ahoi.sc + Ccircumflex.sc + Cdotaccent.sc + Ddotbelow.sc + Dlinebelow.sc + Ebreve.sc + Ecircumflexacute.sc + Ecircumflexdotbelow.sc + Ecircumflexgrave.sc + Ecircumflexhoi.sc + Ecircumflextilde.sc + Edotbelow.sc + Ehoi.sc + Etilde.sc + Gcaron.sc + Gcircumflex.sc + Gmacron.sc + Gtilde.sc + Hbar.sc + Hbrevebelow.sc + Hcircumflex.sc + Hdotbelow.sc + Icaron.sc + Idotbelow.sc + Ihoi.sc + Itilde.sc + Jcircumflex.sc + Ldotbelow.sc + Ldotbelowmacron.sc + Llinebelow.sc + Mdotbelow.sc + Ndotbelow.sc + Nlinebelow.sc + Ocaron.sc + Ocircumflexacute.sc + Ocircumflexdotbelow.sc + Ocircumflexgrave.sc + Ocircumflexhoi.sc + Ocircumflextilde.sc + Odotbelow.sc + Ohoi.sc + Ohorn.sc + Ohornacute.sc + Ohorndotbelow.sc + Ohorngrave.sc + Ohornhoi.sc + Ohorntilde.sc + Rdotbelow.sc + Rdotbelowmacron.sc + Rlinebelow.sc + Scircumflex.sc + Sdotaccent.sc + Sdotbelow.sc + Germandbls.sc + Tdotbelow.sc + Tlinebelow.sc + Ubreve.sc + Ucaron.sc + Udieresisacute.sc + Udieresiscaron.sc + Udieresisgrave.sc + Udieresismacron.sc + Udotbelow.sc + Uhoi.sc + Uhorn.sc + Uhornacute.sc + Uhorndotbelow.sc + Uhorngrave.sc + Uhornhoi.sc + Uhorntilde.sc + Utilde.sc + Wacute.sc + Wcircumflex.sc + Wdieresis.sc + Wgrave.sc + Ycircumflex.sc + Ydotaccent.sc + Ydotbelow.sc + Ygrave.sc + Yhoi.sc + Ytilde.sc + Zdotbelow.sc + Schwa.sc + tdieresis.sc + Alpha.sc + Beta.sc + Gamma.sc + Delta.sc + Epsilon.sc + Zeta.sc + Eta.sc + Theta.sc + Iota.sc + Kappa.sc + Lambda.sc + Mu.sc + Nu.sc + Xi.sc + Omicron.sc + Pi.sc + Rho.sc + Sigma.sc + Tau.sc + Upsilon.sc + Phi.sc + Chi.sc + Psi.sc + Omega.sc + Iotadieresis.sc + Upsilondieresis.sc + Acyr.sc + Be.sc + Ve.sc + Ghe.sc + De.sc + Ie.sc + Zhe.sc + Ze.sc + Icyr.sc + Ishort.sc + Ka.sc + El.sc + Em.sc + En.sc + Ocyr.sc + Pe.sc + Er.sc + Es.sc + Te.sc + Ucyr.sc + Ef.sc + Ha.sc + Tse.sc + Che.sc + Sha.sc + Shcha.sc + Hard.sc + Yeru.sc + Soft.sc + Ecyr.sc + Yu.sc + Ya.sc + Iegrave.sc + Io.sc + Dje.sc + Gje.sc + Ieukran.sc + Dze.sc + Iukran.sc + Yi.sc + Je.sc + Lje.sc + Nje.sc + Tshe.sc + Kje.sc + Igravecyr.sc + Ushort.sc + Dzhe.sc + Yat.sc + Fita.sc + Izhitsa.sc + Gheup.sc + Ghestroke.sc + Zhedescender.sc + Zedescender.sc + Kadescender.sc + Kabashkir.sc + Endescender.sc + Esdescender.sc + Ustraight.sc + Ustraightstroke.sc + Hadescender.sc + Chedescender.sc + Shha.sc + Palochka.sc + Zhebreve.sc + Abrevecyr.sc + Aie.sc + Iebreve.sc + Schwacyr.sc + Imacroncyr.sc + Odieresiscyr.sc + Obarcyr.sc + Umacroncyr.sc + Uacutedblcyr.sc + Macute.sc + Ngrave.sc + Obreve.sc + + COMBINING_MARKS + + commabelowcmb.alt + gravecmb + gravecmb.cap + acutecmb + acutecmb.cap + circumflexcmb + circumflexcmb.cap + tildecmb + tildecmb.cap + macroncmb + macroncmb.cap + brevecmb + brevecmb.cap + dotaccentcmb + dotaccentcmb.cap + dieresiscmb + dieresiscmb.cap + ringcmb + ringcmb.cap + hungarumlautcmb + hungarumlautcmb.cap + caroncmb + caroncmb.cap + commabelowcmb + cedillacmb + ogonekcmb + verticallinebelowcmb + brevebelowcmb + dieresisbelowcmb + dotbelowcmb + hoicmb + hoicmb.cap + horncmb + macronbelowcmb + dieresisacute + dieresisacute.cap + dieresisgrave + dieresisgrave.cap + dieresismacron + dieresismacron.cap + dieresiscaron + dieresiscaron.cap + circumflexacute + circumflexacute.cap + circumflexgrave + circumflexgrave.cap + circumflexhoi + circumflexhoi.cap + circumflextilde + circumflextilde.cap + breveacute + breveacute.cap + brevegrave + brevegrave.cap + brevehoi + brevehoi.cap + brevetilde + brevetilde.cap + tonoscmb + dieresistonoscmb + brevecmb.cyr + brevecmb.cyrcap + + CYRILLIC + + Acyr + Be + Ve + Ghe + De + Ie + Zhe + Ze + Icyr + Ishort + Ka + El + Em + En + Ocyr + Pe + Er + Es + Te + Ucyr + Ef + Ha + Tse + Che + Sha + Shcha + Hard + Yeru + Soft + Ecyr + Yu + Ya + Iegrave + Io + Dje + Gje + Ieukran + Dze + Iukran + Yi + Je + Lje + Nje + Tshe + Kje + Igravecyr + Ushort + Dzhe + Yat + Fita + Izhitsa + Gheup + Ghestroke + Zhedescender + Zedescender + Kadescender + Kabashkir + Endescender + Esdescender + Ustraight + Ustraightstroke + Hadescender + Chedescender + Shha + Palochka + Zhebreve + Abrevecyr + Aie + Iebreve + Schwacyr + Imacroncyr + Odieresiscyr + Obarcyr + Umacroncyr + Uacutedblcyr + acyr + be + ve + ghe + de + ie + zhe + ze + icyr + ishort + ka + el + em + en + ocyr + pe + er + es + te + ucyr + ef + ha + tse + che + sha + shcha + hard + yeru + soft + ecyr + yu + ya + iegrave + io + dje + gje + ieukran + dze + iukran + yi + je + lje + nje + tshe + kje + igravecyr + ushort + dzhe + yat + fita + izhitsa + gheup + ghestroke + zhedescender + zedescender + kadescender + kabashkir + endescender + esdescender + ustraight + ustraightstroke + hadescender + chedescender + shha + zhebreve + palochka + abrevecyr + aie + iebreve + schwacyr + imacroncyr + odieresiscyr + obarcyr + umacroncyr + uacutedblcyr + be.srb + numero + brevecmb.cyr + brevecmb.cyrcap + + CYRILLIC.sc + + Acyr.sc + Be.sc + Ve.sc + Ghe.sc + De.sc + Ie.sc + Zhe.sc + Ze.sc + Icyr.sc + Ishort.sc + Ka.sc + El.sc + Em.sc + En.sc + Ocyr.sc + Pe.sc + Er.sc + Es.sc + Te.sc + Ucyr.sc + Ef.sc + Ha.sc + Tse.sc + Che.sc + Sha.sc + Shcha.sc + Hard.sc + Yeru.sc + Soft.sc + Ecyr.sc + Yu.sc + Ya.sc + Iegrave.sc + Io.sc + Dje.sc + Gje.sc + Ieukran.sc + Dze.sc + Iukran.sc + Yi.sc + Je.sc + Lje.sc + Nje.sc + Tshe.sc + Kje.sc + Igravecyr.sc + Ushort.sc + Dzhe.sc + Yat.sc + Fita.sc + Izhitsa.sc + Gheup.sc + Ghestroke.sc + Zhedescender.sc + Zedescender.sc + Kadescender.sc + Kabashkir.sc + Endescender.sc + Esdescender.sc + Ustraight.sc + Ustraightstroke.sc + Hadescender.sc + Chedescender.sc + Shha.sc + Palochka.sc + Zhebreve.sc + Abrevecyr.sc + Aie.sc + Iebreve.sc + Schwacyr.sc + Imacroncyr.sc + Odieresiscyr.sc + Obarcyr.sc + Umacroncyr.sc + Uacutedblcyr.sc + + GREEK + + Alpha + Beta + Gamma + Delta + Epsilon + Zeta + Eta + Theta + Iota + Kappa + Lambda + Mu + Nu + Xi + Omicron + Pi + Rho + Sigma + Tau + Upsilon + Phi + Chi + Psi + Omega + Alphatonos + Epsilontonos + Etatonos + Iotatonos + Iotadieresis + Omicrontonos + Upsilontonos + Upsilondieresis + Omegatonos + alpha + beta + gamma + delta + epsilon + zeta + eta + theta + iota + kappa + lambda + mu + nu + xi + omicron + pi + rho + sigma + tau + upsilon + phi + chi + psi + omega + sigma.end + alphatonos + epsilontonos + etatonos + iotatonos + iotadieresis + omicrontonos + upsilontonos + upsilondieresis + omegatonos + iotadieresistonos + upsilondieresistonos + kai + koppa + stigma + digamma + sampi + questiongreek + anoteleia + anoteleia.cap + numeralsign + lownumeralsign + tonos + tonos.cap + dieresistonos + tonoscmb + dieresistonoscmb + + GREEK.sc + + Alpha.sc + Beta.sc + Gamma.sc + Delta.sc + Epsilon.sc + Zeta.sc + Eta.sc + Theta.sc + Iota.sc + Kappa.sc + Lambda.sc + Mu.sc + Nu.sc + Xi.sc + Omicron.sc + Pi.sc + Rho.sc + Sigma.sc + Tau.sc + Upsilon.sc + Phi.sc + Chi.sc + Psi.sc + Omega.sc + Iotadieresis.sc + Upsilondieresis.sc + + LATIN + + A + B + C + D + E + F + G + H + I + J + K + L + M + N + O + P + Q + R + S + T + U + V + W + X + Y + Z + a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + t + u + v + w + x + y + z + Agrave + Aacute + Acircumflex + Atilde + Adieresis + Amacron + Abreve + Abreveacute + Abrevedotbelow + Abrevegrave + Abrevehoi + Abrevetilde + Acaron + Acircumflexacute + Acircumflexdotbelow + Acircumflexgrave + Acircumflexhoi + Acircumflextilde + Adotbelow + Ahoi + Aring + Aogonek + AE + Ccedilla + Cacute + Ccaron + Ccircumflex + Cdotaccent + Dcaron + Dcroat + Ddotbelow + Dlinebelow + Egrave + Eacute + Ecircumflex + Ecaron + Edieresis + Emacron + Edotaccent + Eogonek + Ebreve + Ecircumflexacute + Ecircumflexdotbelow + Ecircumflexgrave + Ecircumflexhoi + Ecircumflextilde + Edotbelow + Ehoi + Etilde + Gbreve + Gdotaccent + Gcommaaccent + Gcaron + Gcircumflex + Gmacron + Gtilde + Hbar + Hbrevebelow + Hcircumflex + Hdotbelow + Igrave + Iacute + Icircumflex + Idieresis + Imacron + Idotaccent + Iogonek + Icaron + Idotbelow + Ihoi + Itilde + Jcircumflex + Kcommaaccent + Lacute + Lcaron + Lcommaaccent + Ldot + Ldotbelow + Ldotbelowmacron + Llinebelow + Lslash + Mdotbelow + Nacute + Ncaron + Ntilde + Ncommaaccent + Ndotaccent + Ndotbelow + Nlinebelow + Ograve + Oacute + Ocircumflex + Otilde + Odieresis + Omacron + Ohungarumlaut + Ocaron + Ocircumflexacute + Ocircumflexdotbelow + Ocircumflexgrave + Ocircumflexhoi + Ocircumflextilde + Odotbelow + Ohoi + Ohorn + Ohornacute + Ohorndotbelow + Ohorngrave + Ohornhoi + Ohorntilde + Oslash + OE + Racute + Rcaron + Rcommaaccent + Rdotbelow + Rdotbelowmacron + Rlinebelow + Sacute + Scaron + Scedilla + Scommaaccent + Scircumflex + Sdotaccent + Sdotbelow + Germandbls + Tcaron + Tcedilla + Tcommaaccent + Tdotbelow + Tlinebelow + Ugrave + Uacute + Ucircumflex + Udieresis + Umacron + Uring + Uhungarumlaut + Uogonek + Ubreve + Ucaron + Udieresisacute + Udieresiscaron + Udieresisgrave + Udieresismacron + Udotbelow + Uhoi + Uhorn + Uhornacute + Uhorndotbelow + Uhorngrave + Uhornhoi + Uhorntilde + Utilde + Wacute + Wcircumflex + Wdieresis + Wgrave + Yacute + Ydieresis + Ycircumflex + Ydotaccent + Ydotbelow + Ygrave + Yhoi + Ytilde + Zacute + Zcaron + Zdotaccent + Zdotbelow + Eth + Thorn + Schwa + agrave + aacute + acircumflex + atilde + adieresis + amacron + abreve + abreveacute + abrevedotbelow + abrevegrave + abrevehoi + abrevetilde + acaron + acircumflexacute + acircumflexdotbelow + acircumflexgrave + acircumflexhoi + acircumflextilde + adotbelow + ahoi + aring + aogonek + ae + ccedilla + cacute + ccaron + ccircumflex + cdotaccent + dcaron + dcroat + ddotbelow + dlinebelow + egrave + eacute + ecircumflex + ecaron + edieresis + emacron + edotaccent + eogonek + ebreve + ecircumflexacute + ecircumflexdotbelow + ecircumflexgrave + ecircumflexhoi + ecircumflextilde + edotbelow + ehoi + etilde + gbreve + gdotaccent + gcommaaccent + gcaron + gcircumflex + gmacron + gtilde + hbar + hbrevebelow + hcircumflex + hdotbelow + igrave + iacute + icircumflex + idieresis + imacron + iogonek + i.trk + icaron + idotbelow + ihoi + itilde + dotlessi + dotlessj + jcircumflex + kcommaaccent + kgreenlandic + lacute + lcaron + lcommaaccent + ldot + ldotbelow + ldotbelowmacron + llinebelow + lslash + mdotbelow + nacute + ncaron + ntilde + ncommaaccent + ndotaccent + napostrophe + ndotbelow + nlinebelow + ograve + oacute + ocircumflex + otilde + odieresis + omacron + ohungarumlaut + ocaron + ocircumflexacute + ocircumflexdotbelow + ocircumflexgrave + ocircumflexhoi + ocircumflextilde + odotbelow + ohoi + ohorn + ohornacute + ohorndotbelow + ohorngrave + ohornhoi + ohorntilde + oslash + oe + racute + rcommaaccent + rcaron + rdotbelow + rdotbelowmacron + rlinebelow + sacute + scaron + scedilla + scommaaccent + scircumflex + sdotaccent + sdotbelow + longs + germandbls + tcaron + tcedilla + tcommaaccent + tdieresis + tdotbelow + tlinebelow + ugrave + uacute + ucircumflex + udieresis + umacron + uring + uhungarumlaut + uogonek + ubreve + ucaron + udieresisacute + udieresiscaron + udieresisgrave + udieresismacron + udotbelow + uhoi + uhorn + uhornacute + uhorndotbelow + uhorngrave + uhornhoi + uhorntilde + utilde + wacute + wcircumflex + wdieresis + wgrave + yacute + ydieresis + ycircumflex + ydotaccent + ydotbelow + ygrave + yhoi + ytilde + zacute + zcaron + zdotaccent + zdotbelow + eth + thorn + schwa + alphalatin + gscript + f_i + f_l + f_t + f_f + f_f_i + f_f_l + Macute + macute + Ngrave + ngrave + Obreve + obreve + exclamdown + exclamdown.cap + questiondown + questiondown.cap + + LATIN.sc + + A.sc + B.sc + C.sc + D.sc + E.sc + F.sc + G.sc + H.sc + I.sc + J.sc + K.sc + L.sc + M.sc + N.sc + O.sc + P.sc + Q.sc + R.sc + S.sc + T.sc + U.sc + V.sc + W.sc + X.sc + Y.sc + Z.sc + Agrave.sc + Aacute.sc + Acircumflex.sc + Atilde.sc + Adieresis.sc + Amacron.sc + Abreve.sc + Abreveacute.sc + Abrevedotbelow.sc + Abrevegrave.sc + Abrevehoi.sc + Abrevetilde.sc + Acaron.sc + Acircumflexacute.sc + Acircumflexdotbelow.sc + Acircumflexgrave.sc + Acircumflexhoi.sc + Acircumflextilde.sc + Adotbelow.sc + Ahoi.sc + Aring.sc + Aogonek.sc + AE.sc + Ccedilla.sc + Cacute.sc + Ccaron.sc + Ccircumflex.sc + Cdotaccent.sc + Dcaron.sc + Dcroat.sc + Ddotbelow.sc + Dlinebelow.sc + Egrave.sc + Eacute.sc + Ecircumflex.sc + Ecaron.sc + Edieresis.sc + Emacron.sc + Edotaccent.sc + Eogonek.sc + Ebreve.sc + Ecircumflexacute.sc + Ecircumflexdotbelow.sc + Ecircumflexgrave.sc + Ecircumflexhoi.sc + Ecircumflextilde.sc + Edotbelow.sc + Ehoi.sc + Etilde.sc + Gbreve.sc + Gdotaccent.sc + Gcommaaccent.sc + Gcaron.sc + Gcircumflex.sc + Gmacron.sc + Gtilde.sc + Hbar.sc + Hbrevebelow.sc + Hcircumflex.sc + Hdotbelow.sc + Igrave.sc + Iacute.sc + Icircumflex.sc + Idieresis.sc + Imacron.sc + Idotaccent.sc + Iogonek.sc + Icaron.sc + Idotbelow.sc + Ihoi.sc + Itilde.sc + Jcircumflex.sc + Kcommaaccent.sc + Lacute.sc + Lcaron.sc + Lcommaaccent.sc + Ldot.sc + Ldotbelow.sc + Ldotbelowmacron.sc + Llinebelow.sc + Lslash.sc + Mdotbelow.sc + Nacute.sc + Ncaron.sc + Ntilde.sc + Ncommaaccent.sc + Ndotaccent.sc + Ndotbelow.sc + Nlinebelow.sc + Ograve.sc + Oacute.sc + Ocircumflex.sc + Otilde.sc + Odieresis.sc + Omacron.sc + Ohungarumlaut.sc + Ocaron.sc + Ocircumflexacute.sc + Ocircumflexdotbelow.sc + Ocircumflexgrave.sc + Ocircumflexhoi.sc + Ocircumflextilde.sc + Odotbelow.sc + Ohoi.sc + Ohorn.sc + Ohornacute.sc + Ohorndotbelow.sc + Ohorngrave.sc + Ohornhoi.sc + Ohorntilde.sc + Oslash.sc + OE.sc + Racute.sc + Rcaron.sc + Rcommaaccent.sc + Rdotbelow.sc + Rdotbelowmacron.sc + Rlinebelow.sc + Sacute.sc + Scaron.sc + Scedilla.sc + Scommaaccent.sc + Scircumflex.sc + Sdotaccent.sc + Sdotbelow.sc + Germandbls.sc + Tcaron.sc + Tcedilla.sc + Tcommaaccent.sc + Tdotbelow.sc + Tlinebelow.sc + Ugrave.sc + Uacute.sc + Ucircumflex.sc + Udieresis.sc + Umacron.sc + Uring.sc + Uhungarumlaut.sc + Uogonek.sc + Ubreve.sc + Ucaron.sc + Udieresisacute.sc + Udieresiscaron.sc + Udieresisgrave.sc + Udieresismacron.sc + Udotbelow.sc + Uhoi.sc + Uhorn.sc + Uhornacute.sc + Uhorndotbelow.sc + Uhorngrave.sc + Uhornhoi.sc + Uhorntilde.sc + Utilde.sc + Wacute.sc + Wcircumflex.sc + Wdieresis.sc + Wgrave.sc + Yacute.sc + Ydieresis.sc + Ycircumflex.sc + Ydotaccent.sc + Ydotbelow.sc + Ygrave.sc + Yhoi.sc + Ytilde.sc + Zacute.sc + Zcaron.sc + Zdotaccent.sc + Zdotbelow.sc + Eth.sc + Thorn.sc + Schwa.sc + germandbls.sc + tdieresis.sc + f_i.sc + f_l.sc + Macute.sc + Ngrave.sc + Obreve.sc + exclamdown.sc + questiondown.sc + + cap_punc + + hyphen.cap + endash.cap + emdash.cap + parenleft.cap + bracketleft.cap + braceleft.cap + parenright.cap + bracketright.cap + braceright.cap + guillemotleft.cap + guilsinglleft.cap + guillemotright.cap + guilsinglright.cap + at.cap + exclamdown.cap + questiondown.cap + horizontalbar.cap + + currency + + dollar + cent + sterling + yen + Euro + liraturkish + rupeeindian + florin + colonmonetary + lira + naira + peseta + won + dong + peso + guarani + hryvnia + cedi + ruble + bitcoin + + fig_lf + + zero.lf + one.lf + two.lf + three.lf + four.lf + five.lf + six.lf + seven.lf + eight.lf + nine.lf + zero + one + two + three + four + five + six + seven + eight + nine + + fig_lf.sc + + zero.sc + one.sc + two.sc + three.sc + four.sc + five.sc + six.sc + seven.sc + eight.sc + nine.sc + + fig_osf + + eight.osf + five.osf + four.osf + nine.osf + one.osf + seven.osf + six.osf + three.osf + two.osf + zero.osf + zero.tosf + one.tosf + two.tosf + three.tosf + four.tosf + five.tosf + six.tosf + seven.tosf + eight.tosf + nine.tosf + + fig_prop + + eight.osf + five.osf + four.osf + nine.osf + one.osf + seven.osf + six.osf + three.osf + two.osf + zero.osf + zero.lf + one.lf + two.lf + three.lf + four.lf + five.lf + six.lf + seven.lf + eight.lf + nine.lf + + lc + + a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + t + u + v + w + x + y + z + germandbls + agrave + aacute + acircumflex + atilde + adieresis + aring + ae + ccedilla + egrave + eacute + ecircumflex + edieresis + igrave + iacute + icircumflex + idieresis + eth + ntilde + ograve + oacute + ocircumflex + otilde + odieresis + oslash + ugrave + uacute + ucircumflex + udieresis + yacute + thorn + ydieresis + amacron + abreve + aogonek + cacute + ccircumflex + cdotaccent + ccaron + dcaron + dcroat + emacron + ebreve + edotaccent + eogonek + ecaron + gcircumflex + gbreve + gdotaccent + gcommaaccent + hcircumflex + hbar + itilde + imacron + iogonek + dotlessi + jcircumflex + kcommaaccent + kgreenlandic + lacute + lcommaaccent + lcaron + ldot + lslash + nacute + ncommaaccent + ncaron + napostrophe + omacron + obreve + ohungarumlaut + oe + racute + rcommaaccent + rcaron + sacute + scircumflex + scedilla + scaron + tcedilla + tcaron + utilde + umacron + ubreve + uring + uhungarumlaut + uogonek + wcircumflex + ycircumflex + zacute + zdotaccent + zcaron + longs + florin + ohorn + uhorn + acaron + icaron + ocaron + ucaron + udieresismacron + udieresisacute + udieresiscaron + udieresisgrave + gcaron + ngrave + scommaaccent + tcommaaccent + dotlessj + alphalatin + schwa + gscript + iotadieresistonos + alphatonos + epsilontonos + etatonos + iotatonos + upsilondieresistonos + alpha + beta + gamma + delta + epsilon + zeta + eta + theta + iota + kappa + lambda + mu + nu + xi + omicron + pi + rho + sigma.end + sigma + tau + upsilon + phi + chi + psi + omega + iotadieresis + upsilondieresis + omicrontonos + upsilontonos + omegatonos + kai + koppa + stigma + digamma + sampi + acyr + be + ve + ghe + de + ie + zhe + ze + icyr + ishort + ka + el + em + en + ocyr + pe + er + es + te + ucyr + ef + ha + tse + che + sha + shcha + hard + yeru + soft + ecyr + yu + ya + iegrave + io + dje + gje + ieukran + dze + iukran + yi + je + lje + nje + tshe + kje + igravecyr + ushort + dzhe + yat + fita + izhitsa + gheup + ghestroke + zhedescender + zedescender + kadescender + kabashkir + endescender + esdescender + ustraight + ustraightstroke + hadescender + chedescender + shha + zhebreve + palochka + abrevecyr + aie + iebreve + schwacyr + imacroncyr + odieresiscyr + obarcyr + umacroncyr + uacutedblcyr + ddotbelow + dlinebelow + gmacron + hdotbelow + hbrevebelow + ldotbelow + ldotbelowmacron + llinebelow + macute + mdotbelow + ndotaccent + ndotbelow + nlinebelow + rdotbelow + rdotbelowmacron + rlinebelow + sdotaccent + sdotbelow + tdotbelow + tlinebelow + wgrave + wacute + wdieresis + ydotaccent + zdotbelow + tdieresis + adotbelow + ahoi + acircumflexacute + acircumflexgrave + acircumflexhoi + acircumflextilde + acircumflexdotbelow + abreveacute + abrevegrave + abrevehoi + abrevetilde + abrevedotbelow + edotbelow + ehoi + etilde + ecircumflexacute + ecircumflexgrave + ecircumflexhoi + ecircumflextilde + ecircumflexdotbelow + ihoi + idotbelow + odotbelow + ohoi + ocircumflexacute + ocircumflexgrave + ocircumflexhoi + ocircumflextilde + ocircumflexdotbelow + ohornacute + ohorngrave + ohornhoi + ohorntilde + ohorndotbelow + udotbelow + uhoi + uhornacute + uhorngrave + uhornhoi + uhorntilde + uhorndotbelow + ygrave + ydotbelow + yhoi + ytilde + litre + f_f + f_i + f_l + f_f_i + f_f_l + be.srb + gtilde + i.trk + + lc.sc + + germandbls.sc + tdieresis.sc + f_i.sc + f_l.sc + + math + + plus + less + equal + greater + bar + asciitilde + logicalnot + plusminus + multiply + divide + minus + bulletoperator + approxequal + notequal + lessequal + greaterequal + + punc + + underscore + hyphen + figuredash + endash + emdash + parenleft + bracketleft + braceleft + quotesinglbase + quotedblbase + parenright + bracketright + braceright + guillemotleft + quoteleft + quotedblleft + guilsinglleft + guillemotright + quoteright + quotedblright + guilsinglright + exclam + quotedbl + numbersign + ampersand + quotesingle + asterisk + comma + period + slash + colon + semicolon + question + at + backslash + exclamdown + periodcentered + questiondown + dagger + daggerdbl + bullet + ellipsis + copyright + registered + trademark + servicemark + soundcopyright + horizontalbar + + punc.sc + + hyphen.sc + endash.sc + emdash.sc + parenleft.sc + bracketleft.sc + braceleft.sc + parenright.sc + bracketright.sc + braceright.sc + quoteleft.sc + quotedblleft.sc + quoteright.sc + quotedblright.sc + exclam.sc + quotedbl.sc + ampersand.sc + quotesingle.sc + question.sc + exclamdown.sc + questiondown.sc + + subs + + zero.subs + one.subs + two.subs + three.subs + four.subs + five.subs + six.subs + seven.subs + eight.subs + nine.subs + parenleft.subs + parenright.subs + comma.subs + period.subs + + sups + + a.sups + b.sups + c.sups + d.sups + e.sups + egrave.sups + eacute.sups + f.sups + g.sups + h.sups + i.sups + j.sups + k.sups + l.sups + m.sups + n.sups + o.sups + p.sups + q.sups + r.sups + s.sups + t.sups + u.sups + v.sups + w.sups + x.sups + y.sups + z.sups + zero.sups + one.sups + two.sups + three.sups + four.sups + five.sups + six.sups + seven.sups + eight.sups + nine.sups + hyphen.sups + endash.sups + emdash.sups + parenleft.sups + parenright.sups + comma.sups + period.sups + colon.sups + + uc + + A + B + C + D + E + F + G + H + I + J + K + L + M + N + O + P + Q + R + S + T + U + V + W + X + Y + Z + Agrave + Aacute + Acircumflex + Atilde + Adieresis + Aring + AE + Ccedilla + Egrave + Eacute + Ecircumflex + Edieresis + Igrave + Iacute + Icircumflex + Idieresis + Eth + Ntilde + Ograve + Oacute + Ocircumflex + Otilde + Odieresis + Oslash + Ugrave + Uacute + Ucircumflex + Udieresis + Yacute + Thorn + Amacron + Abreve + Aogonek + Cacute + Ccircumflex + Cdotaccent + Ccaron + Dcaron + Dcroat + Emacron + Ebreve + Edotaccent + Eogonek + Ecaron + Gcircumflex + Gbreve + Gdotaccent + Gcommaaccent + Hcircumflex + Hbar + Itilde + Imacron + Iogonek + Idotaccent + Jcircumflex + Kcommaaccent + Lacute + Lcommaaccent + Lcaron + Ldot + Lslash + Nacute + Ncommaaccent + Ncaron + Omacron + Obreve + Ohungarumlaut + OE + Racute + Rcommaaccent + Rcaron + Sacute + Scircumflex + Scedilla + Scaron + Tcedilla + Tcaron + Utilde + Umacron + Ubreve + Uring + Uhungarumlaut + Uogonek + Wcircumflex + Ycircumflex + Ydieresis + Zacute + Zdotaccent + Zcaron + Schwa + Ohorn + Uhorn + Acaron + Icaron + Ocaron + Ucaron + Udieresismacron + Udieresisacute + Udieresiscaron + Udieresisgrave + Gcaron + Ngrave + Scommaaccent + Tcommaaccent + Alphatonos + Epsilontonos + Etatonos + Iotatonos + Omicrontonos + Upsilontonos + Omegatonos + Alpha + Beta + Gamma + Delta + Epsilon + Zeta + Eta + Theta + Iota + Kappa + Lambda + Mu + Nu + Xi + Omicron + Pi + Rho + Sigma + Tau + Upsilon + Phi + Chi + Psi + Omega + Iotadieresis + Upsilondieresis + Iegrave + Io + Dje + Gje + Ieukran + Dze + Iukran + Yi + Je + Lje + Nje + Tshe + Kje + Igravecyr + Ushort + Dzhe + Acyr + Be + Ve + Ghe + De + Ie + Zhe + Ze + Icyr + Ishort + Ka + El + Em + En + Ocyr + Pe + Er + Es + Te + Ucyr + Ef + Ha + Tse + Che + Sha + Shcha + Hard + Yeru + Soft + Ecyr + Yu + Ya + Yat + Fita + Izhitsa + Gheup + Ghestroke + Zhedescender + Zedescender + Kadescender + Kabashkir + Endescender + Esdescender + Ustraight + Ustraightstroke + Hadescender + Chedescender + Shha + Palochka + Zhebreve + Abrevecyr + Aie + Iebreve + Schwacyr + Imacroncyr + Odieresiscyr + Obarcyr + Umacroncyr + Uacutedblcyr + Ddotbelow + Dlinebelow + Gmacron + Hdotbelow + Hbrevebelow + Ldotbelow + Ldotbelowmacron + Llinebelow + Macute + Mdotbelow + Ndotaccent + Ndotbelow + Nlinebelow + Rdotbelow + Rdotbelowmacron + Rlinebelow + Sdotaccent + Sdotbelow + Tdotbelow + Tlinebelow + Wgrave + Wacute + Wdieresis + Ydotaccent + Zdotbelow + Germandbls + Adotbelow + Ahoi + Acircumflexacute + Acircumflexgrave + Acircumflexhoi + Acircumflextilde + Acircumflexdotbelow + Abreveacute + Abrevegrave + Abrevehoi + Abrevetilde + Abrevedotbelow + Edotbelow + Ehoi + Etilde + Ecircumflexacute + Ecircumflexgrave + Ecircumflexhoi + Ecircumflextilde + Ecircumflexdotbelow + Ihoi + Idotbelow + Odotbelow + Ohoi + Ocircumflexacute + Ocircumflexgrave + Ocircumflexhoi + Ocircumflextilde + Ocircumflexdotbelow + Ohornacute + Ohorngrave + Ohornhoi + Ohorntilde + Ohorndotbelow + Udotbelow + Uhoi + Uhornacute + Uhorngrave + Uhornhoi + Uhorntilde + Uhorndotbelow + Ygrave + Ydotbelow + Yhoi + Ytilde + Gtilde + + uc.sc + + A.sc + B.sc + C.sc + D.sc + E.sc + F.sc + G.sc + H.sc + I.sc + J.sc + K.sc + L.sc + M.sc + N.sc + O.sc + P.sc + Q.sc + R.sc + S.sc + T.sc + U.sc + V.sc + W.sc + X.sc + Y.sc + Z.sc + Agrave.sc + Aacute.sc + Acircumflex.sc + Atilde.sc + Adieresis.sc + Aring.sc + AE.sc + Ccedilla.sc + Egrave.sc + Eacute.sc + Ecircumflex.sc + Edieresis.sc + Igrave.sc + Iacute.sc + Icircumflex.sc + Idieresis.sc + Eth.sc + Ntilde.sc + Ograve.sc + Oacute.sc + Ocircumflex.sc + Otilde.sc + Odieresis.sc + Oslash.sc + Ugrave.sc + Uacute.sc + Ucircumflex.sc + Udieresis.sc + Yacute.sc + Thorn.sc + Amacron.sc + Abreve.sc + Aogonek.sc + Cacute.sc + Ccircumflex.sc + Cdotaccent.sc + Ccaron.sc + Dcaron.sc + Dcroat.sc + Emacron.sc + Ebreve.sc + Edotaccent.sc + Eogonek.sc + Ecaron.sc + Gcircumflex.sc + Gbreve.sc + Gdotaccent.sc + Gcommaaccent.sc + Hcircumflex.sc + Hbar.sc + Itilde.sc + Imacron.sc + Iogonek.sc + Idotaccent.sc + Jcircumflex.sc + Kcommaaccent.sc + Lacute.sc + Lcommaaccent.sc + Lcaron.sc + Ldot.sc + Lslash.sc + Nacute.sc + Ncommaaccent.sc + Ncaron.sc + Omacron.sc + Obreve.sc + Ohungarumlaut.sc + OE.sc + Racute.sc + Rcommaaccent.sc + Rcaron.sc + Sacute.sc + Scircumflex.sc + Scedilla.sc + Scaron.sc + Tcedilla.sc + Tcaron.sc + Utilde.sc + Umacron.sc + Ubreve.sc + Uring.sc + Uhungarumlaut.sc + Uogonek.sc + Wcircumflex.sc + Ycircumflex.sc + Ydieresis.sc + Zacute.sc + Zdotaccent.sc + Zcaron.sc + Schwa.sc + Ohorn.sc + Uhorn.sc + Acaron.sc + Icaron.sc + Ocaron.sc + Ucaron.sc + Udieresismacron.sc + Udieresisacute.sc + Udieresiscaron.sc + Udieresisgrave.sc + Gcaron.sc + Ngrave.sc + Scommaaccent.sc + Tcommaaccent.sc + Alpha.sc + Beta.sc + Gamma.sc + Delta.sc + Epsilon.sc + Zeta.sc + Eta.sc + Theta.sc + Iota.sc + Kappa.sc + Lambda.sc + Mu.sc + Nu.sc + Xi.sc + Omicron.sc + Pi.sc + Rho.sc + Sigma.sc + Tau.sc + Upsilon.sc + Phi.sc + Chi.sc + Psi.sc + Omega.sc + Iotadieresis.sc + Upsilondieresis.sc + Iegrave.sc + Io.sc + Dje.sc + Gje.sc + Ieukran.sc + Dze.sc + Iukran.sc + Yi.sc + Je.sc + Lje.sc + Nje.sc + Tshe.sc + Kje.sc + Igravecyr.sc + Ushort.sc + Dzhe.sc + Acyr.sc + Be.sc + Ve.sc + Ghe.sc + De.sc + Ie.sc + Zhe.sc + Ze.sc + Icyr.sc + Ishort.sc + Ka.sc + El.sc + Em.sc + En.sc + Ocyr.sc + Pe.sc + Er.sc + Es.sc + Te.sc + Ucyr.sc + Ef.sc + Ha.sc + Tse.sc + Che.sc + Sha.sc + Shcha.sc + Hard.sc + Yeru.sc + Soft.sc + Ecyr.sc + Yu.sc + Ya.sc + Yat.sc + Fita.sc + Izhitsa.sc + Gheup.sc + Ghestroke.sc + Zhedescender.sc + Zedescender.sc + Kadescender.sc + Kabashkir.sc + Endescender.sc + Esdescender.sc + Ustraight.sc + Ustraightstroke.sc + Hadescender.sc + Chedescender.sc + Shha.sc + Palochka.sc + Zhebreve.sc + Abrevecyr.sc + Aie.sc + Iebreve.sc + Schwacyr.sc + Imacroncyr.sc + Odieresiscyr.sc + Obarcyr.sc + Umacroncyr.sc + Uacutedblcyr.sc + Ddotbelow.sc + Dlinebelow.sc + Gmacron.sc + Hdotbelow.sc + Hbrevebelow.sc + Ldotbelow.sc + Ldotbelowmacron.sc + Llinebelow.sc + Macute.sc + Mdotbelow.sc + Ndotaccent.sc + Ndotbelow.sc + Nlinebelow.sc + Rdotbelow.sc + Rdotbelowmacron.sc + Rlinebelow.sc + Sdotaccent.sc + Sdotbelow.sc + Tdotbelow.sc + Tlinebelow.sc + Wgrave.sc + Wacute.sc + Wdieresis.sc + Ydotaccent.sc + Zdotbelow.sc + Germandbls.sc + Adotbelow.sc + Ahoi.sc + Acircumflexacute.sc + Acircumflexgrave.sc + Acircumflexhoi.sc + Acircumflextilde.sc + Acircumflexdotbelow.sc + Abreveacute.sc + Abrevegrave.sc + Abrevehoi.sc + Abrevetilde.sc + Abrevedotbelow.sc + Edotbelow.sc + Ehoi.sc + Etilde.sc + Ecircumflexacute.sc + Ecircumflexgrave.sc + Ecircumflexhoi.sc + Ecircumflextilde.sc + Ecircumflexdotbelow.sc + Ihoi.sc + Idotbelow.sc + Odotbelow.sc + Ohoi.sc + Ocircumflexacute.sc + Ocircumflexgrave.sc + Ocircumflexhoi.sc + Ocircumflextilde.sc + Ocircumflexdotbelow.sc + Ohornacute.sc + Ohorngrave.sc + Ohornhoi.sc + Ohorntilde.sc + Ohorndotbelow.sc + Udotbelow.sc + Uhoi.sc + Uhornacute.sc + Uhorngrave.sc + Uhornhoi.sc + Uhorntilde.sc + Uhorndotbelow.sc + Ygrave.sc + Ydotbelow.sc + Yhoi.sc + Ytilde.sc + Gtilde.sc + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/layercontents.plist b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/layercontents.plist new file mode 100644 index 000000000..b9c1a4f27 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/layercontents.plist @@ -0,0 +1,10 @@ + + + + + + public.default + glyphs + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/lib.plist b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/lib.plist new file mode 100644 index 000000000..638f48730 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/lib.plist @@ -0,0 +1,2070 @@ + + + + + public.glyphOrder + + Agrave + Aacute + Acircumflex + Atilde + Adieresis + Amacron + Abreve + Abreveacute + Abrevedotbelow + Abrevegrave + Abrevehoi + Abrevetilde + Acaron + Acircumflexacute + Acircumflexdotbelow + Acircumflexgrave + Acircumflexhoi + Acircumflextilde + Adotbelow + Ahoi + Aring + Aogonek + AE + Ccedilla + Cacute + Ccaron + Ccircumflex + Cdotaccent + Dcaron + Dcroat + Ddotbelow + Dlinebelow + Egrave + Eacute + Ecircumflex + Ecaron + Edieresis + Emacron + Edotaccent + Eogonek + Ebreve + Ecircumflexacute + Ecircumflexdotbelow + Ecircumflexgrave + Ecircumflexhoi + Ecircumflextilde + Edotbelow + Ehoi + Etilde + Gbreve + Gdotaccent + Gcommaaccent + Gcaron + Gcircumflex + Gmacron + Hbar + Hbrevebelow + Hcircumflex + Hdotbelow + Igrave + Iacute + Icircumflex + Idieresis + Imacron + Idotaccent + Iogonek + Icaron + Idotbelow + Ihoi + Itilde + Jcircumflex + Kcommaaccent + Lacute + Lcaron + Lcommaaccent + Ldot + Ldotbelow + Ldotbelowmacron + Llinebelow + Lslash + Macute + Mdotbelow + Nacute + Ncaron + Ngrave + Ntilde + Ncommaaccent + Ndotaccent + Ndotbelow + Nlinebelow + Ograve + Oacute + Obreve + Ocircumflex + Otilde + Odieresis + Omacron + Ohungarumlaut + Ocaron + Ocircumflexacute + Ocircumflexdotbelow + Ocircumflexgrave + Ocircumflexhoi + Ocircumflextilde + Odotbelow + Ohoi + Ohorn + Ohornacute + Ohorndotbelow + Ohorngrave + Ohornhoi + Ohorntilde + Oslash + OE + Racute + Rcaron + Rcommaaccent + Rdotbelow + Rdotbelowmacron + Rlinebelow + Sacute + Scaron + Scedilla + Scommaaccent + Scircumflex + Sdotaccent + Sdotbelow + Germandbls + Tcaron + Tcedilla + Tcommaaccent + Tdotbelow + Tlinebelow + Ugrave + Uacute + Ucircumflex + Udieresis + Umacron + Uring + Uhungarumlaut + Uogonek + Ubreve + Ucaron + Udieresisacute + Udieresiscaron + Udieresisgrave + Udieresismacron + Udotbelow + Uhoi + Uhorn + Uhornacute + Uhorndotbelow + Uhorngrave + Uhornhoi + Uhorntilde + Utilde + Wacute + Wcircumflex + Wdieresis + Wgrave + Yacute + Ydieresis + Ycircumflex + Ydotaccent + Ydotbelow + Ygrave + Yhoi + Ytilde + Zacute + Zcaron + Zdotaccent + Zdotbelow + Eth + Thorn + Schwa + agrave + aacute + acircumflex + atilde + adieresis + amacron + abreve + abreveacute + abrevedotbelow + abrevegrave + abrevehoi + abrevetilde + acaron + acircumflexacute + acircumflexdotbelow + acircumflexgrave + acircumflexhoi + acircumflextilde + adotbelow + ahoi + aring + aogonek + ae + ccedilla + cacute + ccaron + ccircumflex + cdotaccent + dcaron + dcroat + ddotbelow + dlinebelow + egrave + eacute + ecircumflex + ecaron + edieresis + emacron + edotaccent + eogonek + ebreve + ecircumflexacute + ecircumflexdotbelow + ecircumflexgrave + ecircumflexhoi + ecircumflextilde + edotbelow + ehoi + etilde + gbreve + gdotaccent + gcommaaccent + gcaron + gcircumflex + gmacron + hbar + hbrevebelow + hcircumflex + hdotbelow + igrave + iacute + icircumflex + idieresis + imacron + iogonek + icaron + idotbelow + ihoi + itilde + dotlessi + dotlessj + jcircumflex + kcommaaccent + kgreenlandic + lacute + lcaron + lcommaaccent + ldot + ldotbelow + ldotbelowmacron + llinebelow + lslash + macute + mdotbelow + nacute + ncaron + ngrave + ntilde + ncommaaccent + ndotaccent + napostrophe + ndotbelow + nlinebelow + ograve + oacute + obreve + ocircumflex + otilde + odieresis + omacron + ohungarumlaut + ocaron + ocircumflexacute + ocircumflexdotbelow + ocircumflexgrave + ocircumflexhoi + ocircumflextilde + odotbelow + ohoi + ohorn + ohornacute + ohorndotbelow + ohorngrave + ohornhoi + ohorntilde + oslash + oe + racute + rcommaaccent + rcaron + rdotbelow + rdotbelowmacron + rlinebelow + sacute + scaron + scedilla + scommaaccent + scircumflex + sdotaccent + sdotbelow + longs + germandbls + tcaron + tcedilla + tcommaaccent + tdieresis + tdotbelow + tlinebelow + ugrave + uacute + ucircumflex + udieresis + umacron + uring + uhungarumlaut + uogonek + ubreve + ucaron + udieresisacute + udieresiscaron + udieresisgrave + udieresismacron + udotbelow + uhoi + uhorn + uhornacute + uhorndotbelow + uhorngrave + uhornhoi + uhorntilde + utilde + wacute + wcircumflex + wdieresis + wgrave + yacute + ydieresis + ycircumflex + ydotaccent + ydotbelow + ygrave + yhoi + ytilde + zacute + zcaron + zdotaccent + zdotbelow + eth + thorn + schwa + alphalatin + gscript + f_i + f_l + f_f + f_f_i + f_f_l + ellipsis + exclamdown + questiondown + quoteleft + quoteright + quotedblleft + quotedblright + quotesinglbase + quotedblbase + guilsinglleft + guilsinglright + guillemotleft + guillemotright + endash + emdash + figuredash + horizontalbar + periodcentered + bullet + brokenbar + dagger + daggerdbl + section + paragraph + copyright + soundcopyright + registered + trademark + servicemark + zero.sups + one.sups + two.sups + three.sups + four.sups + five.sups + six.sups + seven.sups + eight.sups + nine.sups + parenleft.sups + parenright.sups + zero.subs + one.subs + two.subs + three.subs + four.subs + five.subs + six.subs + seven.subs + eight.subs + nine.subs + parenleft.subs + parenright.subs + ordfeminine + ordmasculine + a.sups + b.sups + c.sups + d.sups + e.sups + f.sups + g.sups + h.sups + i.sups + j.sups + k.sups + l.sups + m.sups + n.sups + o.sups + p.sups + r.sups + s.sups + t.sups + u.sups + v.sups + w.sups + x.sups + y.sups + z.sups + degree + currency + cent + sterling + yen + florin + colonmonetary + lira + naira + peseta + won + dong + Euro + tugrik + peso + guarani + hryvnia + cedi + rupeeindian + liraturkish + tenge + ruble + bitcoin + fraction + divisionslash + figurespace + perthousand + onequarter + onehalf + threequarters + onethird + twothirds + oneeighth + threeeighths + fiveeighths + seveneighths + minus + multiply + divide + bulletoperator + lessequal + greaterequal + plusminus + notequal + approxequal + logicalnot + infinity + partialdiff + integral + radical + summation + product + litre + estimated + arrowleft + arrowupleft + arrowup + arrowupright + arrowright + arrowdownright + arrowdown + arrowdownleft + squareblack + diamondblack + fisheye + squareshadow + triangleblackup + trianglewhiteup + triangleblackright + trianglewhiteright + triangleblackdown + trianglewhitedown + triangleblackleft + trianglewhiteleft + checkbox + checkedbox + check + eighthnote + lozenge + prime + dblprime + ringhalfleftmod + ringhalfrightmod + verticallinemod + macronmod + verticallinelowmod + acute + circumflex + caron + tilde + dieresis + breve + ring + hungarumlaut + dotaccent + cedilla + ogonek + gravecmb + acutecmb + circumflexcmb + tildecmb + macroncmb + brevecmb + dotaccentcmb + dieresiscmb + ringcmb + hungarumlautcmb + caroncmb + commabelowcmb + cedillacmb + ogonekcmb + verticallinebelowcmb + brevebelowcmb + dieresisbelowcmb + dotbelowcmb + hoicmb + horncmb + macronbelowcmb + Alpha + Beta + Gamma + Delta + Epsilon + Zeta + Eta + Theta + Iota + Kappa + Lambda + Mu + Nu + Xi + Omicron + Pi + Rho + Sigma + Tau + Upsilon + Phi + Chi + Psi + Omega + Alphatonos + Epsilontonos + Etatonos + Iotatonos + Iotadieresis + Omicrontonos + Upsilontonos + Upsilondieresis + Omegatonos + alpha + beta + gamma + delta + epsilon + zeta + eta + theta + iota + kappa + lambda + mu + nu + xi + omicron + pi + rho + sigma + tau + upsilon + phi + chi + psi + omega + sigma.end + alphatonos + epsilontonos + etatonos + iotatonos + iotadieresis + omicrontonos + upsilontonos + upsilondieresis + omegatonos + iotadieresistonos + upsilondieresistonos + kai + koppa + stigma + digamma + sampi + questiongreek + anoteleia + numeralsign + lownumeralsign + tonos + dieresistonos + Acyr + Be + Ve + Ghe + De + Ie + Zhe + Ze + Icyr + Ishort + Ka + El + Em + En + Ocyr + Pe + Er + Es + Te + Ucyr + Ef + Ha + Tse + Che + Sha + Shcha + Hard + Yeru + Soft + Ecyr + Yu + Ya + Iegrave + Io + Dje + Gje + Ieukran + Dze + Iukran + Yi + Je + Lje + Nje + Tshe + Kje + Igravecyr + Ushort + Dzhe + Yat + Fita + Izhitsa + Gheup + Ghestroke + Zhedescender + Zedescender + Kadescender + Kabashkir + Endescender + Esdescender + Ustraight + Ustraightstroke + Hadescender + Chedescender + Shha + Palochka + Zhebreve + Abrevecyr + Aie + Iebreve + Schwacyr + Imacroncyr + Odieresiscyr + Obarcyr + Umacroncyr + Uacutedblcyr + acyr + be + ve + ghe + de + ie + zhe + ze + icyr + ishort + ka + el + em + en + ocyr + pe + er + es + te + ucyr + ef + ha + tse + che + sha + shcha + hard + yeru + soft + ecyr + yu + ya + iegrave + io + dje + gje + ieukran + dze + iukran + yi + je + lje + nje + tshe + kje + igravecyr + ushort + dzhe + yat + fita + izhitsa + gheup + ghestroke + zhedescender + zedescender + kadescender + kabashkir + endescender + esdescender + ustraight + ustraightstroke + hadescender + chedescender + shha + zhebreve + palochka + abrevecyr + aie + iebreve + schwacyr + imacroncyr + odieresiscyr + obarcyr + umacroncyr + uacutedblcyr + numero + twoemdash + threeemdash + copyleft + commercemark + deposeemark + twodotenleader + exclamdbl + questiondbl + questionexclam + exclamquestion + IJ + ij + Eng + eng + Tbar + tbar + colontriangularmod + triangularbullet + overline + similar + dngb:cross + + public.postscriptNames + + Abreveacute + uni1EAE + Abreveacute.sc + uni1EAE.sc + Abrevecyr + uni04D0 + Abrevecyr.sc + uni04D0.sc + Abrevedotbelow + uni1EB6 + Abrevedotbelow.sc + uni1EB6.sc + Abrevegrave + uni1EB0 + Abrevegrave.sc + uni1EB0.sc + Abrevehoi + uni1EB2 + Abrevehoi.sc + uni1EB2.sc + Abrevetilde + uni1EB4 + Abrevetilde.sc + uni1EB4.sc + Acaron + uni01CD + Acaron.sc + uni01CD.sc + Acircumflexacute + uni1EA4 + Acircumflexacute.sc + uni1EA4.sc + Acircumflexdotbelow + uni1EAC + Acircumflexdotbelow.sc + uni1EAC.sc + Acircumflexgrave + uni1EA6 + Acircumflexgrave.sc + uni1EA6.sc + Acircumflexhoi + uni1EA8 + Acircumflexhoi.sc + uni1EA8.sc + Acircumflextilde + uni1EAA + Acircumflextilde.sc + uni1EAA.sc + Acyr + uni0410 + Acyr.sc + uni0410.sc + Adotbelow + uni1EA0 + Adotbelow.sc + uni1EA0.sc + Ahoi + uni1EA2 + Ahoi.sc + uni1EA2.sc + Aie + uni04D4 + Aie.sc + uni04D4.sc + Be + uni0411 + Be.sc + uni0411.sc + Che + uni0427 + Che.sc + uni0427.sc + Chedescender + uni04B6 + Chedescender.sc + uni04B6.sc + Ddotbelow + uni1E0C + Ddotbelow.sc + uni1E0C.sc + De + uni0414 + De.sc + uni0414.sc + Delta + uni0394 + Delta.math + uni2206 + Dje + uni0402 + Dje.sc + uni0402.sc + Dlinebelow + uni1E0E + Dlinebelow.sc + uni1E0E.sc + Dze + uni0405 + Dze.sc + uni0405.sc + Dzhe + uni040F + Dzhe.sc + uni040F.sc + Ecircumflexacute + uni1EBE + Ecircumflexacute.sc + uni1EBE.sc + Ecircumflexdotbelow + uni1EC6 + Ecircumflexdotbelow.sc + uni1EC6.sc + Ecircumflexgrave + uni1EC0 + Ecircumflexgrave.sc + uni1EC0.sc + Ecircumflexhoi + uni1EC2 + Ecircumflexhoi.sc + uni1EC2.sc + Ecircumflextilde + uni1EC4 + Ecircumflextilde.sc + uni1EC4.sc + Ecyr + uni042D + Ecyr.sc + uni042D.sc + Edotbelow + uni1EB8 + Edotbelow.sc + uni1EB8.sc + Ef + uni0424 + Ef.sc + uni0424.sc + Ehoi + uni1EBA + Ehoi.sc + uni1EBA.sc + El + uni041B + El.sc + uni041B.sc + Em + uni041C + Em.sc + uni041C.sc + En + uni041D + En.sc + uni041D.sc + Endescender + uni04A2 + Endescender.sc + uni04A2.sc + Er + uni0420 + Er.sc + uni0420.sc + Es + uni0421 + Es.sc + uni0421.sc + Esdescender + uni04AA + Esdescender.sc + uni04AA.sc + Etilde + uni1EBC + Etilde.sc + uni1EBC.sc + Fita + uni0472 + Fita.sc + uni0472.sc + Gcommaaccent + uni0122 + Gcommaaccent.sc + uni0122.sc + Germandbls + uni1E9E + Germandbls.sc + uni1E9E.sc + Ghe + uni0413 + Ghe.sc + uni0413.sc + Ghestroke + uni0492 + Ghestroke.sc + uni0492.sc + Gheup + uni0490 + Gheup.sc + uni0490.sc + Gje + uni0403 + Gje.sc + uni0403.sc + Gmacron + uni1E20 + Gmacron.sc + uni1E20.sc + Gtilde + uni00470303 + Gtilde.sc + uni00470303.sc + Ha + uni0425 + Ha.sc + uni0425.sc + Hadescender + uni04B2 + Hadescender.sc + uni04B2.sc + Hard + uni042A + Hard.sc + uni042A.sc + Hbrevebelow + uni1E2A + Hbrevebelow.sc + uni1E2A.sc + Hdotbelow + uni1E24 + Hdotbelow.sc + uni1E24.sc + Icaron + uni01CF + Icaron.sc + uni01CF.sc + Icyr + uni0418 + Icyr.sc + uni0418.sc + Idotbelow + uni1ECA + Idotbelow.sc + uni1ECA.sc + Ie + uni0415 + Ie.sc + uni0415.sc + Iebreve + uni04D6 + Iebreve.sc + uni04D6.sc + Iegrave + uni0400 + Iegrave.sc + uni0400.sc + Ieukran + uni0404 + Ieukran.sc + uni0404.sc + Igravecyr + uni040D + Igravecyr.sc + uni040D.sc + Ihoi + uni1EC8 + Ihoi.sc + uni1EC8.sc + Imacroncyr + uni04E2 + Imacroncyr.sc + uni04E2.sc + Io + uni0401 + Io.sc + uni0401.sc + Ishort + uni0419 + Ishort.sc + uni0419.sc + Iukran + uni0406 + Iukran.sc + uni0406.sc + Izhitsa + uni0474 + Izhitsa.sc + uni0474.sc + Je + uni0408 + Je.sc + uni0408.sc + Ka + uni041A + Ka.sc + uni041A.sc + Kabashkir + uni04A0 + Kabashkir.sc + uni04A0.sc + Kadescender + uni049A + Kadescender.sc + uni049A.sc + Kcommaaccent + uni0136 + Kcommaaccent.sc + uni0136.sc + Kje + uni040C + Kje.sc + uni040C.sc + Lcommaaccent + uni013B + Lcommaaccent.sc + uni013B.sc + Ldotbelow + uni1E36 + Ldotbelow.sc + uni1E36.sc + Ldotbelowmacron + uni1E38 + Ldotbelowmacron.sc + uni1E38.sc + Lje + uni0409 + Lje.sc + uni0409.sc + Llinebelow + uni1E3A + Llinebelow.sc + uni1E3A.sc + Macute + uni1E3E + Macute.sc + uni1E3E.sc + Mdotbelow + uni1E42 + Mdotbelow.sc + uni1E42.sc + Ncommaaccent + uni0145 + Ncommaaccent.sc + uni0145.sc + Ndotaccent + uni1E44 + Ndotaccent.sc + uni1E44.sc + Ndotbelow + uni1E46 + Ndotbelow.sc + uni1E46.sc + Ngrave + uni01F8 + Ngrave.sc + uni01F8.sc + Nje + uni040A + Nje.sc + uni040A.sc + Nlinebelow + uni1E48 + Nlinebelow.sc + uni1E48.sc + Obarcyr + uni04E8 + Obarcyr.sc + uni04E8.sc + Obreve + uni014E + Obreve.sc + uni014E.sc + Ocaron + uni01D1 + Ocaron.sc + uni01D1.sc + Ocircumflexacute + uni1ED0 + Ocircumflexacute.sc + uni1ED0.sc + Ocircumflexdotbelow + uni1ED8 + Ocircumflexdotbelow.sc + uni1ED8.sc + Ocircumflexgrave + uni1ED2 + Ocircumflexgrave.sc + uni1ED2.sc + Ocircumflexhoi + uni1ED4 + Ocircumflexhoi.sc + uni1ED4.sc + Ocircumflextilde + uni1ED6 + Ocircumflextilde.sc + uni1ED6.sc + Ocyr + uni041E + Ocyr.sc + uni041E.sc + Odieresiscyr + uni04E6 + Odieresiscyr.sc + uni04E6.sc + Odotbelow + uni1ECC + Odotbelow.sc + uni1ECC.sc + Ohoi + uni1ECE + Ohoi.sc + uni1ECE.sc + Ohornacute + uni1EDA + Ohornacute.sc + uni1EDA.sc + Ohorndotbelow + uni1EE2 + Ohorndotbelow.sc + uni1EE2.sc + Ohorngrave + uni1EDC + Ohorngrave.sc + uni1EDC.sc + Ohornhoi + uni1EDE + Ohornhoi.sc + uni1EDE.sc + Ohorntilde + uni1EE0 + Ohorntilde.sc + uni1EE0.sc + Omega + uni03A9 + Omega.math + uni2126 + Palochka + uni04C0 + Palochka.sc + uni04C0.sc + Pe + uni041F + Pe.sc + uni041F.sc + Rcommaaccent + uni0156 + Rcommaaccent.sc + uni0156.sc + Rdotbelow + uni1E5A + Rdotbelow.sc + uni1E5A.sc + Rdotbelowmacron + uni1E5C + Rdotbelowmacron.sc + uni1E5C.sc + Rlinebelow + uni1E5E + Rlinebelow.sc + uni1E5E.sc + Scedilla + uni015E + Scedilla.sc + uni015E.sc + Schwa + uni018F + Schwa.sc + uni018F.sc + Schwacyr + uni04D8 + Schwacyr.sc + uni04D8.sc + Scommaaccent + uni0218 + Scommaaccent.sc + uni0218.sc + Sdotaccent + uni1E60 + Sdotaccent.sc + uni1E60.sc + Sdotbelow + uni1E62 + Sdotbelow.sc + uni1E62.sc + Sha + uni0428 + Sha.sc + uni0428.sc + Shcha + uni0429 + Shcha.sc + uni0429.sc + Shha + uni04BA + Shha.sc + uni04BA.sc + Soft + uni042C + Soft.sc + uni042C.sc + Tcedilla + uni0162 + Tcedilla.sc + uni0162.sc + Tcommaaccent + uni021A + Tcommaaccent.sc + uni021A.sc + Tdotbelow + uni1E6C + Tdotbelow.sc + uni1E6C.sc + Te + uni0422 + Te.sc + uni0422.sc + Tlinebelow + uni1E6E + Tlinebelow.sc + uni1E6E.sc + Tse + uni0426 + Tse.sc + uni0426.sc + Tshe + uni040B + Tshe.sc + uni040B.sc + Uacutedblcyr + uni04F2 + Uacutedblcyr.sc + uni04F2.sc + Ucaron + uni01D3 + Ucaron.sc + uni01D3.sc + Ucyr + uni0423 + Ucyr.sc + uni0423.sc + Udieresisacute + uni01D7 + Udieresisacute.sc + uni01D7.sc + Udieresiscaron + uni01D9 + Udieresiscaron.sc + uni01D9.sc + Udieresisgrave + uni01DB + Udieresisgrave.sc + uni01DB.sc + Udieresismacron + uni01D5 + Udieresismacron.sc + uni01D5.sc + Udotbelow + uni1EE4 + Udotbelow.sc + uni1EE4.sc + Uhoi + uni1EE6 + Uhoi.sc + uni1EE6.sc + Uhornacute + uni1EE8 + Uhornacute.sc + uni1EE8.sc + Uhorndotbelow + uni1EF0 + Uhorndotbelow.sc + uni1EF0.sc + Uhorngrave + uni1EEA + Uhorngrave.sc + uni1EEA.sc + Uhornhoi + uni1EEC + Uhornhoi.sc + uni1EEC.sc + Uhorntilde + uni1EEE + Uhorntilde.sc + uni1EEE.sc + Umacroncyr + uni04EE + Umacroncyr.sc + uni04EE.sc + Ushort + uni040E + Ushort.sc + uni040E.sc + Ustraight + uni04AE + Ustraight.sc + uni04AE.sc + Ustraightstroke + uni04B0 + Ustraightstroke.sc + uni04B0.sc + Ve + uni0412 + Ve.sc + uni0412.sc + Ya + uni042F + Ya.sc + uni042F.sc + Yat + uni0462 + Yat.sc + uni0462.sc + Ydotaccent + uni1E8E + Ydotaccent.sc + uni1E8E.sc + Ydotbelow + uni1EF4 + Ydotbelow.sc + uni1EF4.sc + Yeru + uni042B + Yeru.sc + uni042B.sc + Yhoi + uni1EF6 + Yhoi.sc + uni1EF6.sc + Yi + uni0407 + Yi.sc + uni0407.sc + Ytilde + uni1EF8 + Ytilde.sc + uni1EF8.sc + Yu + uni042E + Yu.sc + uni042E.sc + Zdotbelow + uni1E92 + Zdotbelow.sc + uni1E92.sc + Ze + uni0417 + Ze.sc + uni0417.sc + Zedescender + uni0498 + Zedescender.sc + uni0498.sc + Zhe + uni0416 + Zhe.sc + uni0416.sc + Zhebreve + uni04C1 + Zhebreve.sc + uni04C1.sc + Zhedescender + uni0496 + Zhedescender.sc + uni0496.sc + abreveacute + uni1EAF + abrevecyr + uni04D1 + abrevedotbelow + uni1EB7 + abrevegrave + uni1EB1 + abrevehoi + uni1EB3 + abrevetilde + uni1EB5 + acaron + uni01CE + acircumflexacute + uni1EA5 + acircumflexdotbelow + uni1EAD + acircumflexgrave + uni1EA7 + acircumflexhoi + uni1EA9 + acircumflextilde + uni1EAB + acutecmb + uni0301 + acutemod + uni02CA + acyr + uni0430 + adotbelow + uni1EA1 + ahoi + uni1EA3 + aie + uni04D5 + alphalatin + uni0251 + apostrophemod + uni02BC + arrowdownleft + uni2199 + arrowdownright + uni2198 + arrowleft + uni2190 + arrowright + uni2192 + arrowupleft + uni2196 + arrowupright + uni2197 + be + uni0431 + be.srb + uni0431.srb + bitcoin + uni20BF + breveacute + uni03060301 + breveacute.cap + uni03060301.cap + brevebelowcmb + uni032E + brevecmb + uni0306 + brevegrave + uni03060300 + brevegrave.cap + uni03060300.cap + brevehoi + uni03060309 + brevehoi.cap + uni03060309.cap + brevetilde + uni03060303 + brevetilde.cap + uni03060303.cap + bulletoperator + uni2219 + caroncmb + uni030C + cedi + uni20B5 + cedillacmb + uni0327 + che + uni0447 + check + uni2713 + checkbox + uni2610 + checkedbox + uni2611 + chedescender + uni04B7 + circumflexacute + uni03020301 + circumflexacute.cap + uni03020301.cap + circumflexcmb + uni0302 + circumflexgrave + uni03020300 + circumflexgrave.cap + uni03020300.cap + circumflexhoi + uni03020309 + circumflexhoi.cap + uni03020309.cap + circumflextilde + uni03020303 + circumflextilde.cap + uni03020303.cap + commabelowcmb + uni0326 + commaturnedmod + uni02BB + commercemark + u1F16A + copyleft + u1F12F + dblprime + uni2033 + ddotbelow + uni1E0D + de + uni0434 + deposeemark + u1F16B + diamondblack + uni25C6 + dieresisacute + uni03080301 + dieresisacute.cap + uni03080301.cap + dieresisbelowcmb + uni0324 + dieresiscaron + uni0308030C + dieresiscaron.cap + uni0308030C.cap + dieresiscmb + uni0308 + dieresisgrave + uni03080300 + dieresisgrave.cap + uni03080300.cap + dieresismacron + uni03080304 + dieresismacron.cap + uni03080304.cap + dieresistonoscmb + uni03080301.g + digamma + uni03DD + divisionslash + uni2215 + dje + uni0452 + dlinebelow + uni1E0F + dotaccentcmb + uni0307 + dotbelowcmb + uni0323 + dotlessj + uni0237 + dze + uni0455 + dzhe + uni045F + ecircumflexacute + uni1EBF + ecircumflexdotbelow + uni1EC7 + ecircumflexgrave + uni1EC1 + ecircumflexhoi + uni1EC3 + ecircumflextilde + uni1EC5 + ecyr + uni044D + edotbelow + uni1EB9 + ef + uni0444 + ehoi + uni1EBB + eighthnote + musicalnote + el + uni043B + em + uni043C + en + uni043D + endescender + uni04A3 + er + uni0440 + es + uni0441 + esdescender + uni04AB + etilde + uni1EBD + exclamquestion + uni2049 + figurespace + uni2007 + fisheye + uni25C9 + fita + uni0473 + florin + uni0192 + gcommaaccent + uni0123 + ghe + uni0433 + ghestroke + uni0493 + gheup + uni0491 + gje + uni0453 + gmacron + uni1E21 + gravecmb + uni0300 + gravemod + uni02CB + gscript + uni0261 + gtilde + uni00670303 + guarani + uni20B2 + ha + uni0445 + hadescender + uni04B3 + hard + uni044A + hbrevebelow + uni1E2B + hdotbelow + uni1E25 + hoicmb + uni0309 + hoicmb.cap + uni0309.cap + horizontalbar + uni2015 + horncmb + uni031B + hryvnia + uni20B4 + hungarumlautcmb + uni030B + hyphentwo + uni2010 + icaron + uni01D0 + icyr + uni0438 + idotbelow + uni1ECB + ie + uni0435 + iebreve + uni04D7 + iegrave + uni0450 + ieukran + uni0454 + igravecyr + uni045D + ihoi + uni1EC9 + imacroncyr + uni04E3 + io + uni0451 + ishort + uni0439 + iukran + uni0456 + izhitsa + uni0475 + je + uni0458 + ka + uni043A + kabashkir + uni04A1 + kadescender + uni049B + kai + uni03D7 + kcommaaccent + uni0137 + kje + uni045C + koppa + uni03D9 + lcommaaccent + uni013C + ldotbelow + uni1E37 + ldotbelowmacron + uni1E39 + liraturkish + uni20BA + litre + uni2113 + lje + uni0459 + llinebelow + uni1E3B + lownumeralsign + uni0375 + macronbelowcmb + uni0331 + macroncmb + uni0304 + macronmod + uni02C9 + macute + uni1E3F + mdotbelow + uni1E43 + mu + uni03BC + mu.math + uni00B5 + naira + uni20A6 + nbspace + uni00A0 + nbspace.frac + uni00A0.frac + ncommaaccent + uni0146 + ndotaccent + uni1E45 + ndotbelow + uni1E47 + ngrave + uni01F9 + nje + uni045A + nlinebelow + uni1E49 + numeralsign + uni0374 + numero + uni2116 + obarcyr + uni04E9 + obreve + uni014F + ocaron + uni01D2 + ocircumflexacute + uni1ED1 + ocircumflexdotbelow + uni1ED9 + ocircumflexgrave + uni1ED3 + ocircumflexhoi + uni1ED5 + ocircumflextilde + uni1ED7 + ocyr + uni043E + odieresiscyr + uni04E7 + odotbelow + uni1ECD + ogonekcmb + uni0328 + ohoi + uni1ECF + ohornacute + uni1EDB + ohorndotbelow + uni1EE3 + ohorngrave + uni1EDD + ohornhoi + uni1EDF + ohorntilde + uni1EE1 + palochka + uni04CF + pe + uni043F + peso + uni20B1 + prime + uni2032 + questiondbl + uni2047 + questionexclam + uni2048 + questiongreek + uni037E + rcommaaccent + uni0157 + rdotbelow + uni1E5B + rdotbelowmacron + uni1E5D + ringcmb + uni030A + ringhalfleftmod + uni02BF + ringhalfrightmod + uni02BE + rlinebelow + uni1E5F + ruble + uni20BD + rupeeindian + uni20B9 + sampi + uni03E1 + scedilla + uni015F + schwa + uni0259 + schwacyr + uni04D9 + scommaaccent + uni0219 + sdotaccent + uni1E61 + sdotbelow + uni1E63 + servicemark + uni2120 + sfthyphen + uni00AD + sha + uni0448 + shcha + uni0449 + shha + uni04BB + sigma.end + uni03C2 + soft + uni044C + soundcopyright + uni2117 + squareblack + uni25A0 + squareshadow + uni2752 + stigma + uni03DB + tcedilla + uni0163 + tcommaaccent + uni021B + tdieresis + uni1E97 + tdieresis.sc + uni1E97.sc + tdotbelow + uni1E6D + te + uni0442 + tenge + uni20B8 + threeemdash + uni2E3B + tildecmb + uni0303 + tlinebelow + uni1E6F + tonoscmb + uni0301.g + triangleblackdown + triagdn + triangleblackleft + uni25C0 + triangleblackright + uni25B6 + triangleblackup + triagup + trianglewhitedown + uni25BD + trianglewhiteleft + uni25C1 + trianglewhiteright + uni25B7 + trianglewhiteup + uni25B3 + tse + uni0446 + tshe + uni045B + tugrik + uni20AE + twoemdash + uni2E3A + uacutedblcyr + uni04F3 + ucaron + uni01D4 + ucyr + uni0443 + udieresisacute + uni01D8 + udieresiscaron + uni01DA + udieresisgrave + uni01DC + udieresismacron + uni01D6 + udotbelow + uni1EE5 + uhoi + uni1EE7 + uhornacute + uni1EE9 + uhorndotbelow + uni1EF1 + uhorngrave + uni1EEB + uhornhoi + uni1EED + uhorntilde + uni1EEF + umacroncyr + uni04EF + ushort + uni045E + ustraight + uni04AF + ustraightstroke + uni04B1 + ve + uni0432 + verticallinebelowcmb + uni0329 + verticallinelowmod + uni02CC + verticallinemod + uni02C8 + won + uni20A9 + ya + uni044F + yat + uni0463 + ydotaccent + uni1E8F + ydotbelow + uni1EF5 + yeru + uni044B + yhoi + uni1EF7 + yi + uni0457 + ytilde + uni1EF9 + yu + uni044E + zdotbelow + uni1E93 + ze + uni0437 + zedescender + uni0499 + zhe + uni0436 + zhebreve + uni04C2 + zhedescender + uni0497 + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font0.ufo/metainfo.plist b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/metainfo.plist new file mode 100644 index 000000000..7b8b34ac6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font0.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + com.github.fonttools.ufoLib + formatVersion + 3 + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/fontinfo.plist b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/fontinfo.plist new file mode 100644 index 000000000..227d5da02 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/fontinfo.plist @@ -0,0 +1,162 @@ + + + + + ascender + 730 + capHeight + 670 + copyright + Copyright 2014 - 2017 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. + descender + -240 + familyName + Source Serif Variable + italicAngle + 0 + openTypeHheaAscender + 1036 + openTypeHheaDescender + -335 + openTypeHheaLineGap + 0 + openTypeNameDesigner + Frank Grießhammer + openTypeNameLicense + This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: http://scripts.sil.org/OFL. This Font Software is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the SIL Open Font License for the specific language, permissions and limitations governing your use of this Font Software. + openTypeNameLicenseURL + http://scripts.sil.org/OFL + openTypeNameManufacturer + Adobe Systems Incorporated + openTypeNameManufacturerURL + http://www.adobe.com/type + openTypeOS2CodePageRanges + + 0 + 1 + 2 + 3 + 4 + 7 + 8 + 29 + + openTypeOS2Panose + + 2 + 4 + 6 + 3 + 5 + 4 + 5 + 2 + 2 + 4 + + openTypeOS2TypoAscender + 730 + openTypeOS2TypoDescender + -270 + openTypeOS2TypoLineGap + 0 + openTypeOS2UnicodeRanges + + 0 + 1 + 2 + 7 + 9 + 29 + 32 + 33 + 57 + + openTypeOS2VendorID + ADBO + openTypeOS2WinAscent + 1036 + openTypeOS2WinDescent + 335 + postscriptBlueFuzz + 0 + postscriptBlueScale + 0.0375 + postscriptBlueValues + + -15 + 0 + 474 + 487 + 527 + 540 + 550 + 563 + 647 + 660 + 670 + 685 + 730 + 750 + + postscriptFamilyBlues + + -15 + 0 + 475 + 488 + 527 + 540 + 549 + 563 + 646 + 659 + 669 + 684 + 729 + 749 + + postscriptFamilyOtherBlues + + -249 + -239 + + postscriptFontName + SourceSerifVariable-Roman + postscriptOtherBlues + + -250 + -240 + + postscriptStemSnapH + + 55 + 40 + + postscriptStemSnapV + + 80 + 90 + + postscriptUnderlinePosition + -75 + postscriptUnderlineThickness + 50 + styleMapFamilyName + Source Serif Variable + styleMapStyleName + regular + styleName + Roman + trademark + Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + unitsPerEm + 1000 + versionMajor + 1 + versionMinor + 0 + xHeight + 474 + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_E_.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_E_.glif new file mode 100644 index 000000000..feb89a0f9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_E_.glif @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_acute.glif new file mode 100644 index 000000000..72602d9e8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_acute.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_breve.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_breve.glif new file mode 100644 index 000000000..47a833166 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_breve.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_breveacute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_breveacute.glif new file mode 100644 index 000000000..cfd448c9f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_breveacute.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_brevecyr.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_brevecyr.glif new file mode 100644 index 000000000..5689500d6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_brevecyr.glif @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_brevedotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_brevedotbelow.glif new file mode 100644 index 000000000..a3e4dd6c0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_brevedotbelow.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_brevegrave.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_brevegrave.glif new file mode 100644 index 000000000..821a87454 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_brevegrave.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_brevehoi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_brevehoi.glif new file mode 100644 index 000000000..7572cbb1b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_brevehoi.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_brevetilde.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_brevetilde.glif new file mode 100644 index 000000000..c81eb48ae --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_brevetilde.glif @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_caron.glif new file mode 100644 index 000000000..ef980a60e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_caron.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_circumflex.glif new file mode 100644 index 000000000..041ea3f74 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_circumflex.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_circumflexacute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_circumflexacute.glif new file mode 100644 index 000000000..98a5b0328 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_circumflexacute.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_circumflexdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_circumflexdotbelow.glif new file mode 100644 index 000000000..e1367ab27 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_circumflexdotbelow.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_circumflexgrave.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_circumflexgrave.glif new file mode 100644 index 000000000..f6a5d7ea0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_circumflexgrave.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_circumflexhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_circumflexhoi.glif new file mode 100644 index 000000000..71f4822b3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_circumflexhoi.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_circumflextilde.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_circumflextilde.glif new file mode 100644 index 000000000..506273a6f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_circumflextilde.glif @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_cyr.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_cyr.glif new file mode 100644 index 000000000..880fc0197 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_cyr.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_dieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_dieresis.glif new file mode 100644 index 000000000..d84688383 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_dieresis.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_dotbelow.glif new file mode 100644 index 000000000..01b1d3dc8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_dotbelow.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_grave.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_grave.glif new file mode 100644 index 000000000..98c1eac14 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_grave.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_hoi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_hoi.glif new file mode 100644 index 000000000..026240f29 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_hoi.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_ie.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_ie.glif new file mode 100644 index 000000000..40a766334 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_ie.glif @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_lpha.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_lpha.glif new file mode 100644 index 000000000..b5e40e986 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_lpha.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_lphatonos.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_lphatonos.glif new file mode 100644 index 000000000..9450fdb86 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_lphatonos.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_macron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_macron.glif new file mode 100644 index 000000000..49e1356d9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_macron.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_ogonek.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_ogonek.glif new file mode 100644 index 000000000..ffa903f40 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_ogonek.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_ring.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_ring.glif new file mode 100644 index 000000000..dc099452f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_ring.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_tilde.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_tilde.glif new file mode 100644 index 000000000..3a3798340 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/A_tilde.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/B_e.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/B_e.glif new file mode 100644 index 000000000..4cdfae53e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/B_e.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/B_eta.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/B_eta.glif new file mode 100644 index 000000000..4d0bfc660 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/B_eta.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/C_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/C_acute.glif new file mode 100644 index 000000000..b00addb05 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/C_acute.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/C_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/C_caron.glif new file mode 100644 index 000000000..9fb9885f3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/C_caron.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/C_cedilla.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/C_cedilla.glif new file mode 100644 index 000000000..7ba05d7ce --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/C_cedilla.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/C_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/C_circumflex.glif new file mode 100644 index 000000000..d1c1837e7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/C_circumflex.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/C_dotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/C_dotaccent.glif new file mode 100644 index 000000000..38f144105 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/C_dotaccent.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/C_he.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/C_he.glif new file mode 100644 index 000000000..54cfac557 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/C_he.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/C_hedescender.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/C_hedescender.glif new file mode 100644 index 000000000..91919fa3a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/C_hedescender.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/C_hi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/C_hi.glif new file mode 100644 index 000000000..703c9c612 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/C_hi.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_caron.glif new file mode 100644 index 000000000..676e8349c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_caron.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_croat.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_croat.glif new file mode 100644 index 000000000..65ab600c3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_croat.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_dotbelow.glif new file mode 100644 index 000000000..947955f27 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_dotbelow.glif @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_e.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_e.glif new file mode 100644 index 000000000..df0d5ce37 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_e.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_elta.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_elta.glif new file mode 100644 index 000000000..f01d8e339 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_elta.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_je.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_je.glif new file mode 100644 index 000000000..4182b26e4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_je.glif @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_linebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_linebelow.glif new file mode 100644 index 000000000..140c8b105 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_linebelow.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_ze.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_ze.glif new file mode 100644 index 000000000..e033bb06e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_ze.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_zhe.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_zhe.glif new file mode 100644 index 000000000..51c42bf3b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/D_zhe.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_acute.glif new file mode 100644 index 000000000..8909f89e5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_acute.glif @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_breve.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_breve.glif new file mode 100644 index 000000000..98348df36 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_breve.glif @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_caron.glif new file mode 100644 index 000000000..28d70d528 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_caron.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_circumflex.glif new file mode 100644 index 000000000..a8489cad8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_circumflex.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_circumflexacute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_circumflexacute.glif new file mode 100644 index 000000000..d807f1422 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_circumflexacute.glif @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_circumflexdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_circumflexdotbelow.glif new file mode 100644 index 000000000..d0cf210b4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_circumflexdotbelow.glif @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_circumflexgrave.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_circumflexgrave.glif new file mode 100644 index 000000000..ce9591f6c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_circumflexgrave.glif @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_circumflexhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_circumflexhoi.glif new file mode 100644 index 000000000..6c55aa95d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_circumflexhoi.glif @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_circumflextilde.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_circumflextilde.glif new file mode 100644 index 000000000..8704459a9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_circumflextilde.glif @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_cyr.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_cyr.glif new file mode 100644 index 000000000..9ce57005c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_cyr.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_dieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_dieresis.glif new file mode 100644 index 000000000..d32d53e20 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_dieresis.glif @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_dotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_dotaccent.glif new file mode 100644 index 000000000..c4b18be47 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_dotaccent.glif @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_dotbelow.glif new file mode 100644 index 000000000..b4ceb3613 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_dotbelow.glif @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_f.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_f.glif new file mode 100644 index 000000000..b9dd2e8c4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_f.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_grave.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_grave.glif new file mode 100644 index 000000000..4a273602d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_grave.glif @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_hoi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_hoi.glif new file mode 100644 index 000000000..7b1888544 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_hoi.glif @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_l.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_l.glif new file mode 100644 index 000000000..225f265f7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_l.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_m.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_m.glif new file mode 100644 index 000000000..91270d1c6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_m.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_macron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_macron.glif new file mode 100644 index 000000000..74185c074 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_macron.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_n.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_n.glif new file mode 100644 index 000000000..e9767a7c2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_n.glif @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_ndescender.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_ndescender.glif new file mode 100644 index 000000000..185437400 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_ndescender.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_ng.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_ng.glif new file mode 100644 index 000000000..433e6e346 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_ng.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_ogonek.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_ogonek.glif new file mode 100644 index 000000000..edb3eebc6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_ogonek.glif @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_psilon.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_psilon.glif new file mode 100644 index 000000000..b8913981d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_psilon.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_psilontonos.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_psilontonos.glif new file mode 100644 index 000000000..cc8db1532 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_psilontonos.glif @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_r.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_r.glif new file mode 100644 index 000000000..e0be5047a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_r.glif @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_s.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_s.glif new file mode 100644 index 000000000..01946de4f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_s.glif @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_sdescender.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_sdescender.glif new file mode 100644 index 000000000..144f527a4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_sdescender.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_ta.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_ta.glif new file mode 100644 index 000000000..b59de654c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_ta.glif @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_tatonos.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_tatonos.glif new file mode 100644 index 000000000..3bb147aee --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_tatonos.glif @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_th.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_th.glif new file mode 100644 index 000000000..a4feaa05e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_th.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_tilde.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_tilde.glif new file mode 100644 index 000000000..81457c108 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_tilde.glif @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_uro.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_uro.glif new file mode 100644 index 000000000..b442e20e3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/E_uro.glif @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/F_ita.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/F_ita.glif new file mode 100644 index 000000000..69dd13ce5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/F_ita.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_amma.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_amma.glif new file mode 100644 index 000000000..6ba3efe6d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_amma.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_breve.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_breve.glif new file mode 100644 index 000000000..e0f60c5c4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_breve.glif @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_caron.glif new file mode 100644 index 000000000..fcf6de0b2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_caron.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_circumflex.glif new file mode 100644 index 000000000..9b459011e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_circumflex.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_commaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_commaaccent.glif new file mode 100644 index 000000000..b91108546 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_commaaccent.glif @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_dotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_dotaccent.glif new file mode 100644 index 000000000..97d9d626e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_dotaccent.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_ermandbls.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_ermandbls.glif new file mode 100644 index 000000000..41b59d5f0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_ermandbls.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_he.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_he.glif new file mode 100644 index 000000000..028cf80ea --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_he.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_hestroke.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_hestroke.glif new file mode 100644 index 000000000..125f62843 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_hestroke.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_heup.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_heup.glif new file mode 100644 index 000000000..59832cdbc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_heup.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_je.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_je.glif new file mode 100644 index 000000000..9ca1f7c7a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_je.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_macron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_macron.glif new file mode 100644 index 000000000..ef1849673 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/G_macron.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/H_a.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/H_a.glif new file mode 100644 index 000000000..ea5f5abcb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/H_a.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/H_adescender.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/H_adescender.glif new file mode 100644 index 000000000..fa3f62901 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/H_adescender.glif @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/H_ard.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/H_ard.glif new file mode 100644 index 000000000..3f655b37c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/H_ard.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/H_bar.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/H_bar.glif new file mode 100644 index 000000000..2e359605b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/H_bar.glif @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/H_brevebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/H_brevebelow.glif new file mode 100644 index 000000000..30c10eeaf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/H_brevebelow.glif @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/H_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/H_circumflex.glif new file mode 100644 index 000000000..d232d2edb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/H_circumflex.glif @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/H_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/H_dotbelow.glif new file mode 100644 index 000000000..95ab13897 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/H_dotbelow.glif @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_J_.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_J_.glif new file mode 100644 index 000000000..d629a2909 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_J_.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_acute.glif new file mode 100644 index 000000000..8b24353fe --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_acute.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_caron.glif new file mode 100644 index 000000000..785db2a53 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_caron.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_circumflex.glif new file mode 100644 index 000000000..86ff2e9eb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_circumflex.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_cyr.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_cyr.glif new file mode 100644 index 000000000..e00d6add6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_cyr.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_dieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_dieresis.glif new file mode 100644 index 000000000..071f10601 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_dieresis.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_dotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_dotaccent.glif new file mode 100644 index 000000000..b3145419e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_dotaccent.glif @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_dotbelow.glif new file mode 100644 index 000000000..68bfa8377 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_dotbelow.glif @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_e.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_e.glif new file mode 100644 index 000000000..7d32354b6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_e.glif @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_ebreve.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_ebreve.glif new file mode 100644 index 000000000..2cf9a68d8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_ebreve.glif @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_egrave.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_egrave.glif new file mode 100644 index 000000000..c576384a3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_egrave.glif @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_eukran.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_eukran.glif new file mode 100644 index 000000000..0e673b28a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_eukran.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_grave.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_grave.glif new file mode 100644 index 000000000..37b298864 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_grave.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_gravecyr.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_gravecyr.glif new file mode 100644 index 000000000..27321620d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_gravecyr.glif @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_hoi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_hoi.glif new file mode 100644 index 000000000..d7782724a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_hoi.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_macron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_macron.glif new file mode 100644 index 000000000..9d8b4f07b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_macron.glif @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_macroncyr.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_macroncyr.glif new file mode 100644 index 000000000..d16a00d5f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_macroncyr.glif @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_o.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_o.glif new file mode 100644 index 000000000..a67904592 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_o.glif @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_ogonek.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_ogonek.glif new file mode 100644 index 000000000..6c69108a2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_ogonek.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_ota.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_ota.glif new file mode 100644 index 000000000..154afa20e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_ota.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_otadieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_otadieresis.glif new file mode 100644 index 000000000..9a6c837ab --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_otadieresis.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_otatonos.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_otatonos.glif new file mode 100644 index 000000000..ac06d11d1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_otatonos.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_short.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_short.glif new file mode 100644 index 000000000..feb3fa3ef --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_short.glif @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_tilde.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_tilde.glif new file mode 100644 index 000000000..3ad4a0b14 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_tilde.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_ukran.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_ukran.glif new file mode 100644 index 000000000..2ead13288 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_ukran.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_zhitsa.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_zhitsa.glif new file mode 100644 index 000000000..07fae59e8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/I_zhitsa.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/J_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/J_circumflex.glif new file mode 100644 index 000000000..49ca4f100 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/J_circumflex.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/J_e.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/J_e.glif new file mode 100644 index 000000000..b5a67edda --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/J_e.glif @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/K_a.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/K_a.glif new file mode 100644 index 000000000..5b40b0d19 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/K_a.glif @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/K_abashkir.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/K_abashkir.glif new file mode 100644 index 000000000..2ece51c03 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/K_abashkir.glif @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/K_adescender.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/K_adescender.glif new file mode 100644 index 000000000..648d191db --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/K_adescender.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/K_appa.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/K_appa.glif new file mode 100644 index 000000000..8cc722715 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/K_appa.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/K_commaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/K_commaaccent.glif new file mode 100644 index 000000000..18dc381cf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/K_commaaccent.glif @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/K_je.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/K_je.glif new file mode 100644 index 000000000..72d55e206 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/K_je.glif @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_acute.glif new file mode 100644 index 000000000..12ad80af7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_acute.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_ambda.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_ambda.glif new file mode 100644 index 000000000..2ce4373a9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_ambda.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_caron.glif new file mode 100644 index 000000000..2ab48050f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_caron.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_commaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_commaaccent.glif new file mode 100644 index 000000000..6feafee7e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_commaaccent.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_dot.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_dot.glif new file mode 100644 index 000000000..8545657ec --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_dot.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_dotbelow.glif new file mode 100644 index 000000000..0f63be9cf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_dotbelow.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_dotbelowmacron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_dotbelowmacron.glif new file mode 100644 index 000000000..ddb3ae02f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_dotbelowmacron.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_je.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_je.glif new file mode 100644 index 000000000..9976207e3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_je.glif @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_linebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_linebelow.glif new file mode 100644 index 000000000..88de9986b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_linebelow.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_slash.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_slash.glif new file mode 100644 index 000000000..a34047e3c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/L_slash.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/M_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/M_acute.glif new file mode 100644 index 000000000..b87cdc1bc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/M_acute.glif @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/M_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/M_dotbelow.glif new file mode 100644 index 000000000..db329780a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/M_dotbelow.glif @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/M_u.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/M_u.glif new file mode 100644 index 000000000..6fd624544 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/M_u.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_acute.glif new file mode 100644 index 000000000..e01f27e1a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_acute.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_caron.glif new file mode 100644 index 000000000..ee5a3e368 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_caron.glif @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_commaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_commaaccent.glif new file mode 100644 index 000000000..a7cb75387 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_commaaccent.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_dotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_dotaccent.glif new file mode 100644 index 000000000..cdaab6878 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_dotaccent.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_dotbelow.glif new file mode 100644 index 000000000..4fda3f0e4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_dotbelow.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_grave.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_grave.glif new file mode 100644 index 000000000..fb5102c2d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_grave.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_je.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_je.glif new file mode 100644 index 000000000..301993abc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_je.glif @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_linebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_linebelow.glif new file mode 100644 index 000000000..72674358e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_linebelow.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_tilde.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_tilde.glif new file mode 100644 index 000000000..fb00ab613 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_tilde.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_u.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_u.glif new file mode 100644 index 000000000..804e46363 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/N_u.glif @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_E_.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_E_.glif new file mode 100644 index 000000000..e430f39b1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_E_.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_acute.glif new file mode 100644 index 000000000..fe66621f1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_acute.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_barcyr.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_barcyr.glif new file mode 100644 index 000000000..838ad8091 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_barcyr.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_breve.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_breve.glif new file mode 100644 index 000000000..c54090dbb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_breve.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_caron.glif new file mode 100644 index 000000000..82ef79896 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_caron.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_circumflex.glif new file mode 100644 index 000000000..6d9a5d986 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_circumflex.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_circumflexacute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_circumflexacute.glif new file mode 100644 index 000000000..8c310d3a5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_circumflexacute.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_circumflexdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_circumflexdotbelow.glif new file mode 100644 index 000000000..8906e5802 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_circumflexdotbelow.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_circumflexgrave.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_circumflexgrave.glif new file mode 100644 index 000000000..f7af1927b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_circumflexgrave.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_circumflexhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_circumflexhoi.glif new file mode 100644 index 000000000..b48ad8297 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_circumflexhoi.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_circumflextilde.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_circumflextilde.glif new file mode 100644 index 000000000..b05f52129 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_circumflextilde.glif @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_cyr.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_cyr.glif new file mode 100644 index 000000000..84acdb7bc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_cyr.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_dieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_dieresis.glif new file mode 100644 index 000000000..6fbd4ff4e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_dieresis.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_dieresiscyr.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_dieresiscyr.glif new file mode 100644 index 000000000..df91e2eac --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_dieresiscyr.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_dotbelow.glif new file mode 100644 index 000000000..5c6a72a21 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_dotbelow.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_grave.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_grave.glif new file mode 100644 index 000000000..48e25bc9b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_grave.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_hoi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_hoi.glif new file mode 100644 index 000000000..1229f2b81 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_hoi.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_horn.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_horn.glif new file mode 100644 index 000000000..93e353434 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_horn.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_hornacute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_hornacute.glif new file mode 100644 index 000000000..eb71667e8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_hornacute.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_horndotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_horndotbelow.glif new file mode 100644 index 000000000..3ad429b54 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_horndotbelow.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_horngrave.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_horngrave.glif new file mode 100644 index 000000000..e30706ff8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_horngrave.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_hornhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_hornhoi.glif new file mode 100644 index 000000000..3920a4d84 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_hornhoi.glif @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_horntilde.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_horntilde.glif new file mode 100644 index 000000000..d1c3978c1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_horntilde.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_hungarumlaut.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_hungarumlaut.glif new file mode 100644 index 000000000..8d5a15520 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_hungarumlaut.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_macron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_macron.glif new file mode 100644 index 000000000..268cee4f8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_macron.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_mega.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_mega.glif new file mode 100644 index 000000000..bb8a8d621 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_mega.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_megatonos.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_megatonos.glif new file mode 100644 index 000000000..1b0084751 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_megatonos.glif @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_micron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_micron.glif new file mode 100644 index 000000000..730175d48 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_micron.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_microntonos.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_microntonos.glif new file mode 100644 index 000000000..4b293bf18 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_microntonos.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_slash.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_slash.glif new file mode 100644 index 000000000..cdf881a1b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_slash.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_tilde.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_tilde.glif new file mode 100644 index 000000000..c75b859d6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/O_tilde.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/P_alochka.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/P_alochka.glif new file mode 100644 index 000000000..96d002ab4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/P_alochka.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/P_e.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/P_e.glif new file mode 100644 index 000000000..75cb3df48 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/P_e.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/P_hi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/P_hi.glif new file mode 100644 index 000000000..a73e02b5f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/P_hi.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/P_i.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/P_i.glif new file mode 100644 index 000000000..01aad0269 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/P_i.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/P_si.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/P_si.glif new file mode 100644 index 000000000..bf3a99e85 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/P_si.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/R_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/R_acute.glif new file mode 100644 index 000000000..efcf41350 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/R_acute.glif @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/R_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/R_caron.glif new file mode 100644 index 000000000..cc1d02321 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/R_caron.glif @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/R_commaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/R_commaaccent.glif new file mode 100644 index 000000000..e9294a0a6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/R_commaaccent.glif @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/R_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/R_dotbelow.glif new file mode 100644 index 000000000..29408cb3c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/R_dotbelow.glif @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/R_dotbelowmacron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/R_dotbelowmacron.glif new file mode 100644 index 000000000..bff2f623d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/R_dotbelowmacron.glif @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/R_ho.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/R_ho.glif new file mode 100644 index 000000000..f1b09471d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/R_ho.glif @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/R_linebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/R_linebelow.glif new file mode 100644 index 000000000..05eca8eff --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/R_linebelow.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_acute.glif new file mode 100644 index 000000000..9b213d170 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_acute.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_caron.glif new file mode 100644 index 000000000..c3dde76ea --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_caron.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_cedilla.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_cedilla.glif new file mode 100644 index 000000000..31fe9e707 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_cedilla.glif @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_chwa.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_chwa.glif new file mode 100644 index 000000000..e139030a5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_chwa.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_chwacyr.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_chwacyr.glif new file mode 100644 index 000000000..23cdaa011 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_chwacyr.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_circumflex.glif new file mode 100644 index 000000000..1e93adbd5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_circumflex.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_commaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_commaaccent.glif new file mode 100644 index 000000000..6cd628815 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_commaaccent.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_dotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_dotaccent.glif new file mode 100644 index 000000000..6dcbc2fe6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_dotaccent.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_dotbelow.glif new file mode 100644 index 000000000..dc117788c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_dotbelow.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_ha.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_ha.glif new file mode 100644 index 000000000..9e02e2603 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_ha.glif @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_hcha.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_hcha.glif new file mode 100644 index 000000000..f344d5f70 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_hcha.glif @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_hha.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_hha.glif new file mode 100644 index 000000000..7c03f3a35 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_hha.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_igma.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_igma.glif new file mode 100644 index 000000000..a8138bb17 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_igma.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_oft.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_oft.glif new file mode 100644 index 000000000..b0cb78493 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/S_oft.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_au.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_au.glif new file mode 100644 index 000000000..0f0171154 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_au.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_bar.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_bar.glif new file mode 100644 index 000000000..986691e28 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_bar.glif @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_caron.glif new file mode 100644 index 000000000..97af899b3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_caron.glif @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_cedilla.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_cedilla.glif new file mode 100644 index 000000000..0d7ea89b9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_cedilla.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_commaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_commaaccent.glif new file mode 100644 index 000000000..5cc7dcb73 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_commaaccent.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_dotbelow.glif new file mode 100644 index 000000000..1c2329fca --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_dotbelow.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_e.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_e.glif new file mode 100644 index 000000000..46b3c45dc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_e.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_heta.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_heta.glif new file mode 100644 index 000000000..931273dc9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_heta.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_horn.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_horn.glif new file mode 100644 index 000000000..4a7d3ca35 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_horn.glif @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_linebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_linebelow.glif new file mode 100644 index 000000000..55b30c2f9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_linebelow.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_se.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_se.glif new file mode 100644 index 000000000..763efb215 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_se.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_she.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_she.glif new file mode 100644 index 000000000..bce1ddf2e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/T_she.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_acute.glif new file mode 100644 index 000000000..f3b1d29af --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_acute.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_acutedblcyr.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_acutedblcyr.glif new file mode 100644 index 000000000..295b5ed0c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_acutedblcyr.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_breve.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_breve.glif new file mode 100644 index 000000000..f1091f9d1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_breve.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_caron.glif new file mode 100644 index 000000000..817aa40d1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_caron.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_circumflex.glif new file mode 100644 index 000000000..23e805ff0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_circumflex.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_cyr.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_cyr.glif new file mode 100644 index 000000000..fa785eee3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_cyr.glif @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_dieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_dieresis.glif new file mode 100644 index 000000000..aee758689 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_dieresis.glif @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_dieresisacute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_dieresisacute.glif new file mode 100644 index 000000000..799ea50df --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_dieresisacute.glif @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_dieresiscaron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_dieresiscaron.glif new file mode 100644 index 000000000..4280bb6e9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_dieresiscaron.glif @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_dieresisgrave.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_dieresisgrave.glif new file mode 100644 index 000000000..06844e450 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_dieresisgrave.glif @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_dieresismacron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_dieresismacron.glif new file mode 100644 index 000000000..791d8a446 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_dieresismacron.glif @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_dotbelow.glif new file mode 100644 index 000000000..026059a1b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_dotbelow.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_grave.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_grave.glif new file mode 100644 index 000000000..774bb6629 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_grave.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_hoi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_hoi.glif new file mode 100644 index 000000000..b3c4756ab --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_hoi.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_horn.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_horn.glif new file mode 100644 index 000000000..b7a86778d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_horn.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_hornacute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_hornacute.glif new file mode 100644 index 000000000..b1573853d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_hornacute.glif @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_horndotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_horndotbelow.glif new file mode 100644 index 000000000..470ab3bae --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_horndotbelow.glif @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_horngrave.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_horngrave.glif new file mode 100644 index 000000000..af2d67101 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_horngrave.glif @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_hornhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_hornhoi.glif new file mode 100644 index 000000000..883a97512 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_hornhoi.glif @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_horntilde.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_horntilde.glif new file mode 100644 index 000000000..37b561ef4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_horntilde.glif @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_hungarumlaut.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_hungarumlaut.glif new file mode 100644 index 000000000..b812b535c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_hungarumlaut.glif @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_macron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_macron.glif new file mode 100644 index 000000000..8eb1c5840 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_macron.glif @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_macroncyr.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_macroncyr.glif new file mode 100644 index 000000000..2f1254547 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_macroncyr.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_ogonek.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_ogonek.glif new file mode 100644 index 000000000..1361b4762 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_ogonek.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_psilon.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_psilon.glif new file mode 100644 index 000000000..b852decb1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_psilon.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_psilondieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_psilondieresis.glif new file mode 100644 index 000000000..1420ea7fd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_psilondieresis.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_psilontonos.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_psilontonos.glif new file mode 100644 index 000000000..c625c8093 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_psilontonos.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_ring.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_ring.glif new file mode 100644 index 000000000..2bf4aa516 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_ring.glif @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_short.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_short.glif new file mode 100644 index 000000000..3078b5b39 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_short.glif @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_straight.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_straight.glif new file mode 100644 index 000000000..532153141 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_straight.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_straightstroke.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_straightstroke.glif new file mode 100644 index 000000000..0c2289717 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_straightstroke.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_tilde.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_tilde.glif new file mode 100644 index 000000000..8e87c0b24 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/U_tilde.glif @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/V_e.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/V_e.glif new file mode 100644 index 000000000..a232de46a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/V_e.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/W_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/W_acute.glif new file mode 100644 index 000000000..ca5cfff1e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/W_acute.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/W_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/W_circumflex.glif new file mode 100644 index 000000000..a48df8c86 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/W_circumflex.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/W_dieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/W_dieresis.glif new file mode 100644 index 000000000..e2af73847 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/W_dieresis.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/W_grave.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/W_grave.glif new file mode 100644 index 000000000..3f317c72a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/W_grave.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/X_i.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/X_i.glif new file mode 100644 index 000000000..22cc1f5b9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/X_i.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_a.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_a.glif new file mode 100644 index 000000000..976b4f022 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_a.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_acute.glif new file mode 100644 index 000000000..67a0c1f61 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_acute.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_at.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_at.glif new file mode 100644 index 000000000..30930ccb1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_at.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_circumflex.glif new file mode 100644 index 000000000..0bbfa99a6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_circumflex.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_dieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_dieresis.glif new file mode 100644 index 000000000..f41c0ae7b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_dieresis.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_dotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_dotaccent.glif new file mode 100644 index 000000000..43e291187 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_dotaccent.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_dotbelow.glif new file mode 100644 index 000000000..4fcfdf27a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_dotbelow.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_eru.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_eru.glif new file mode 100644 index 000000000..0c0239c01 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_eru.glif @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_grave.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_grave.glif new file mode 100644 index 000000000..9698607b6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_grave.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_hoi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_hoi.glif new file mode 100644 index 000000000..cecaef619 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_hoi.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_i.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_i.glif new file mode 100644 index 000000000..f84728785 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_i.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_tilde.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_tilde.glif new file mode 100644 index 000000000..ec799f13b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_tilde.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_u.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_u.glif new file mode 100644 index 000000000..4979945fe --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Y_u.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_acute.glif new file mode 100644 index 000000000..324bfcf4c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_acute.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_caron.glif new file mode 100644 index 000000000..71a664596 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_caron.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_dotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_dotaccent.glif new file mode 100644 index 000000000..e150095b7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_dotaccent.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_dotbelow.glif new file mode 100644 index 000000000..05088fe33 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_dotbelow.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_e.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_e.glif new file mode 100644 index 000000000..979280185 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_e.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_edescender.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_edescender.glif new file mode 100644 index 000000000..8c77131bc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_edescender.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_eta.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_eta.glif new file mode 100644 index 000000000..68498c0e8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_eta.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_he.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_he.glif new file mode 100644 index 000000000..1a8b87df3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_he.glif @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_hebreve.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_hebreve.glif new file mode 100644 index 000000000..e27768aad --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_hebreve.glif @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_hedescender.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_hedescender.glif new file mode 100644 index 000000000..09a7579e9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/Z_hedescender.glif @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/a.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/a.sups.glif new file mode 100644 index 000000000..9fcad9cee --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/a.sups.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/aacute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/aacute.glif new file mode 100644 index 000000000..0fc2c9cb5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/aacute.glif @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/abreve.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/abreve.glif new file mode 100644 index 000000000..fc56824c7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/abreve.glif @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/abreveacute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/abreveacute.glif new file mode 100644 index 000000000..a9e3daf31 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/abreveacute.glif @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/abrevecyr.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/abrevecyr.glif new file mode 100644 index 000000000..ef3b48cb5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/abrevecyr.glif @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/abrevedotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/abrevedotbelow.glif new file mode 100644 index 000000000..87a5d392c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/abrevedotbelow.glif @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/abrevegrave.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/abrevegrave.glif new file mode 100644 index 000000000..f924ae832 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/abrevegrave.glif @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/abrevehoi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/abrevehoi.glif new file mode 100644 index 000000000..9086e49b5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/abrevehoi.glif @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/abrevetilde.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/abrevetilde.glif new file mode 100644 index 000000000..711f30633 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/abrevetilde.glif @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acaron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acaron.glif new file mode 100644 index 000000000..0df3ef80e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acaron.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acircumflex.glif new file mode 100644 index 000000000..748b2548c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acircumflex.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acircumflexacute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acircumflexacute.glif new file mode 100644 index 000000000..010ed7dc9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acircumflexacute.glif @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acircumflexdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acircumflexdotbelow.glif new file mode 100644 index 000000000..354053653 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acircumflexdotbelow.glif @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acircumflexgrave.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acircumflexgrave.glif new file mode 100644 index 000000000..2a8071f8e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acircumflexgrave.glif @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acircumflexhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acircumflexhoi.glif new file mode 100644 index 000000000..5d6930690 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acircumflexhoi.glif @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acircumflextilde.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acircumflextilde.glif new file mode 100644 index 000000000..e14b58a14 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acircumflextilde.glif @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acute.glif new file mode 100644 index 000000000..20a6170c9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acute.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acutecmb.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acutecmb.glif new file mode 100644 index 000000000..7f9423518 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acutecmb.glif @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acyr.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acyr.glif new file mode 100644 index 000000000..460e75d16 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/acyr.glif @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/adieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/adieresis.glif new file mode 100644 index 000000000..30949e04d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/adieresis.glif @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/adotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/adotbelow.glif new file mode 100644 index 000000000..8a4947449 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/adotbelow.glif @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ae.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ae.glif new file mode 100644 index 000000000..2c10c738d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ae.glif @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/agrave.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/agrave.glif new file mode 100644 index 000000000..a92a244f3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/agrave.glif @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ahoi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ahoi.glif new file mode 100644 index 000000000..470607c4d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ahoi.glif @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/aie.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/aie.glif new file mode 100644 index 000000000..eb8b75ca8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/aie.glif @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/alpha.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/alpha.glif new file mode 100644 index 000000000..bc644ba1a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/alpha.glif @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/alphalatin.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/alphalatin.glif new file mode 100644 index 000000000..6b970ce13 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/alphalatin.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/alphatonos.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/alphatonos.glif new file mode 100644 index 000000000..343216fc8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/alphatonos.glif @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/amacron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/amacron.glif new file mode 100644 index 000000000..7f27c4173 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/amacron.glif @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/anoteleia.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/anoteleia.glif new file mode 100644 index 000000000..bba7f53c6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/anoteleia.glif @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/aogonek.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/aogonek.glif new file mode 100644 index 000000000..66ab04f21 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/aogonek.glif @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/approxequal.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/approxequal.glif new file mode 100644 index 000000000..d4250a2e3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/approxequal.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/aring.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/aring.glif new file mode 100644 index 000000000..0baa91ee5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/aring.glif @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/arrowdown.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/arrowdown.glif new file mode 100644 index 000000000..a097ba7a3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/arrowdown.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/arrowdownleft.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/arrowdownleft.glif new file mode 100644 index 000000000..7066aa7b4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/arrowdownleft.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/arrowdownright.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/arrowdownright.glif new file mode 100644 index 000000000..c6e7b44ac --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/arrowdownright.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/arrowleft.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/arrowleft.glif new file mode 100644 index 000000000..5eccb9cb3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/arrowleft.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/arrowright.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/arrowright.glif new file mode 100644 index 000000000..10bd9c9ff --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/arrowright.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/arrowup.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/arrowup.glif new file mode 100644 index 000000000..f6b7ae289 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/arrowup.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/arrowupleft.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/arrowupleft.glif new file mode 100644 index 000000000..148738813 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/arrowupleft.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/arrowupright.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/arrowupright.glif new file mode 100644 index 000000000..279329f8b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/arrowupright.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/atilde.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/atilde.glif new file mode 100644 index 000000000..95ff548d4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/atilde.glif @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/b.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/b.sups.glif new file mode 100644 index 000000000..2d6f6098a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/b.sups.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/be.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/be.glif new file mode 100644 index 000000000..4fb5f2c8b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/be.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/beta.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/beta.glif new file mode 100644 index 000000000..7f2828ac2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/beta.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/bitcoin.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/bitcoin.glif new file mode 100644 index 000000000..bbc76b837 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/bitcoin.glif @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/breve.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/breve.glif new file mode 100644 index 000000000..9bbf26afa --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/breve.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/brevebelowcmb.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/brevebelowcmb.glif new file mode 100644 index 000000000..7d4dc0800 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/brevebelowcmb.glif @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/brevecmb.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/brevecmb.glif new file mode 100644 index 000000000..764fc2421 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/brevecmb.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/brokenbar.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/brokenbar.glif new file mode 100644 index 000000000..f300ec020 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/brokenbar.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/bullet.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/bullet.glif new file mode 100644 index 000000000..0e4d49737 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/bullet.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/bulletoperator.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/bulletoperator.glif new file mode 100644 index 000000000..e65e17c18 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/bulletoperator.glif @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/c.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/c.sups.glif new file mode 100644 index 000000000..a0ebda29c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/c.sups.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/cacute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/cacute.glif new file mode 100644 index 000000000..0dde89066 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/cacute.glif @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/caron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/caron.glif new file mode 100644 index 000000000..aa6f04e11 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/caron.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/caroncmb.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/caroncmb.glif new file mode 100644 index 000000000..3527e55f2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/caroncmb.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ccaron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ccaron.glif new file mode 100644 index 000000000..b0e625456 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ccaron.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ccedilla.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ccedilla.glif new file mode 100644 index 000000000..8caa37efc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ccedilla.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ccircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ccircumflex.glif new file mode 100644 index 000000000..137d84481 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ccircumflex.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/cdotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/cdotaccent.glif new file mode 100644 index 000000000..2722298ec --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/cdotaccent.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/cedi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/cedi.glif new file mode 100644 index 000000000..4c7bc2ee2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/cedi.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/cedilla.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/cedilla.glif new file mode 100644 index 000000000..55caa2838 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/cedilla.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/cedillacmb.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/cedillacmb.glif new file mode 100644 index 000000000..4f1b30da0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/cedillacmb.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/cent.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/cent.glif new file mode 100644 index 000000000..a8e6e43a6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/cent.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/che.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/che.glif new file mode 100644 index 000000000..0bad24a51 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/che.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/check.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/check.glif new file mode 100644 index 000000000..c031e7685 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/check.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/checkbox.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/checkbox.glif new file mode 100644 index 000000000..33bb54a61 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/checkbox.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/checkedbox.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/checkedbox.glif new file mode 100644 index 000000000..a970e2f62 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/checkedbox.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/chedescender.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/chedescender.glif new file mode 100644 index 000000000..c11ff2dff --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/chedescender.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/chi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/chi.glif new file mode 100644 index 000000000..138444d2a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/chi.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/circumflex.glif new file mode 100644 index 000000000..76f3c0cef --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/circumflex.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/circumflexcmb.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/circumflexcmb.glif new file mode 100644 index 000000000..c8dd18c07 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/circumflexcmb.glif @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/colonmonetary.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/colonmonetary.glif new file mode 100644 index 000000000..e8f7abaa0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/colonmonetary.glif @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/colontriangularmod.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/colontriangularmod.glif new file mode 100644 index 000000000..53ae61422 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/colontriangularmod.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/commabelowcmb.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/commabelowcmb.glif new file mode 100644 index 000000000..c59327a1b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/commabelowcmb.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/commercemark.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/commercemark.glif new file mode 100644 index 000000000..dd7a424e7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/commercemark.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/contents.plist b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/contents.plist new file mode 100644 index 000000000..b689da04d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/contents.plist @@ -0,0 +1,1630 @@ + + + + + AE + A_E_.glif + Aacute + A_acute.glif + Abreve + A_breve.glif + Abreveacute + A_breveacute.glif + Abrevecyr + A_brevecyr.glif + Abrevedotbelow + A_brevedotbelow.glif + Abrevegrave + A_brevegrave.glif + Abrevehoi + A_brevehoi.glif + Abrevetilde + A_brevetilde.glif + Acaron + A_caron.glif + Acircumflex + A_circumflex.glif + Acircumflexacute + A_circumflexacute.glif + Acircumflexdotbelow + A_circumflexdotbelow.glif + Acircumflexgrave + A_circumflexgrave.glif + Acircumflexhoi + A_circumflexhoi.glif + Acircumflextilde + A_circumflextilde.glif + Acyr + A_cyr.glif + Adieresis + A_dieresis.glif + Adotbelow + A_dotbelow.glif + Agrave + A_grave.glif + Ahoi + A_hoi.glif + Aie + A_ie.glif + Alpha + A_lpha.glif + Alphatonos + A_lphatonos.glif + Amacron + A_macron.glif + Aogonek + A_ogonek.glif + Aring + A_ring.glif + Atilde + A_tilde.glif + Be + B_e.glif + Beta + B_eta.glif + Cacute + C_acute.glif + Ccaron + C_caron.glif + Ccedilla + C_cedilla.glif + Ccircumflex + C_circumflex.glif + Cdotaccent + C_dotaccent.glif + Che + C_he.glif + Chedescender + C_hedescender.glif + Chi + C_hi.glif + Dcaron + D_caron.glif + Dcroat + D_croat.glif + Ddotbelow + D_dotbelow.glif + De + D_e.glif + Delta + D_elta.glif + Dje + D_je.glif + Dlinebelow + D_linebelow.glif + Dze + D_ze.glif + Dzhe + D_zhe.glif + Eacute + E_acute.glif + Ebreve + E_breve.glif + Ecaron + E_caron.glif + Ecircumflex + E_circumflex.glif + Ecircumflexacute + E_circumflexacute.glif + Ecircumflexdotbelow + E_circumflexdotbelow.glif + Ecircumflexgrave + E_circumflexgrave.glif + Ecircumflexhoi + E_circumflexhoi.glif + Ecircumflextilde + E_circumflextilde.glif + Ecyr + E_cyr.glif + Edieresis + E_dieresis.glif + Edotaccent + E_dotaccent.glif + Edotbelow + E_dotbelow.glif + Ef + E_f.glif + Egrave + E_grave.glif + Ehoi + E_hoi.glif + El + E_l.glif + Em + E_m.glif + Emacron + E_macron.glif + En + E_n.glif + Endescender + E_ndescender.glif + Eng + E_ng.glif + Eogonek + E_ogonek.glif + Epsilon + E_psilon.glif + Epsilontonos + E_psilontonos.glif + Er + E_r.glif + Es + E_s.glif + Esdescender + E_sdescender.glif + Eta + E_ta.glif + Etatonos + E_tatonos.glif + Eth + E_th.glif + Etilde + E_tilde.glif + Euro + E_uro.glif + Fita + F_ita.glif + Gamma + G_amma.glif + Gbreve + G_breve.glif + Gcaron + G_caron.glif + Gcircumflex + G_circumflex.glif + Gcommaaccent + G_commaaccent.glif + Gdotaccent + G_dotaccent.glif + Germandbls + G_ermandbls.glif + Ghe + G_he.glif + Ghestroke + G_hestroke.glif + Gheup + G_heup.glif + Gje + G_je.glif + Gmacron + G_macron.glif + Ha + H_a.glif + Hadescender + H_adescender.glif + Hard + H_ard.glif + Hbar + H_bar.glif + Hbrevebelow + H_brevebelow.glif + Hcircumflex + H_circumflex.glif + Hdotbelow + H_dotbelow.glif + IJ + I_J_.glif + Iacute + I_acute.glif + Icaron + I_caron.glif + Icircumflex + I_circumflex.glif + Icyr + I_cyr.glif + Idieresis + I_dieresis.glif + Idotaccent + I_dotaccent.glif + Idotbelow + I_dotbelow.glif + Ie + I_e.glif + Iebreve + I_ebreve.glif + Iegrave + I_egrave.glif + Ieukran + I_eukran.glif + Igrave + I_grave.glif + Igravecyr + I_gravecyr.glif + Ihoi + I_hoi.glif + Imacron + I_macron.glif + Imacroncyr + I_macroncyr.glif + Io + I_o.glif + Iogonek + I_ogonek.glif + Iota + I_ota.glif + Iotadieresis + I_otadieresis.glif + Iotatonos + I_otatonos.glif + Ishort + I_short.glif + Itilde + I_tilde.glif + Iukran + I_ukran.glif + Izhitsa + I_zhitsa.glif + Jcircumflex + J_circumflex.glif + Je + J_e.glif + Ka + K_a.glif + Kabashkir + K_abashkir.glif + Kadescender + K_adescender.glif + Kappa + K_appa.glif + Kcommaaccent + K_commaaccent.glif + Kje + K_je.glif + Lacute + L_acute.glif + Lambda + L_ambda.glif + Lcaron + L_caron.glif + Lcommaaccent + L_commaaccent.glif + Ldot + L_dot.glif + Ldotbelow + L_dotbelow.glif + Ldotbelowmacron + L_dotbelowmacron.glif + Lje + L_je.glif + Llinebelow + L_linebelow.glif + Lslash + L_slash.glif + Macute + M_acute.glif + Mdotbelow + M_dotbelow.glif + Mu + M_u.glif + Nacute + N_acute.glif + Ncaron + N_caron.glif + Ncommaaccent + N_commaaccent.glif + Ndotaccent + N_dotaccent.glif + Ndotbelow + N_dotbelow.glif + Ngrave + N_grave.glif + Nje + N_je.glif + Nlinebelow + N_linebelow.glif + Ntilde + N_tilde.glif + Nu + N_u.glif + OE + O_E_.glif + Oacute + O_acute.glif + Obarcyr + O_barcyr.glif + Obreve + O_breve.glif + Ocaron + O_caron.glif + Ocircumflex + O_circumflex.glif + Ocircumflexacute + O_circumflexacute.glif + Ocircumflexdotbelow + O_circumflexdotbelow.glif + Ocircumflexgrave + O_circumflexgrave.glif + Ocircumflexhoi + O_circumflexhoi.glif + Ocircumflextilde + O_circumflextilde.glif + Ocyr + O_cyr.glif + Odieresis + O_dieresis.glif + Odieresiscyr + O_dieresiscyr.glif + Odotbelow + O_dotbelow.glif + Ograve + O_grave.glif + Ohoi + O_hoi.glif + Ohorn + O_horn.glif + Ohornacute + O_hornacute.glif + Ohorndotbelow + O_horndotbelow.glif + Ohorngrave + O_horngrave.glif + Ohornhoi + O_hornhoi.glif + Ohorntilde + O_horntilde.glif + Ohungarumlaut + O_hungarumlaut.glif + Omacron + O_macron.glif + Omega + O_mega.glif + Omegatonos + O_megatonos.glif + Omicron + O_micron.glif + Omicrontonos + O_microntonos.glif + Oslash + O_slash.glif + Otilde + O_tilde.glif + Palochka + P_alochka.glif + Pe + P_e.glif + Phi + P_hi.glif + Pi + P_i.glif + Psi + P_si.glif + Racute + R_acute.glif + Rcaron + R_caron.glif + Rcommaaccent + R_commaaccent.glif + Rdotbelow + R_dotbelow.glif + Rdotbelowmacron + R_dotbelowmacron.glif + Rho + R_ho.glif + Rlinebelow + R_linebelow.glif + Sacute + S_acute.glif + Scaron + S_caron.glif + Scedilla + S_cedilla.glif + Schwa + S_chwa.glif + Schwacyr + S_chwacyr.glif + Scircumflex + S_circumflex.glif + Scommaaccent + S_commaaccent.glif + Sdotaccent + S_dotaccent.glif + Sdotbelow + S_dotbelow.glif + Sha + S_ha.glif + Shcha + S_hcha.glif + Shha + S_hha.glif + Sigma + S_igma.glif + Soft + S_oft.glif + Tau + T_au.glif + Tbar + T_bar.glif + Tcaron + T_caron.glif + Tcedilla + T_cedilla.glif + Tcommaaccent + T_commaaccent.glif + Tdotbelow + T_dotbelow.glif + Te + T_e.glif + Theta + T_heta.glif + Thorn + T_horn.glif + Tlinebelow + T_linebelow.glif + Tse + T_se.glif + Tshe + T_she.glif + Uacute + U_acute.glif + Uacutedblcyr + U_acutedblcyr.glif + Ubreve + U_breve.glif + Ucaron + U_caron.glif + Ucircumflex + U_circumflex.glif + Ucyr + U_cyr.glif + Udieresis + U_dieresis.glif + Udieresisacute + U_dieresisacute.glif + Udieresiscaron + U_dieresiscaron.glif + Udieresisgrave + U_dieresisgrave.glif + Udieresismacron + U_dieresismacron.glif + Udotbelow + U_dotbelow.glif + Ugrave + U_grave.glif + Uhoi + U_hoi.glif + Uhorn + U_horn.glif + Uhornacute + U_hornacute.glif + Uhorndotbelow + U_horndotbelow.glif + Uhorngrave + U_horngrave.glif + Uhornhoi + U_hornhoi.glif + Uhorntilde + U_horntilde.glif + Uhungarumlaut + U_hungarumlaut.glif + Umacron + U_macron.glif + Umacroncyr + U_macroncyr.glif + Uogonek + U_ogonek.glif + Upsilon + U_psilon.glif + Upsilondieresis + U_psilondieresis.glif + Upsilontonos + U_psilontonos.glif + Uring + U_ring.glif + Ushort + U_short.glif + Ustraight + U_straight.glif + Ustraightstroke + U_straightstroke.glif + Utilde + U_tilde.glif + Ve + V_e.glif + Wacute + W_acute.glif + Wcircumflex + W_circumflex.glif + Wdieresis + W_dieresis.glif + Wgrave + W_grave.glif + Xi + X_i.glif + Ya + Y_a.glif + Yacute + Y_acute.glif + Yat + Y_at.glif + Ycircumflex + Y_circumflex.glif + Ydieresis + Y_dieresis.glif + Ydotaccent + Y_dotaccent.glif + Ydotbelow + Y_dotbelow.glif + Yeru + Y_eru.glif + Ygrave + Y_grave.glif + Yhoi + Y_hoi.glif + Yi + Y_i.glif + Ytilde + Y_tilde.glif + Yu + Y_u.glif + Zacute + Z_acute.glif + Zcaron + Z_caron.glif + Zdotaccent + Z_dotaccent.glif + Zdotbelow + Z_dotbelow.glif + Ze + Z_e.glif + Zedescender + Z_edescender.glif + Zeta + Z_eta.glif + Zhe + Z_he.glif + Zhebreve + Z_hebreve.glif + Zhedescender + Z_hedescender.glif + a.sups + a.sups.glif + aacute + aacute.glif + abreve + abreve.glif + abreveacute + abreveacute.glif + abrevecyr + abrevecyr.glif + abrevedotbelow + abrevedotbelow.glif + abrevegrave + abrevegrave.glif + abrevehoi + abrevehoi.glif + abrevetilde + abrevetilde.glif + acaron + acaron.glif + acircumflex + acircumflex.glif + acircumflexacute + acircumflexacute.glif + acircumflexdotbelow + acircumflexdotbelow.glif + acircumflexgrave + acircumflexgrave.glif + acircumflexhoi + acircumflexhoi.glif + acircumflextilde + acircumflextilde.glif + acute + acute.glif + acutecmb + acutecmb.glif + acyr + acyr.glif + adieresis + adieresis.glif + adotbelow + adotbelow.glif + ae + ae.glif + agrave + agrave.glif + ahoi + ahoi.glif + aie + aie.glif + alpha + alpha.glif + alphalatin + alphalatin.glif + alphatonos + alphatonos.glif + amacron + amacron.glif + anoteleia + anoteleia.glif + aogonek + aogonek.glif + approxequal + approxequal.glif + aring + aring.glif + arrowdown + arrowdown.glif + arrowdownleft + arrowdownleft.glif + arrowdownright + arrowdownright.glif + arrowleft + arrowleft.glif + arrowright + arrowright.glif + arrowup + arrowup.glif + arrowupleft + arrowupleft.glif + arrowupright + arrowupright.glif + atilde + atilde.glif + b.sups + b.sups.glif + be + be.glif + beta + beta.glif + bitcoin + bitcoin.glif + breve + breve.glif + brevebelowcmb + brevebelowcmb.glif + brevecmb + brevecmb.glif + brokenbar + brokenbar.glif + bullet + bullet.glif + bulletoperator + bulletoperator.glif + c.sups + c.sups.glif + cacute + cacute.glif + caron + caron.glif + caroncmb + caroncmb.glif + ccaron + ccaron.glif + ccedilla + ccedilla.glif + ccircumflex + ccircumflex.glif + cdotaccent + cdotaccent.glif + cedi + cedi.glif + cedilla + cedilla.glif + cedillacmb + cedillacmb.glif + cent + cent.glif + che + che.glif + check + check.glif + checkbox + checkbox.glif + checkedbox + checkedbox.glif + chedescender + chedescender.glif + chi + chi.glif + circumflex + circumflex.glif + circumflexcmb + circumflexcmb.glif + colonmonetary + colonmonetary.glif + colontriangularmod + colontriangularmod.glif + commabelowcmb + commabelowcmb.glif + commercemark + commercemark.glif + copyleft + copyleft.glif + copyright + copyright.glif + currency + currency.glif + d.sups + d.sups.glif + dagger + dagger.glif + daggerdbl + daggerdbl.glif + dblprime + dblprime.glif + dcaron + dcaron.glif + dcroat + dcroat.glif + ddotbelow + ddotbelow.glif + de + de.glif + degree + degree.glif + delta + delta.glif + deposeemark + deposeemark.glif + diamondblack + diamondblack.glif + dieresis + dieresis.glif + dieresisbelowcmb + dieresisbelowcmb.glif + dieresiscmb + dieresiscmb.glif + dieresistonos + dieresistonos.glif + digamma + digamma.glif + divide + divide.glif + divisionslash + divisionslash.glif + dje + dje.glif + dlinebelow + dlinebelow.glif + dngb:cross + dngb_cross.glif + dong + dong.glif + dotaccent + dotaccent.glif + dotaccentcmb + dotaccentcmb.glif + dotbelowcmb + dotbelowcmb.glif + dotlessi + dotlessi.glif + dotlessj + dotlessj.glif + dze + dze.glif + dzhe + dzhe.glif + e.sups + e.sups.glif + eacute + eacute.glif + ebreve + ebreve.glif + ecaron + ecaron.glif + ecircumflex + ecircumflex.glif + ecircumflexacute + ecircumflexacute.glif + ecircumflexdotbelow + ecircumflexdotbelow.glif + ecircumflexgrave + ecircumflexgrave.glif + ecircumflexhoi + ecircumflexhoi.glif + ecircumflextilde + ecircumflextilde.glif + ecyr + ecyr.glif + edieresis + edieresis.glif + edotaccent + edotaccent.glif + edotbelow + edotbelow.glif + ef + ef.glif + egrave + egrave.glif + ehoi + ehoi.glif + eight.subs + eight.subs.glif + eight.sups + eight.sups.glif + eighthnote + eighthnote.glif + el + el.glif + ellipsis + ellipsis.glif + em + em.glif + emacron + emacron.glif + emdash + emdash.glif + en + en.glif + endash + endash.glif + endescender + endescender.glif + eng + eng.glif + eogonek + eogonek.glif + epsilon + epsilon.glif + epsilontonos + epsilontonos.glif + er + er.glif + es + es.glif + esdescender + esdescender.glif + estimated + estimated.glif + eta + eta.glif + etatonos + etatonos.glif + eth + eth.glif + etilde + etilde.glif + exclamdbl + exclamdbl.glif + exclamdown + exclamdown.glif + exclamquestion + exclamquestion.glif + f.sups + f.sups.glif + f_f + f_f.glif + f_f_i + f_f_i.glif + f_f_l + f_f_l.glif + f_i + f_i.glif + f_l + f_l.glif + figuredash + figuredash.glif + figurespace + figurespace.glif + fisheye + fisheye.glif + fita + fita.glif + five.subs + five.subs.glif + five.sups + five.sups.glif + fiveeighths + fiveeighths.glif + florin + florin.glif + four.subs + four.subs.glif + four.sups + four.sups.glif + fraction + fraction.glif + g.sups + g.sups.glif + gamma + gamma.glif + gbreve + gbreve.glif + gcaron + gcaron.glif + gcircumflex + gcircumflex.glif + gcommaaccent + gcommaaccent.glif + gdotaccent + gdotaccent.glif + germandbls + germandbls.glif + ghe + ghe.glif + ghestroke + ghestroke.glif + gheup + gheup.glif + gje + gje.glif + gmacron + gmacron.glif + gravecmb + gravecmb.glif + greaterequal + greaterequal.glif + gscript + gscript.glif + guarani + guarani.glif + guillemotleft + guillemotleft.glif + guillemotright + guillemotright.glif + guilsinglleft + guilsinglleft.glif + guilsinglright + guilsinglright.glif + h.sups + h.sups.glif + ha + ha.glif + hadescender + hadescender.glif + hard + hard.glif + hbar + hbar.glif + hbrevebelow + hbrevebelow.glif + hcircumflex + hcircumflex.glif + hdotbelow + hdotbelow.glif + hoicmb + hoicmb.glif + horizontalbar + horizontalbar.glif + horncmb + horncmb.glif + hryvnia + hryvnia.glif + hungarumlaut + hungarumlaut.glif + hungarumlautcmb + hungarumlautcmb.glif + i.sups + i.sups.glif + iacute + iacute.glif + icaron + icaron.glif + icircumflex + icircumflex.glif + icyr + icyr.glif + idieresis + idieresis.glif + idotbelow + idotbelow.glif + ie + ie.glif + iebreve + iebreve.glif + iegrave + iegrave.glif + ieukran + ieukran.glif + igrave + igrave.glif + igravecyr + igravecyr.glif + ihoi + ihoi.glif + ij + ij.glif + imacron + imacron.glif + imacroncyr + imacroncyr.glif + infinity + infinity.glif + integral + integral.glif + io + io.glif + iogonek + iogonek.glif + iota + iota.glif + iotadieresis + iotadieresis.glif + iotadieresistonos + iotadieresistonos.glif + iotatonos + iotatonos.glif + ishort + ishort.glif + itilde + itilde.glif + iukran + iukran.glif + izhitsa + izhitsa.glif + j.sups + j.sups.glif + jcircumflex + jcircumflex.glif + je + je.glif + k.sups + k.sups.glif + ka + ka.glif + kabashkir + kabashkir.glif + kadescender + kadescender.glif + kai + kai.glif + kappa + kappa.glif + kcommaaccent + kcommaaccent.glif + kgreenlandic + kgreenlandic.glif + kje + kje.glif + koppa + koppa.glif + l.sups + l.sups.glif + lacute + lacute.glif + lambda + lambda.glif + lcaron + lcaron.glif + lcommaaccent + lcommaaccent.glif + ldot + ldot.glif + ldotbelow + ldotbelow.glif + ldotbelowmacron + ldotbelowmacron.glif + lessequal + lessequal.glif + lira + lira.glif + liraturkish + liraturkish.glif + litre + litre.glif + lje + lje.glif + llinebelow + llinebelow.glif + logicalnot + logicalnot.glif + longs + longs.glif + lownumeralsign + lownumeralsign.glif + lozenge + lozenge.glif + lslash + lslash.glif + m.sups + m.sups.glif + macronbelowcmb + macronbelowcmb.glif + macroncmb + macroncmb.glif + macronmod + macronmod.glif + macute + macute.glif + mdotbelow + mdotbelow.glif + minus + minus.glif + mu + mu.glif + multiply + multiply.glif + n.sups + n.sups.glif + nacute + nacute.glif + naira + naira.glif + napostrophe + napostrophe.glif + ncaron + ncaron.glif + ncommaaccent + ncommaaccent.glif + ndotaccent + ndotaccent.glif + ndotbelow + ndotbelow.glif + ngrave + ngrave.glif + nine.subs + nine.subs.glif + nine.sups + nine.sups.glif + nje + nje.glif + nlinebelow + nlinebelow.glif + notequal + notequal.glif + ntilde + ntilde.glif + nu + nu.glif + numeralsign + numeralsign.glif + numero + numero.glif + o.sups + o.sups.glif + oacute + oacute.glif + obarcyr + obarcyr.glif + obreve + obreve.glif + ocaron + ocaron.glif + ocircumflex + ocircumflex.glif + ocircumflexacute + ocircumflexacute.glif + ocircumflexdotbelow + ocircumflexdotbelow.glif + ocircumflexgrave + ocircumflexgrave.glif + ocircumflexhoi + ocircumflexhoi.glif + ocircumflextilde + ocircumflextilde.glif + ocyr + ocyr.glif + odieresis + odieresis.glif + odieresiscyr + odieresiscyr.glif + odotbelow + odotbelow.glif + oe + oe.glif + ogonek + ogonek.glif + ogonekcmb + ogonekcmb.glif + ograve + ograve.glif + ohoi + ohoi.glif + ohorn + ohorn.glif + ohornacute + ohornacute.glif + ohorndotbelow + ohorndotbelow.glif + ohorngrave + ohorngrave.glif + ohornhoi + ohornhoi.glif + ohorntilde + ohorntilde.glif + ohungarumlaut + ohungarumlaut.glif + omacron + omacron.glif + omega + omega.glif + omegatonos + omegatonos.glif + omicron + omicron.glif + omicrontonos + omicrontonos.glif + one.subs + one.subs.glif + one.sups + one.sups.glif + oneeighth + oneeighth.glif + onehalf + onehalf.glif + onequarter + onequarter.glif + onethird + onethird.glif + ordfeminine + ordfeminine.glif + ordmasculine + ordmasculine.glif + oslash + oslash.glif + otilde + otilde.glif + overline + overline.glif + p.sups + p.sups.glif + palochka + palochka.glif + paragraph + paragraph.glif + parenleft.subs + parenleft.subs.glif + parenleft.sups + parenleft.sups.glif + parenright.subs + parenright.subs.glif + parenright.sups + parenright.sups.glif + partialdiff + partialdiff.glif + pe + pe.glif + periodcentered + periodcentered.glif + perthousand + perthousand.glif + peseta + peseta.glif + peso + peso.glif + phi + phi.glif + pi + pi.glif + plusminus + plusminus.glif + prime + prime.glif + product + product.glif + psi + psi.glif + questiondbl + questiondbl.glif + questiondown + questiondown.glif + questionexclam + questionexclam.glif + questiongreek + questiongreek.glif + quotedblbase + quotedblbase.glif + quotedblleft + quotedblleft.glif + quotedblright + quotedblright.glif + quoteleft + quoteleft.glif + quoteright + quoteright.glif + quotesinglbase + quotesinglbase.glif + r.sups + r.sups.glif + racute + racute.glif + radical + radical.glif + rcaron + rcaron.glif + rcommaaccent + rcommaaccent.glif + rdotbelow + rdotbelow.glif + rdotbelowmacron + rdotbelowmacron.glif + registered + registered.glif + rho + rho.glif + ring + ring.glif + ringcmb + ringcmb.glif + ringhalfleftmod + ringhalfleftmod.glif + ringhalfrightmod + ringhalfrightmod.glif + rlinebelow + rlinebelow.glif + ruble + ruble.glif + rupeeindian + rupeeindian.glif + s.sups + s.sups.glif + sacute + sacute.glif + sampi + sampi.glif + scaron + scaron.glif + scedilla + scedilla.glif + schwa + schwa.glif + schwacyr + schwacyr.glif + scircumflex + scircumflex.glif + scommaaccent + scommaaccent.glif + sdotaccent + sdotaccent.glif + sdotbelow + sdotbelow.glif + section + section.glif + servicemark + servicemark.glif + seven.subs + seven.subs.glif + seven.sups + seven.sups.glif + seveneighths + seveneighths.glif + sha + sha.glif + shcha + shcha.glif + shha + shha.glif + sigma + sigma.glif + sigma.end + sigma.end.glif + similar + similar.glif + six.subs + six.subs.glif + six.sups + six.sups.glif + soft + soft.glif + soundcopyright + soundcopyright.glif + squareblack + squareblack.glif + squareshadow + squareshadow.glif + sterling + sterling.glif + stigma + stigma.glif + summation + summation.glif + t.sups + t.sups.glif + tau + tau.glif + tbar + tbar.glif + tcaron + tcaron.glif + tcedilla + tcedilla.glif + tcommaaccent + tcommaaccent.glif + tdieresis + tdieresis.glif + tdotbelow + tdotbelow.glif + te + te.glif + tenge + tenge.glif + theta + theta.glif + thorn + thorn.glif + three.subs + three.subs.glif + three.sups + three.sups.glif + threeeighths + threeeighths.glif + threeemdash + threeemdash.glif + threequarters + threequarters.glif + tilde + tilde.glif + tildecmb + tildecmb.glif + tlinebelow + tlinebelow.glif + tonos + tonos.glif + trademark + trademark.glif + triangleblackdown + triangleblackdown.glif + triangleblackleft + triangleblackleft.glif + triangleblackright + triangleblackright.glif + triangleblackup + triangleblackup.glif + trianglewhitedown + trianglewhitedown.glif + trianglewhiteleft + trianglewhiteleft.glif + trianglewhiteright + trianglewhiteright.glif + trianglewhiteup + trianglewhiteup.glif + triangularbullet + triangularbullet.glif + tse + tse.glif + tshe + tshe.glif + tugrik + tugrik.glif + two.subs + two.subs.glif + two.sups + two.sups.glif + twodotenleader + twodotenleader.glif + twoemdash + twoemdash.glif + twothirds + twothirds.glif + u.sups + u.sups.glif + uacute + uacute.glif + uacutedblcyr + uacutedblcyr.glif + ubreve + ubreve.glif + ucaron + ucaron.glif + ucircumflex + ucircumflex.glif + ucyr + ucyr.glif + udieresis + udieresis.glif + udieresisacute + udieresisacute.glif + udieresiscaron + udieresiscaron.glif + udieresisgrave + udieresisgrave.glif + udieresismacron + udieresismacron.glif + udotbelow + udotbelow.glif + ugrave + ugrave.glif + uhoi + uhoi.glif + uhorn + uhorn.glif + uhornacute + uhornacute.glif + uhorndotbelow + uhorndotbelow.glif + uhorngrave + uhorngrave.glif + uhornhoi + uhornhoi.glif + uhorntilde + uhorntilde.glif + uhungarumlaut + uhungarumlaut.glif + umacron + umacron.glif + umacroncyr + umacroncyr.glif + uogonek + uogonek.glif + upsilon + upsilon.glif + upsilondieresis + upsilondieresis.glif + upsilondieresistonos + upsilondieresistonos.glif + upsilontonos + upsilontonos.glif + uring + uring.glif + ushort + ushort.glif + ustraight + ustraight.glif + ustraightstroke + ustraightstroke.glif + utilde + utilde.glif + v.sups + v.sups.glif + ve + ve.glif + verticallinebelowcmb + verticallinebelowcmb.glif + verticallinelowmod + verticallinelowmod.glif + verticallinemod + verticallinemod.glif + w.sups + w.sups.glif + wacute + wacute.glif + wcircumflex + wcircumflex.glif + wdieresis + wdieresis.glif + wgrave + wgrave.glif + won + won.glif + x.sups + x.sups.glif + xi + xi.glif + y.sups + y.sups.glif + ya + ya.glif + yacute + yacute.glif + yat + yat.glif + ycircumflex + ycircumflex.glif + ydieresis + ydieresis.glif + ydotaccent + ydotaccent.glif + ydotbelow + ydotbelow.glif + yen + yen.glif + yeru + yeru.glif + ygrave + ygrave.glif + yhoi + yhoi.glif + yi + yi.glif + ytilde + ytilde.glif + yu + yu.glif + z.sups + z.sups.glif + zacute + zacute.glif + zcaron + zcaron.glif + zdotaccent + zdotaccent.glif + zdotbelow + zdotbelow.glif + ze + ze.glif + zedescender + zedescender.glif + zero.subs + zero.subs.glif + zero.sups + zero.sups.glif + zeta + zeta.glif + zhe + zhe.glif + zhebreve + zhebreve.glif + zhedescender + zhedescender.glif + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/copyleft.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/copyleft.glif new file mode 100644 index 000000000..836d52ee0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/copyleft.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/copyright.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/copyright.glif new file mode 100644 index 000000000..ef1815952 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/copyright.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/currency.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/currency.glif new file mode 100644 index 000000000..1072ebc52 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/currency.glif @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/d.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/d.sups.glif new file mode 100644 index 000000000..2be99a59a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/d.sups.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dagger.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dagger.glif new file mode 100644 index 000000000..39a0cc4d8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dagger.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/daggerdbl.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/daggerdbl.glif new file mode 100644 index 000000000..f583248ee --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/daggerdbl.glif @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dblprime.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dblprime.glif new file mode 100644 index 000000000..aa74adcf5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dblprime.glif @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dcaron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dcaron.glif new file mode 100644 index 000000000..550bfd9d5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dcaron.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dcroat.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dcroat.glif new file mode 100644 index 000000000..cc48e2c2c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dcroat.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ddotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ddotbelow.glif new file mode 100644 index 000000000..b986580fb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ddotbelow.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/de.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/de.glif new file mode 100644 index 000000000..1018555ef --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/de.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/degree.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/degree.glif new file mode 100644 index 000000000..83fd8ec13 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/degree.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/delta.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/delta.glif new file mode 100644 index 000000000..631e3d892 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/delta.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/deposeemark.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/deposeemark.glif new file mode 100644 index 000000000..aec6e321e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/deposeemark.glif @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/diamondblack.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/diamondblack.glif new file mode 100644 index 000000000..fc56073cb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/diamondblack.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dieresis.glif new file mode 100644 index 000000000..c2a3618b3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dieresis.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dieresisbelowcmb.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dieresisbelowcmb.glif new file mode 100644 index 000000000..bedcff6eb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dieresisbelowcmb.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dieresiscmb.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dieresiscmb.glif new file mode 100644 index 000000000..ac3e7d05e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dieresiscmb.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dieresistonos.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dieresistonos.glif new file mode 100644 index 000000000..b0fae5eb0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dieresistonos.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/digamma.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/digamma.glif new file mode 100644 index 000000000..8bb181700 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/digamma.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/divide.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/divide.glif new file mode 100644 index 000000000..3c74dfb71 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/divide.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/divisionslash.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/divisionslash.glif new file mode 100644 index 000000000..92f1a46a6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/divisionslash.glif @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dje.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dje.glif new file mode 100644 index 000000000..a7e870616 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dje.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dlinebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dlinebelow.glif new file mode 100644 index 000000000..e809c1ae9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dlinebelow.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dngb_cross.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dngb_cross.glif new file mode 100644 index 000000000..5e08df0f1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dngb_cross.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dong.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dong.glif new file mode 100644 index 000000000..faa3c469a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dong.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dotaccent.glif new file mode 100644 index 000000000..8e625e061 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dotaccent.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dotaccentcmb.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dotaccentcmb.glif new file mode 100644 index 000000000..c59809a00 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dotaccentcmb.glif @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dotbelowcmb.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dotbelowcmb.glif new file mode 100644 index 000000000..e3fda50de --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dotbelowcmb.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dotlessi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dotlessi.glif new file mode 100644 index 000000000..f95913216 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dotlessi.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dotlessj.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dotlessj.glif new file mode 100644 index 000000000..66fde4939 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dotlessj.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dze.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dze.glif new file mode 100644 index 000000000..3a7f6a4cb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dze.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dzhe.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dzhe.glif new file mode 100644 index 000000000..b0015937e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/dzhe.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/e.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/e.sups.glif new file mode 100644 index 000000000..8331ba788 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/e.sups.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/eacute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/eacute.glif new file mode 100644 index 000000000..396d7b118 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/eacute.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ebreve.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ebreve.glif new file mode 100644 index 000000000..4f2feb8c4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ebreve.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ecaron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ecaron.glif new file mode 100644 index 000000000..28ae03fea --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ecaron.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ecircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ecircumflex.glif new file mode 100644 index 000000000..5526b7120 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ecircumflex.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ecircumflexacute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ecircumflexacute.glif new file mode 100644 index 000000000..dbadf94fd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ecircumflexacute.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ecircumflexdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ecircumflexdotbelow.glif new file mode 100644 index 000000000..26bdd4a4e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ecircumflexdotbelow.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ecircumflexgrave.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ecircumflexgrave.glif new file mode 100644 index 000000000..c702b6ded --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ecircumflexgrave.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ecircumflexhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ecircumflexhoi.glif new file mode 100644 index 000000000..dc6684687 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ecircumflexhoi.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ecircumflextilde.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ecircumflextilde.glif new file mode 100644 index 000000000..6b13a6585 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ecircumflextilde.glif @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ecyr.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ecyr.glif new file mode 100644 index 000000000..6923012bc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ecyr.glif @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/edieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/edieresis.glif new file mode 100644 index 000000000..c82d14505 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/edieresis.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/edotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/edotaccent.glif new file mode 100644 index 000000000..84bf9e0b0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/edotaccent.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/edotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/edotbelow.glif new file mode 100644 index 000000000..ea62492bf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/edotbelow.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ef.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ef.glif new file mode 100644 index 000000000..b68caa5a0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ef.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/egrave.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/egrave.glif new file mode 100644 index 000000000..238c89adc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/egrave.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ehoi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ehoi.glif new file mode 100644 index 000000000..496ba3de4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ehoi.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/eight.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/eight.subs.glif new file mode 100644 index 000000000..e64211edc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/eight.subs.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/eight.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/eight.sups.glif new file mode 100644 index 000000000..0a0cac941 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/eight.sups.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/eighthnote.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/eighthnote.glif new file mode 100644 index 000000000..9cb43fe5c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/eighthnote.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/el.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/el.glif new file mode 100644 index 000000000..f595700ac --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/el.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ellipsis.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ellipsis.glif new file mode 100644 index 000000000..52ed0a5c8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ellipsis.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/em.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/em.glif new file mode 100644 index 000000000..b82bd3bfe --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/em.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/emacron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/emacron.glif new file mode 100644 index 000000000..9dc6ff6a5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/emacron.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/emdash.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/emdash.glif new file mode 100644 index 000000000..a5a6b4ead --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/emdash.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/en.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/en.glif new file mode 100644 index 000000000..7bdfc317f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/en.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/endash.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/endash.glif new file mode 100644 index 000000000..74584534a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/endash.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/endescender.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/endescender.glif new file mode 100644 index 000000000..12de7075a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/endescender.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/eng.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/eng.glif new file mode 100644 index 000000000..b51001b82 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/eng.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/eogonek.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/eogonek.glif new file mode 100644 index 000000000..906ab7c97 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/eogonek.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/epsilon.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/epsilon.glif new file mode 100644 index 000000000..0c82a0554 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/epsilon.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/epsilontonos.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/epsilontonos.glif new file mode 100644 index 000000000..a9690519c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/epsilontonos.glif @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/er.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/er.glif new file mode 100644 index 000000000..d9305b21b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/er.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/es.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/es.glif new file mode 100644 index 000000000..64e8450e8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/es.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/esdescender.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/esdescender.glif new file mode 100644 index 000000000..6cf533d29 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/esdescender.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/estimated.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/estimated.glif new file mode 100644 index 000000000..539c6c77e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/estimated.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/eta.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/eta.glif new file mode 100644 index 000000000..cd5e9f7bf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/eta.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/etatonos.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/etatonos.glif new file mode 100644 index 000000000..15b2d631e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/etatonos.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/eth.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/eth.glif new file mode 100644 index 000000000..207d3fb70 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/eth.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/etilde.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/etilde.glif new file mode 100644 index 000000000..d21835cc9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/etilde.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/exclamdbl.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/exclamdbl.glif new file mode 100644 index 000000000..f6774ff69 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/exclamdbl.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/exclamdown.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/exclamdown.glif new file mode 100644 index 000000000..11c185fb6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/exclamdown.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/exclamquestion.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/exclamquestion.glif new file mode 100644 index 000000000..3500d51e6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/exclamquestion.glif @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/f.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/f.sups.glif new file mode 100644 index 000000000..a6e657d5d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/f.sups.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/f_f.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/f_f.glif new file mode 100644 index 000000000..9526c4e51 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/f_f.glif @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/f_f_i.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/f_f_i.glif new file mode 100644 index 000000000..275f8746d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/f_f_i.glif @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/f_f_l.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/f_f_l.glif new file mode 100644 index 000000000..5efcdacb5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/f_f_l.glif @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/f_i.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/f_i.glif new file mode 100644 index 000000000..bba3d635b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/f_i.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/f_l.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/f_l.glif new file mode 100644 index 000000000..a2570ba95 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/f_l.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/figuredash.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/figuredash.glif new file mode 100644 index 000000000..c49c832bd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/figuredash.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/figurespace.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/figurespace.glif new file mode 100644 index 000000000..6d67ff1d2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/figurespace.glif @@ -0,0 +1,5 @@ + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/fisheye.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/fisheye.glif new file mode 100644 index 000000000..1841f2cbc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/fisheye.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/fita.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/fita.glif new file mode 100644 index 000000000..061efe322 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/fita.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/five.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/five.subs.glif new file mode 100644 index 000000000..fb8d2535b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/five.subs.glif @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/five.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/five.sups.glif new file mode 100644 index 000000000..70f4d5005 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/five.sups.glif @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/fiveeighths.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/fiveeighths.glif new file mode 100644 index 000000000..9ac0d6a05 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/fiveeighths.glif @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/florin.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/florin.glif new file mode 100644 index 000000000..570ef1041 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/florin.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/four.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/four.subs.glif new file mode 100644 index 000000000..3e0d9e26a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/four.subs.glif @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/four.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/four.sups.glif new file mode 100644 index 000000000..939974feb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/four.sups.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/fraction.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/fraction.glif new file mode 100644 index 000000000..cbe32cbe5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/fraction.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/g.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/g.sups.glif new file mode 100644 index 000000000..3ba09d8d1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/g.sups.glif @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gamma.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gamma.glif new file mode 100644 index 000000000..0155b9853 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gamma.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gbreve.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gbreve.glif new file mode 100644 index 000000000..53f0a7726 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gbreve.glif @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gcaron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gcaron.glif new file mode 100644 index 000000000..717efd93b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gcaron.glif @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gcircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gcircumflex.glif new file mode 100644 index 000000000..bce347fba --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gcircumflex.glif @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gcommaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gcommaaccent.glif new file mode 100644 index 000000000..2f3f7842c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gcommaaccent.glif @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gdotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gdotaccent.glif new file mode 100644 index 000000000..ba68fab8e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gdotaccent.glif @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/germandbls.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/germandbls.glif new file mode 100644 index 000000000..457c68e9c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/germandbls.glif @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ghe.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ghe.glif new file mode 100644 index 000000000..96939197c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ghe.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ghestroke.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ghestroke.glif new file mode 100644 index 000000000..72e7f4c95 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ghestroke.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gheup.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gheup.glif new file mode 100644 index 000000000..ccfcf1500 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gheup.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gje.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gje.glif new file mode 100644 index 000000000..3bcb4309f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gje.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gmacron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gmacron.glif new file mode 100644 index 000000000..dd2bb7c14 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gmacron.glif @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gravecmb.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gravecmb.glif new file mode 100644 index 000000000..f3a8b6276 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gravecmb.glif @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/greaterequal.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/greaterequal.glif new file mode 100644 index 000000000..588b316e9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/greaterequal.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gscript.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gscript.glif new file mode 100644 index 000000000..f3d3f86ea --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/gscript.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/guarani.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/guarani.glif new file mode 100644 index 000000000..298135f29 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/guarani.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/guillemotleft.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/guillemotleft.glif new file mode 100644 index 000000000..9f6b8a078 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/guillemotleft.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/guillemotright.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/guillemotright.glif new file mode 100644 index 000000000..699b58007 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/guillemotright.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/guilsinglleft.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/guilsinglleft.glif new file mode 100644 index 000000000..24969fb37 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/guilsinglleft.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/guilsinglright.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/guilsinglright.glif new file mode 100644 index 000000000..3dc707f62 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/guilsinglright.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/h.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/h.sups.glif new file mode 100644 index 000000000..baf24d133 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/h.sups.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ha.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ha.glif new file mode 100644 index 000000000..9949511ba --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ha.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hadescender.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hadescender.glif new file mode 100644 index 000000000..b6a53d13e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hadescender.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hard.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hard.glif new file mode 100644 index 000000000..aee345617 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hard.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hbar.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hbar.glif new file mode 100644 index 000000000..5838df95c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hbar.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hbrevebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hbrevebelow.glif new file mode 100644 index 000000000..998029ae7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hbrevebelow.glif @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hcircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hcircumflex.glif new file mode 100644 index 000000000..74f90ddf4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hcircumflex.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hdotbelow.glif new file mode 100644 index 000000000..6a7cce413 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hdotbelow.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hoicmb.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hoicmb.glif new file mode 100644 index 000000000..7a58c5df0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hoicmb.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/horizontalbar.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/horizontalbar.glif new file mode 100644 index 000000000..4071b1410 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/horizontalbar.glif @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/horncmb.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/horncmb.glif new file mode 100644 index 000000000..7bfe6f4a4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/horncmb.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hryvnia.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hryvnia.glif new file mode 100644 index 000000000..074767111 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hryvnia.glif @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hungarumlaut.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hungarumlaut.glif new file mode 100644 index 000000000..edefa2998 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hungarumlaut.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hungarumlautcmb.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hungarumlautcmb.glif new file mode 100644 index 000000000..aabaa21f6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/hungarumlautcmb.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/i.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/i.sups.glif new file mode 100644 index 000000000..2900bdb4d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/i.sups.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iacute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iacute.glif new file mode 100644 index 000000000..03f9e20f3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iacute.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/icaron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/icaron.glif new file mode 100644 index 000000000..c55b9da75 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/icaron.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/icircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/icircumflex.glif new file mode 100644 index 000000000..13e9d97d7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/icircumflex.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/icyr.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/icyr.glif new file mode 100644 index 000000000..b966f5e9a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/icyr.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/idieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/idieresis.glif new file mode 100644 index 000000000..8c75fdad0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/idieresis.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/idotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/idotbelow.glif new file mode 100644 index 000000000..c839cf397 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/idotbelow.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ie.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ie.glif new file mode 100644 index 000000000..4efe0d559 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ie.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iebreve.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iebreve.glif new file mode 100644 index 000000000..2d6dfe954 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iebreve.glif @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iegrave.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iegrave.glif new file mode 100644 index 000000000..319cacfeb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iegrave.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ieukran.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ieukran.glif new file mode 100644 index 000000000..ccf9da863 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ieukran.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/igrave.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/igrave.glif new file mode 100644 index 000000000..dbadc54a5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/igrave.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/igravecyr.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/igravecyr.glif new file mode 100644 index 000000000..b8521cac5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/igravecyr.glif @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ihoi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ihoi.glif new file mode 100644 index 000000000..09459494e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ihoi.glif @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ij.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ij.glif new file mode 100644 index 000000000..7072d6ca4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ij.glif @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/imacron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/imacron.glif new file mode 100644 index 000000000..63415277c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/imacron.glif @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/imacroncyr.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/imacroncyr.glif new file mode 100644 index 000000000..2c955e96a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/imacroncyr.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/infinity.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/infinity.glif new file mode 100644 index 000000000..1b2ad6c33 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/infinity.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/integral.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/integral.glif new file mode 100644 index 000000000..e3e742e20 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/integral.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/io.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/io.glif new file mode 100644 index 000000000..948bae83a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/io.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iogonek.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iogonek.glif new file mode 100644 index 000000000..3566039a3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iogonek.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iota.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iota.glif new file mode 100644 index 000000000..e3e2aec8d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iota.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iotadieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iotadieresis.glif new file mode 100644 index 000000000..0ae6a4be3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iotadieresis.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iotadieresistonos.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iotadieresistonos.glif new file mode 100644 index 000000000..af426defe --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iotadieresistonos.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iotatonos.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iotatonos.glif new file mode 100644 index 000000000..0430c0b9a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iotatonos.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ishort.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ishort.glif new file mode 100644 index 000000000..6f8955730 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ishort.glif @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/itilde.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/itilde.glif new file mode 100644 index 000000000..b64bbfcc8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/itilde.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iukran.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iukran.glif new file mode 100644 index 000000000..97ac5ccf8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/iukran.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/izhitsa.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/izhitsa.glif new file mode 100644 index 000000000..e6207e1de --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/izhitsa.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/j.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/j.sups.glif new file mode 100644 index 000000000..83f8806b1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/j.sups.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/jcircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/jcircumflex.glif new file mode 100644 index 000000000..0b683382c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/jcircumflex.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/je.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/je.glif new file mode 100644 index 000000000..9a8486943 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/je.glif @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/k.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/k.sups.glif new file mode 100644 index 000000000..1e1a3025a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/k.sups.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ka.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ka.glif new file mode 100644 index 000000000..618edde81 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ka.glif @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/kabashkir.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/kabashkir.glif new file mode 100644 index 000000000..d456fd862 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/kabashkir.glif @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/kadescender.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/kadescender.glif new file mode 100644 index 000000000..c652f6daf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/kadescender.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/kai.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/kai.glif new file mode 100644 index 000000000..390a7221e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/kai.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/kappa.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/kappa.glif new file mode 100644 index 000000000..aaa32b644 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/kappa.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/kcommaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/kcommaaccent.glif new file mode 100644 index 000000000..eab909a88 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/kcommaaccent.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/kgreenlandic.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/kgreenlandic.glif new file mode 100644 index 000000000..d34d6f7d2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/kgreenlandic.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/kje.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/kje.glif new file mode 100644 index 000000000..eb29a6990 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/kje.glif @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/koppa.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/koppa.glif new file mode 100644 index 000000000..fa9a13d3e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/koppa.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/l.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/l.sups.glif new file mode 100644 index 000000000..c2b11192b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/l.sups.glif @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lacute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lacute.glif new file mode 100644 index 000000000..7242b2801 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lacute.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lambda.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lambda.glif new file mode 100644 index 000000000..ed0048e99 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lambda.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lcaron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lcaron.glif new file mode 100644 index 000000000..f6ac29254 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lcaron.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lcommaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lcommaaccent.glif new file mode 100644 index 000000000..3feef7854 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lcommaaccent.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ldot.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ldot.glif new file mode 100644 index 000000000..267a44add --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ldot.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ldotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ldotbelow.glif new file mode 100644 index 000000000..738009d39 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ldotbelow.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ldotbelowmacron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ldotbelowmacron.glif new file mode 100644 index 000000000..f3b4af184 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ldotbelowmacron.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lessequal.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lessequal.glif new file mode 100644 index 000000000..1d659bf52 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lessequal.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lira.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lira.glif new file mode 100644 index 000000000..bae025f2f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lira.glif @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/liraturkish.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/liraturkish.glif new file mode 100644 index 000000000..0a1a5e27c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/liraturkish.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/litre.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/litre.glif new file mode 100644 index 000000000..f2c026c12 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/litre.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lje.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lje.glif new file mode 100644 index 000000000..9b7aac47b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lje.glif @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/llinebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/llinebelow.glif new file mode 100644 index 000000000..b127e9f80 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/llinebelow.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/logicalnot.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/logicalnot.glif new file mode 100644 index 000000000..0c1cf588c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/logicalnot.glif @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/longs.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/longs.glif new file mode 100644 index 000000000..ff0632b15 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/longs.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lownumeralsign.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lownumeralsign.glif new file mode 100644 index 000000000..574bb9669 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lownumeralsign.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lozenge.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lozenge.glif new file mode 100644 index 000000000..f344d164f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lozenge.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lslash.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lslash.glif new file mode 100644 index 000000000..04c85344f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/lslash.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/m.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/m.sups.glif new file mode 100644 index 000000000..b7ce65bbb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/m.sups.glif @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/macronbelowcmb.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/macronbelowcmb.glif new file mode 100644 index 000000000..a49d1d0bb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/macronbelowcmb.glif @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/macroncmb.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/macroncmb.glif new file mode 100644 index 000000000..ebdd73bc4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/macroncmb.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/macronmod.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/macronmod.glif new file mode 100644 index 000000000..4f5d07dd1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/macronmod.glif @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/macute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/macute.glif new file mode 100644 index 000000000..935c84821 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/macute.glif @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/mdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/mdotbelow.glif new file mode 100644 index 000000000..89dfaf1c3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/mdotbelow.glif @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/minus.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/minus.glif new file mode 100644 index 000000000..6be1d8786 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/minus.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/mu.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/mu.glif new file mode 100644 index 000000000..a3e39ea4d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/mu.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/multiply.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/multiply.glif new file mode 100644 index 000000000..e3c0323d8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/multiply.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/n.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/n.sups.glif new file mode 100644 index 000000000..09c8636b3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/n.sups.glif @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/nacute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/nacute.glif new file mode 100644 index 000000000..58c150589 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/nacute.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/naira.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/naira.glif new file mode 100644 index 000000000..fd7f73ccc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/naira.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/napostrophe.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/napostrophe.glif new file mode 100644 index 000000000..e4cbbb80c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/napostrophe.glif @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ncaron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ncaron.glif new file mode 100644 index 000000000..e54d01cc0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ncaron.glif @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ncommaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ncommaaccent.glif new file mode 100644 index 000000000..cf59d8a8d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ncommaaccent.glif @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ndotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ndotaccent.glif new file mode 100644 index 000000000..89eddd63c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ndotaccent.glif @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ndotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ndotbelow.glif new file mode 100644 index 000000000..579c32855 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ndotbelow.glif @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ngrave.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ngrave.glif new file mode 100644 index 000000000..bb9cb5240 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ngrave.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/nine.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/nine.subs.glif new file mode 100644 index 000000000..e60eedc28 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/nine.subs.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/nine.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/nine.sups.glif new file mode 100644 index 000000000..ded2b261b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/nine.sups.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/nje.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/nje.glif new file mode 100644 index 000000000..8267f7fb5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/nje.glif @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/nlinebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/nlinebelow.glif new file mode 100644 index 000000000..61617c84c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/nlinebelow.glif @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/notequal.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/notequal.glif new file mode 100644 index 000000000..1e2cb0191 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/notequal.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ntilde.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ntilde.glif new file mode 100644 index 000000000..9efaecaf9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ntilde.glif @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/nu.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/nu.glif new file mode 100644 index 000000000..6f591b1e6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/nu.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/numeralsign.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/numeralsign.glif new file mode 100644 index 000000000..bdbcb8f6e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/numeralsign.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/numero.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/numero.glif new file mode 100644 index 000000000..85082ca03 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/numero.glif @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/o.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/o.sups.glif new file mode 100644 index 000000000..83809c336 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/o.sups.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/oacute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/oacute.glif new file mode 100644 index 000000000..7c4c0e625 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/oacute.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/obarcyr.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/obarcyr.glif new file mode 100644 index 000000000..22a887b83 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/obarcyr.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/obreve.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/obreve.glif new file mode 100644 index 000000000..16c062387 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/obreve.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ocaron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ocaron.glif new file mode 100644 index 000000000..f04646163 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ocaron.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ocircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ocircumflex.glif new file mode 100644 index 000000000..017192987 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ocircumflex.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ocircumflexacute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ocircumflexacute.glif new file mode 100644 index 000000000..b5d8555d3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ocircumflexacute.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ocircumflexdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ocircumflexdotbelow.glif new file mode 100644 index 000000000..2fceb183b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ocircumflexdotbelow.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ocircumflexgrave.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ocircumflexgrave.glif new file mode 100644 index 000000000..851a0009f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ocircumflexgrave.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ocircumflexhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ocircumflexhoi.glif new file mode 100644 index 000000000..9051a39df --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ocircumflexhoi.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ocircumflextilde.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ocircumflextilde.glif new file mode 100644 index 000000000..d30a4f3d3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ocircumflextilde.glif @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ocyr.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ocyr.glif new file mode 100644 index 000000000..f66b5ddca --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ocyr.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/odieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/odieresis.glif new file mode 100644 index 000000000..e685e2a62 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/odieresis.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/odieresiscyr.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/odieresiscyr.glif new file mode 100644 index 000000000..dad7fe366 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/odieresiscyr.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/odotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/odotbelow.glif new file mode 100644 index 000000000..34fb32bbc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/odotbelow.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/oe.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/oe.glif new file mode 100644 index 000000000..c9ea91c54 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/oe.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ogonek.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ogonek.glif new file mode 100644 index 000000000..daba00113 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ogonek.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ogonekcmb.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ogonekcmb.glif new file mode 100644 index 000000000..c97414e6f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ogonekcmb.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ograve.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ograve.glif new file mode 100644 index 000000000..29a1436be --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ograve.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ohoi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ohoi.glif new file mode 100644 index 000000000..6aef874c5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ohoi.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ohorn.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ohorn.glif new file mode 100644 index 000000000..22f1e8260 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ohorn.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ohornacute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ohornacute.glif new file mode 100644 index 000000000..a8ff47169 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ohornacute.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ohorndotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ohorndotbelow.glif new file mode 100644 index 000000000..e9b9e50ad --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ohorndotbelow.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ohorngrave.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ohorngrave.glif new file mode 100644 index 000000000..b831fb7df --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ohorngrave.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ohornhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ohornhoi.glif new file mode 100644 index 000000000..e360d804f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ohornhoi.glif @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ohorntilde.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ohorntilde.glif new file mode 100644 index 000000000..f7bff2649 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ohorntilde.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ohungarumlaut.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ohungarumlaut.glif new file mode 100644 index 000000000..aa8e232f3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ohungarumlaut.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/omacron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/omacron.glif new file mode 100644 index 000000000..687e35406 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/omacron.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/omega.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/omega.glif new file mode 100644 index 000000000..5ef89cb61 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/omega.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/omegatonos.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/omegatonos.glif new file mode 100644 index 000000000..83041e4ed --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/omegatonos.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/omicron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/omicron.glif new file mode 100644 index 000000000..d3d77b760 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/omicron.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/omicrontonos.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/omicrontonos.glif new file mode 100644 index 000000000..30d802769 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/omicrontonos.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/one.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/one.subs.glif new file mode 100644 index 000000000..0a519db37 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/one.subs.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/one.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/one.sups.glif new file mode 100644 index 000000000..f242eb11a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/one.sups.glif @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/oneeighth.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/oneeighth.glif new file mode 100644 index 000000000..07d05839f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/oneeighth.glif @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/onehalf.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/onehalf.glif new file mode 100644 index 000000000..57c2d1a9d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/onehalf.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/onequarter.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/onequarter.glif new file mode 100644 index 000000000..21cf029bd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/onequarter.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/onethird.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/onethird.glif new file mode 100644 index 000000000..a64e60502 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/onethird.glif @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ordfeminine.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ordfeminine.glif new file mode 100644 index 000000000..cf1cb2622 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ordfeminine.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ordmasculine.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ordmasculine.glif new file mode 100644 index 000000000..b38f4654f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ordmasculine.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/oslash.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/oslash.glif new file mode 100644 index 000000000..608cd8745 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/oslash.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/otilde.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/otilde.glif new file mode 100644 index 000000000..fa86e0a4b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/otilde.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/overline.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/overline.glif new file mode 100644 index 000000000..239b12517 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/overline.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/p.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/p.sups.glif new file mode 100644 index 000000000..79c77e3c7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/p.sups.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/palochka.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/palochka.glif new file mode 100644 index 000000000..86800af21 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/palochka.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/paragraph.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/paragraph.glif new file mode 100644 index 000000000..469dce8ca --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/paragraph.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/parenleft.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/parenleft.subs.glif new file mode 100644 index 000000000..1931febb3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/parenleft.subs.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/parenleft.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/parenleft.sups.glif new file mode 100644 index 000000000..a6596bf3f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/parenleft.sups.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/parenright.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/parenright.subs.glif new file mode 100644 index 000000000..01b20cd1a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/parenright.subs.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/parenright.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/parenright.sups.glif new file mode 100644 index 000000000..0f27674fe --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/parenright.sups.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/partialdiff.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/partialdiff.glif new file mode 100644 index 000000000..8f6bbdcef --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/partialdiff.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/pe.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/pe.glif new file mode 100644 index 000000000..139b9416b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/pe.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/periodcentered.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/periodcentered.glif new file mode 100644 index 000000000..518c75126 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/periodcentered.glif @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/perthousand.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/perthousand.glif new file mode 100644 index 000000000..cd7b1e5a3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/perthousand.glif @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/peseta.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/peseta.glif new file mode 100644 index 000000000..409fc47de --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/peseta.glif @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/peso.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/peso.glif new file mode 100644 index 000000000..6e72e352d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/peso.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/phi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/phi.glif new file mode 100644 index 000000000..3e3a97dcc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/phi.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/pi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/pi.glif new file mode 100644 index 000000000..691af059e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/pi.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/plusminus.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/plusminus.glif new file mode 100644 index 000000000..ea153d45c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/plusminus.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/prime.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/prime.glif new file mode 100644 index 000000000..b22988f2b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/prime.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/product.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/product.glif new file mode 100644 index 000000000..7fa72420d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/product.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/psi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/psi.glif new file mode 100644 index 000000000..a2a584b82 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/psi.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/questiondbl.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/questiondbl.glif new file mode 100644 index 000000000..13dc03d2a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/questiondbl.glif @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/questiondown.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/questiondown.glif new file mode 100644 index 000000000..426a768a2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/questiondown.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/questionexclam.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/questionexclam.glif new file mode 100644 index 000000000..9d6128282 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/questionexclam.glif @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/questiongreek.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/questiongreek.glif new file mode 100644 index 000000000..be976788b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/questiongreek.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/quotedblbase.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/quotedblbase.glif new file mode 100644 index 000000000..47bcbb8f6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/quotedblbase.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/quotedblleft.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/quotedblleft.glif new file mode 100644 index 000000000..232e89cb8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/quotedblleft.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/quotedblright.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/quotedblright.glif new file mode 100644 index 000000000..b7b990025 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/quotedblright.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/quoteleft.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/quoteleft.glif new file mode 100644 index 000000000..5a5e1b924 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/quoteleft.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/quoteright.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/quoteright.glif new file mode 100644 index 000000000..85d96a708 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/quoteright.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/quotesinglbase.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/quotesinglbase.glif new file mode 100644 index 000000000..01abcdea0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/quotesinglbase.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/r.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/r.sups.glif new file mode 100644 index 000000000..8e0b45fcc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/r.sups.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/racute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/racute.glif new file mode 100644 index 000000000..ffd12e45d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/racute.glif @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/radical.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/radical.glif new file mode 100644 index 000000000..8b65938a7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/radical.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/rcaron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/rcaron.glif new file mode 100644 index 000000000..862a950c1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/rcaron.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/rcommaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/rcommaaccent.glif new file mode 100644 index 000000000..481102b4c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/rcommaaccent.glif @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/rdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/rdotbelow.glif new file mode 100644 index 000000000..b3ed1d982 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/rdotbelow.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/rdotbelowmacron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/rdotbelowmacron.glif new file mode 100644 index 000000000..0647ac01d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/rdotbelowmacron.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/registered.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/registered.glif new file mode 100644 index 000000000..f9acc6cd8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/registered.glif @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/rho.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/rho.glif new file mode 100644 index 000000000..05b821202 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/rho.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ring.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ring.glif new file mode 100644 index 000000000..182071076 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ring.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ringcmb.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ringcmb.glif new file mode 100644 index 000000000..042b0ec59 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ringcmb.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ringhalfleftmod.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ringhalfleftmod.glif new file mode 100644 index 000000000..420b88975 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ringhalfleftmod.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ringhalfrightmod.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ringhalfrightmod.glif new file mode 100644 index 000000000..20a07a4b4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ringhalfrightmod.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/rlinebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/rlinebelow.glif new file mode 100644 index 000000000..90bcf1cc6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/rlinebelow.glif @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ruble.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ruble.glif new file mode 100644 index 000000000..ed0646292 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ruble.glif @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/rupeeindian.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/rupeeindian.glif new file mode 100644 index 000000000..b926d04e9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/rupeeindian.glif @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/s.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/s.sups.glif new file mode 100644 index 000000000..ad462310f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/s.sups.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/sacute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/sacute.glif new file mode 100644 index 000000000..237eb32f0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/sacute.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/sampi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/sampi.glif new file mode 100644 index 000000000..15ffb8919 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/sampi.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/scaron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/scaron.glif new file mode 100644 index 000000000..83bae2e16 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/scaron.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/scedilla.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/scedilla.glif new file mode 100644 index 000000000..5ed5a5b4c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/scedilla.glif @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/schwa.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/schwa.glif new file mode 100644 index 000000000..a7fe763d6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/schwa.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/schwacyr.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/schwacyr.glif new file mode 100644 index 000000000..db259c37a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/schwacyr.glif @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/scircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/scircumflex.glif new file mode 100644 index 000000000..f03d257c8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/scircumflex.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/scommaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/scommaaccent.glif new file mode 100644 index 000000000..ce114f197 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/scommaaccent.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/sdotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/sdotaccent.glif new file mode 100644 index 000000000..5df223a36 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/sdotaccent.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/sdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/sdotbelow.glif new file mode 100644 index 000000000..83433a577 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/sdotbelow.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/section.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/section.glif new file mode 100644 index 000000000..90f584552 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/section.glif @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/servicemark.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/servicemark.glif new file mode 100644 index 000000000..ae417b782 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/servicemark.glif @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/seven.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/seven.subs.glif new file mode 100644 index 000000000..0fc3966b2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/seven.subs.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/seven.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/seven.sups.glif new file mode 100644 index 000000000..e478b96ed --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/seven.sups.glif @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/seveneighths.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/seveneighths.glif new file mode 100644 index 000000000..3904937da --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/seveneighths.glif @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/sha.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/sha.glif new file mode 100644 index 000000000..cc5b1a475 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/sha.glif @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/shcha.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/shcha.glif new file mode 100644 index 000000000..e5c6e6b1f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/shcha.glif @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/shha.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/shha.glif new file mode 100644 index 000000000..bdec1f18a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/shha.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/sigma.end.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/sigma.end.glif new file mode 100644 index 000000000..718708326 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/sigma.end.glif @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/sigma.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/sigma.glif new file mode 100644 index 000000000..4a911507e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/sigma.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/similar.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/similar.glif new file mode 100644 index 000000000..7d400e9b7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/similar.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/six.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/six.subs.glif new file mode 100644 index 000000000..e15943d78 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/six.subs.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/six.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/six.sups.glif new file mode 100644 index 000000000..f1dfa558e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/six.sups.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/soft.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/soft.glif new file mode 100644 index 000000000..4527a25e4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/soft.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/soundcopyright.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/soundcopyright.glif new file mode 100644 index 000000000..b3931e8dd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/soundcopyright.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/squareblack.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/squareblack.glif new file mode 100644 index 000000000..0c2a4c5a2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/squareblack.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/squareshadow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/squareshadow.glif new file mode 100644 index 000000000..cea1b9fd3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/squareshadow.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/sterling.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/sterling.glif new file mode 100644 index 000000000..bb4e5334f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/sterling.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/stigma.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/stigma.glif new file mode 100644 index 000000000..4d3a254bf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/stigma.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/summation.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/summation.glif new file mode 100644 index 000000000..ab5025b21 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/summation.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/t.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/t.sups.glif new file mode 100644 index 000000000..6c9d8813f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/t.sups.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tau.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tau.glif new file mode 100644 index 000000000..076bd4b5c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tau.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tbar.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tbar.glif new file mode 100644 index 000000000..d954c44d5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tbar.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tcaron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tcaron.glif new file mode 100644 index 000000000..d263a13b8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tcaron.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tcedilla.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tcedilla.glif new file mode 100644 index 000000000..d7e1cfd21 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tcedilla.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tcommaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tcommaaccent.glif new file mode 100644 index 000000000..bcd1c4fbd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tcommaaccent.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tdieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tdieresis.glif new file mode 100644 index 000000000..045ece3ca --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tdieresis.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tdotbelow.glif new file mode 100644 index 000000000..f22257c3f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tdotbelow.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/te.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/te.glif new file mode 100644 index 000000000..e3e871214 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/te.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tenge.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tenge.glif new file mode 100644 index 000000000..8218b1da2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tenge.glif @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/theta.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/theta.glif new file mode 100644 index 000000000..a8773707c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/theta.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/thorn.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/thorn.glif new file mode 100644 index 000000000..3acc96a4b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/thorn.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/three.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/three.subs.glif new file mode 100644 index 000000000..cd87e19d5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/three.subs.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/three.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/three.sups.glif new file mode 100644 index 000000000..06d59245e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/three.sups.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/threeeighths.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/threeeighths.glif new file mode 100644 index 000000000..6d2d8d02b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/threeeighths.glif @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/threeemdash.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/threeemdash.glif new file mode 100644 index 000000000..5ccadf90e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/threeemdash.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/threequarters.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/threequarters.glif new file mode 100644 index 000000000..df1414e8a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/threequarters.glif @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tilde.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tilde.glif new file mode 100644 index 000000000..693f2c402 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tilde.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tildecmb.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tildecmb.glif new file mode 100644 index 000000000..db892bb74 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tildecmb.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tlinebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tlinebelow.glif new file mode 100644 index 000000000..cdb48ab0c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tlinebelow.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tonos.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tonos.glif new file mode 100644 index 000000000..02ec3fea0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tonos.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/trademark.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/trademark.glif new file mode 100644 index 000000000..233ac0ed2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/trademark.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/triangleblackdown.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/triangleblackdown.glif new file mode 100644 index 000000000..638054dc9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/triangleblackdown.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/triangleblackleft.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/triangleblackleft.glif new file mode 100644 index 000000000..7ad059b31 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/triangleblackleft.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/triangleblackright.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/triangleblackright.glif new file mode 100644 index 000000000..df37d2d4d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/triangleblackright.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/triangleblackup.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/triangleblackup.glif new file mode 100644 index 000000000..33597c968 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/triangleblackup.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/trianglewhitedown.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/trianglewhitedown.glif new file mode 100644 index 000000000..85df7d7b0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/trianglewhitedown.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/trianglewhiteleft.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/trianglewhiteleft.glif new file mode 100644 index 000000000..cd89a8fd0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/trianglewhiteleft.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/trianglewhiteright.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/trianglewhiteright.glif new file mode 100644 index 000000000..3bb6f1044 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/trianglewhiteright.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/trianglewhiteup.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/trianglewhiteup.glif new file mode 100644 index 000000000..79b25f985 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/trianglewhiteup.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/triangularbullet.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/triangularbullet.glif new file mode 100644 index 000000000..0a9de4883 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/triangularbullet.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tse.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tse.glif new file mode 100644 index 000000000..79415809a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tse.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tshe.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tshe.glif new file mode 100644 index 000000000..ec0a19400 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tshe.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tugrik.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tugrik.glif new file mode 100644 index 000000000..88332531e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/tugrik.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/two.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/two.subs.glif new file mode 100644 index 000000000..2261b92fe --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/two.subs.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/two.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/two.sups.glif new file mode 100644 index 000000000..c213e51cf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/two.sups.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/twodotenleader.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/twodotenleader.glif new file mode 100644 index 000000000..f7413d6db --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/twodotenleader.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/twoemdash.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/twoemdash.glif new file mode 100644 index 000000000..6057c377b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/twoemdash.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/twothirds.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/twothirds.glif new file mode 100644 index 000000000..ca4b97f71 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/twothirds.glif @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/u.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/u.sups.glif new file mode 100644 index 000000000..97d3e2ca2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/u.sups.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uacute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uacute.glif new file mode 100644 index 000000000..08e995e37 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uacute.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uacutedblcyr.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uacutedblcyr.glif new file mode 100644 index 000000000..ab0e2d2bd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uacutedblcyr.glif @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ubreve.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ubreve.glif new file mode 100644 index 000000000..9f7a9afc9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ubreve.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ucaron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ucaron.glif new file mode 100644 index 000000000..684ff9d1c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ucaron.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ucircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ucircumflex.glif new file mode 100644 index 000000000..04c1c5435 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ucircumflex.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ucyr.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ucyr.glif new file mode 100644 index 000000000..ca1664bfa --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ucyr.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/udieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/udieresis.glif new file mode 100644 index 000000000..81d8db7cb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/udieresis.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/udieresisacute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/udieresisacute.glif new file mode 100644 index 000000000..d4cbda3df --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/udieresisacute.glif @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/udieresiscaron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/udieresiscaron.glif new file mode 100644 index 000000000..8b09a829c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/udieresiscaron.glif @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/udieresisgrave.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/udieresisgrave.glif new file mode 100644 index 000000000..d56948978 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/udieresisgrave.glif @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/udieresismacron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/udieresismacron.glif new file mode 100644 index 000000000..e96f40adf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/udieresismacron.glif @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/udotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/udotbelow.glif new file mode 100644 index 000000000..0c2912d48 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/udotbelow.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ugrave.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ugrave.glif new file mode 100644 index 000000000..f56179953 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ugrave.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uhoi.glif new file mode 100644 index 000000000..204ffeaf8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uhoi.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uhorn.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uhorn.glif new file mode 100644 index 000000000..e0574ea4f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uhorn.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uhornacute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uhornacute.glif new file mode 100644 index 000000000..fb08e21cd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uhornacute.glif @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uhorndotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uhorndotbelow.glif new file mode 100644 index 000000000..469811b75 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uhorndotbelow.glif @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uhorngrave.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uhorngrave.glif new file mode 100644 index 000000000..db2c86955 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uhorngrave.glif @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uhornhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uhornhoi.glif new file mode 100644 index 000000000..8b161a4e9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uhornhoi.glif @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uhorntilde.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uhorntilde.glif new file mode 100644 index 000000000..67545bd57 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uhorntilde.glif @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uhungarumlaut.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uhungarumlaut.glif new file mode 100644 index 000000000..bf6976f92 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uhungarumlaut.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/umacron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/umacron.glif new file mode 100644 index 000000000..7534b8db1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/umacron.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/umacroncyr.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/umacroncyr.glif new file mode 100644 index 000000000..565d2bdb1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/umacroncyr.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uogonek.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uogonek.glif new file mode 100644 index 000000000..6c5e8164a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uogonek.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/upsilon.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/upsilon.glif new file mode 100644 index 000000000..bba443a4f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/upsilon.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/upsilondieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/upsilondieresis.glif new file mode 100644 index 000000000..449ce9cd5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/upsilondieresis.glif @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/upsilondieresistonos.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/upsilondieresistonos.glif new file mode 100644 index 000000000..fac358315 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/upsilondieresistonos.glif @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/upsilontonos.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/upsilontonos.glif new file mode 100644 index 000000000..cb0da9bf2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/upsilontonos.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uring.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uring.glif new file mode 100644 index 000000000..0a59d0a23 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/uring.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ushort.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ushort.glif new file mode 100644 index 000000000..a0235613c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ushort.glif @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ustraight.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ustraight.glif new file mode 100644 index 000000000..b43e1c35b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ustraight.glif @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ustraightstroke.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ustraightstroke.glif new file mode 100644 index 000000000..9ec1f6a87 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ustraightstroke.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/utilde.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/utilde.glif new file mode 100644 index 000000000..0a18897b1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/utilde.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/v.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/v.sups.glif new file mode 100644 index 000000000..cf27fa414 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/v.sups.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ve.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ve.glif new file mode 100644 index 000000000..84368ad64 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ve.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/verticallinebelowcmb.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/verticallinebelowcmb.glif new file mode 100644 index 000000000..d7764e148 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/verticallinebelowcmb.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/verticallinelowmod.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/verticallinelowmod.glif new file mode 100644 index 000000000..08e3d906d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/verticallinelowmod.glif @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/verticallinemod.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/verticallinemod.glif new file mode 100644 index 000000000..47af1d9b0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/verticallinemod.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/w.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/w.sups.glif new file mode 100644 index 000000000..ea85bafc3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/w.sups.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/wacute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/wacute.glif new file mode 100644 index 000000000..ece7c3105 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/wacute.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/wcircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/wcircumflex.glif new file mode 100644 index 000000000..57fc6256b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/wcircumflex.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/wdieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/wdieresis.glif new file mode 100644 index 000000000..3e58236ba --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/wdieresis.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/wgrave.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/wgrave.glif new file mode 100644 index 000000000..3c406798e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/wgrave.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/won.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/won.glif new file mode 100644 index 000000000..92bd18d51 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/won.glif @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/x.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/x.sups.glif new file mode 100644 index 000000000..438061ebe --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/x.sups.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/xi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/xi.glif new file mode 100644 index 000000000..de01e74ba --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/xi.glif @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/y.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/y.sups.glif new file mode 100644 index 000000000..75f8e9b9c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/y.sups.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ya.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ya.glif new file mode 100644 index 000000000..73af0832d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ya.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/yacute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/yacute.glif new file mode 100644 index 000000000..4e7c6b1e5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/yacute.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/yat.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/yat.glif new file mode 100644 index 000000000..56070df7b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/yat.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ycircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ycircumflex.glif new file mode 100644 index 000000000..946c7ea32 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ycircumflex.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ydieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ydieresis.glif new file mode 100644 index 000000000..27fd31303 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ydieresis.glif @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ydotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ydotaccent.glif new file mode 100644 index 000000000..4fc59a24c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ydotaccent.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ydotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ydotbelow.glif new file mode 100644 index 000000000..360a47e05 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ydotbelow.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/yen.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/yen.glif new file mode 100644 index 000000000..72e0f9e0b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/yen.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/yeru.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/yeru.glif new file mode 100644 index 000000000..d22137361 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/yeru.glif @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ygrave.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ygrave.glif new file mode 100644 index 000000000..db4bf6497 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ygrave.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/yhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/yhoi.glif new file mode 100644 index 000000000..7c5cf9b89 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/yhoi.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/yi.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/yi.glif new file mode 100644 index 000000000..45e13bf84 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/yi.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ytilde.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ytilde.glif new file mode 100644 index 000000000..4bec5536b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ytilde.glif @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/yu.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/yu.glif new file mode 100644 index 000000000..18ee37d54 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/yu.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/z.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/z.sups.glif new file mode 100644 index 000000000..414005beb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/z.sups.glif @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zacute.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zacute.glif new file mode 100644 index 000000000..863bf2317 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zacute.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zcaron.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zcaron.glif new file mode 100644 index 000000000..2b79a9702 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zcaron.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zdotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zdotaccent.glif new file mode 100644 index 000000000..34d6e5a0f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zdotaccent.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zdotbelow.glif new file mode 100644 index 000000000..d90877641 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zdotbelow.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ze.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ze.glif new file mode 100644 index 000000000..1aa6062da --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/ze.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zedescender.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zedescender.glif new file mode 100644 index 000000000..f5707c954 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zedescender.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zero.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zero.subs.glif new file mode 100644 index 000000000..bb3448192 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zero.subs.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zero.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zero.sups.glif new file mode 100644 index 000000000..d0541ff63 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zero.sups.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zeta.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zeta.glif new file mode 100644 index 000000000..69469cc87 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zeta.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zhe.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zhe.glif new file mode 100644 index 000000000..0615aa5ed --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zhe.glif @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zhebreve.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zhebreve.glif new file mode 100644 index 000000000..a0dcf7962 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zhebreve.glif @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zhedescender.glif b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zhedescender.glif new file mode 100644 index 000000000..3e04cbb2e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/glyphs/zhedescender.glif @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/groups.plist b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/groups.plist new file mode 100644 index 000000000..27395a37e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/groups.plist @@ -0,0 +1,5997 @@ + + + + + @MMK_L_CYR_Acyr + + Abrevecyr + Acyr + + @MMK_L_CYR_Acyr.sc + + Abrevecyr.sc + Acyr.sc + + @MMK_L_CYR_De + + Chedescender + De + Endescender + Shcha + Tse + + @MMK_L_CYR_De.sc + + Chedescender.sc + De.sc + Endescender.sc + Shcha.sc + Tse.sc + + @MMK_L_CYR_En + + Dzhe + El + Em + En + Icyr + Igravecyr + Imacroncyr + Ishort + Iukran + Palochka + Pe + Sha + Yeru + Yi + Che + Ya + + @MMK_L_CYR_En.sc + + Dzhe.sc + El.sc + Em.sc + En.sc + Icyr.sc + Igravecyr.sc + Imacroncyr.sc + Ishort.sc + Iukran.sc + Palochka.sc + Pe.sc + Sha.sc + Yeru.sc + Yi.sc + Che.sc + Ya.sc + + @MMK_L_CYR_Es + + Es + Esdescender + Ieukran + + @MMK_L_CYR_Es.sc + + Es.sc + Esdescender.sc + Ieukran.sc + + @MMK_L_CYR_Ghe + + Ghe + Ghestroke + Gje + Te + Gheup + + @MMK_L_CYR_Ghe.sc + + Ghe.sc + Ghestroke.sc + Gje.sc + Te.sc + Gheup.sc + + @MMK_L_CYR_Ie + + Aie + Ie + Iebreve + Iegrave + Io + + @MMK_L_CYR_Ie.sc + + Aie.sc + Ie.sc + Iebreve.sc + Iegrave.sc + Io.sc + + @MMK_L_CYR_Ka + + Ha + Hadescender + Ka + Kabashkir + Kadescender + Kje + Zhe + Zhebreve + Zhedescender + + @MMK_L_CYR_Ka.sc + + Ha.sc + Hadescender.sc + Ka.sc + Kabashkir.sc + Kadescender.sc + Kje.sc + Zhe.sc + Zhebreve.sc + Zhedescender.sc + + @MMK_L_CYR_Ocyr + + Fita + Obarcyr + Ocyr + Odieresiscyr + Schwacyr + Yu + Ecyr + + @MMK_L_CYR_Ocyr.sc + + Fita.sc + Obarcyr.sc + Ocyr.sc + Odieresiscyr.sc + Schwacyr.sc + Yu.sc + Ecyr.sc + + @MMK_L_CYR_Soft + + Hard + Lje + Nje + Soft + + @MMK_L_CYR_Soft.sc + + Hard.sc + Lje.sc + Nje.sc + Soft.sc + + @MMK_L_CYR_Ucyr + + Izhitsa + Uacutedblcyr + Ucyr + Umacroncyr + Ushort + + @MMK_L_CYR_Ucyr.sc + + Izhitsa.sc + Uacutedblcyr.sc + Ucyr.sc + Umacroncyr.sc + Ushort.sc + + @MMK_L_CYR_Ustraight + + Ustraight + Ustraightstroke + + @MMK_L_CYR_Ustraight.sc + + Ustraight.sc + Ustraightstroke.sc + + @MMK_L_CYR_Ve + + Be + Ve + Ze + Zedescender + + @MMK_L_CYR_Ve.sc + + Be.sc + Ve.sc + Ze.sc + Zedescender.sc + + @MMK_L_CYR_acyr + + abrevecyr + acyr + + @MMK_L_CYR_be + + be + be.srb + + @MMK_L_CYR_de + + che + chedescender + de + el + em + en + endescender + icyr + igravecyr + imacroncyr + ishort + pe + sha + shcha + tse + ya + yeru + dzhe + + @MMK_L_CYR_es + + es + ieukran + esdescender + + @MMK_L_CYR_ghe + + ghe + ghestroke + gheup + gje + te + + @MMK_L_CYR_hard + + hard + lje + nje + soft + + @MMK_L_CYR_ie + + ecyr + ef + er + fita + ie + iebreve + iegrave + io + obarcyr + ocyr + odieresiscyr + schwacyr + yu + aie + + @MMK_L_CYR_iukran + + iukran + yi + + @MMK_L_CYR_tshe + + shha + tshe + + @MMK_L_CYR_ucyr + + uacutedblcyr + ucyr + umacroncyr + ushort + + @MMK_L_CYR_ustraight + + ustraight + ustraightstroke + + @MMK_L_CYR_ve + + ve + ze + zedescender + + @MMK_L_CYR_zhe + + ha + hadescender + ka + kabashkir + kadescender + kje + zhe + zhebreve + zhedescender + + @MMK_L_GRK_Alpha + + Alpha + Alphatonos + Lambda + Delta + + @MMK_L_GRK_Alpha.sc + + Alpha.sc + Lambda.sc + Delta.sc + + @MMK_L_GRK_Epsilon + + Epsilon + Epsilontonos + Sigma + Xi + + @MMK_L_GRK_Epsilon.sc + + Epsilon.sc + Sigma.sc + Xi.sc + + @MMK_L_GRK_Eta + + Eta + Etatonos + Iota + Iotadieresis + Iotatonos + Mu + Pi + Nu + + @MMK_L_GRK_Eta.sc + + Eta.sc + Iota.sc + Iotadieresis.sc + Mu.sc + Pi.sc + Nu.sc + + @MMK_L_GRK_Gamma + + Gamma + Tau + + @MMK_L_GRK_Gamma.sc + + Gamma.sc + Tau.sc + + @MMK_L_GRK_Omega + + Omega + Omegatonos + + @MMK_L_GRK_Omicron + + Omicron + Omicrontonos + Theta + + @MMK_L_GRK_Omicron.sc + + Omicron.sc + Theta.sc + + @MMK_L_GRK_Upsilon + + Upsilon + Upsilondieresis + Upsilontonos + + @MMK_L_GRK_Upsilon.sc + + Upsilon.sc + Upsilondieresis.sc + + @MMK_L_GRK_alpha + + alpha + alphatonos + iota + iotadieresis + iotadieresistonos + iotatonos + mu + + @MMK_L_GRK_epsilon + + epsilon + epsilontonos + + @MMK_L_GRK_eta + + eta + etatonos + + @MMK_L_GRK_gamma + + gamma + nu + + @MMK_L_GRK_omicron + + omicron + omicrontonos + phi + rho + koppa + omega + omegatonos + + @MMK_L_GRK_pi + + pi + tau + + @MMK_L_GRK_upsilon + + psi + upsilon + upsilondieresis + upsilondieresistonos + upsilontonos + + @MMK_L_LAT_A + + A + Aacute + Abreve + Acircumflex + Adieresis + Agrave + Amacron + Aogonek + Aring + Atilde + Abreveacute + Abrevedotbelow + Abrevegrave + Abrevehoi + Abrevetilde + Acaron + Acircumflexacute + Acircumflexdotbelow + Acircumflexgrave + Acircumflexhoi + Acircumflextilde + Adotbelow + Ahoi + + @MMK_L_LAT_A.sc + + A.sc + Aacute.sc + Abreve.sc + Acircumflex.sc + Adieresis.sc + Agrave.sc + Amacron.sc + Aogonek.sc + Aring.sc + Atilde.sc + Abreveacute.sc + Abrevedotbelow.sc + Abrevegrave.sc + Abrevehoi.sc + Abrevetilde.sc + Acaron.sc + Acircumflexacute.sc + Acircumflexdotbelow.sc + Acircumflexgrave.sc + Acircumflexhoi.sc + Acircumflextilde.sc + Adotbelow.sc + Ahoi.sc + + @MMK_L_LAT_C + + C + Cacute + Ccaron + Ccedilla + Ccircumflex + Cdotaccent + + @MMK_L_LAT_C.sc + + C.sc + Cacute.sc + Ccaron.sc + Ccedilla.sc + Ccircumflex.sc + Cdotaccent.sc + + @MMK_L_LAT_D + + D + Dcaron + Dcroat + Eth + Ddotbelow + Dlinebelow + + @MMK_L_LAT_D.sc + + D.sc + Dcaron.sc + Dcroat.sc + Eth.sc + Ddotbelow.sc + Dlinebelow.sc + + @MMK_L_LAT_E + + AE + E + Eacute + Ecaron + Ecircumflex + Edieresis + Edotaccent + Egrave + Emacron + Eogonek + OE + Ebreve + Ecircumflexacute + Ecircumflexdotbelow + Ecircumflexgrave + Ecircumflexhoi + Ecircumflextilde + Edotbelow + Ehoi + Etilde + + @MMK_L_LAT_E.sc + + AE.sc + E.sc + Eacute.sc + Ecaron.sc + Ecircumflex.sc + Edieresis.sc + Edotaccent.sc + Egrave.sc + Emacron.sc + Eogonek.sc + OE.sc + Ebreve.sc + Ecircumflexacute.sc + Ecircumflexdotbelow.sc + Ecircumflexgrave.sc + Ecircumflexhoi.sc + Ecircumflextilde.sc + Edotbelow.sc + Ehoi.sc + Etilde.sc + + @MMK_L_LAT_G + + G + Gbreve + Gdotaccent + Gcommaaccent + Gcaron + Gcircumflex + Gmacron + Gtilde + + @MMK_L_LAT_G.sc + + G.sc + Gbreve.sc + Gdotaccent.sc + Gcommaaccent.sc + Gcaron.sc + Gcircumflex.sc + Gmacron.sc + Gtilde.sc + + @MMK_L_LAT_H + + H + I + Iacute + Icircumflex + Idieresis + Idotaccent + Igrave + Imacron + Iogonek + M + Icaron + Idotbelow + Ihoi + Itilde + Macute + Mdotbelow + Hbrevebelow + Hcircumflex + Hdotbelow + Hbar + f_i.sc + + @MMK_L_LAT_H.sc + + H.sc + I.sc + Iacute.sc + Icircumflex.sc + Idieresis.sc + Idotaccent.sc + Igrave.sc + Imacron.sc + Iogonek.sc + M.sc + Icaron.sc + Idotbelow.sc + Ihoi.sc + Itilde.sc + Macute.sc + Mdotbelow.sc + Hbrevebelow.sc + Hcircumflex.sc + Hdotbelow.sc + Hbar.sc + + @MMK_L_LAT_J + + J + Jcircumflex + + @MMK_L_LAT_J.sc + + J.sc + Jcircumflex.sc + + @MMK_L_LAT_K + + K + Kcommaaccent + + @MMK_L_LAT_K.sc + + K.sc + Kcommaaccent.sc + + @MMK_L_LAT_L + + L + Lacute + Lcaron + Lslash + Lcommaaccent + Ldotbelow + Ldotbelowmacron + Llinebelow + + @MMK_L_LAT_L.sc + + L.sc + Lacute.sc + Lcaron.sc + Lslash.sc + Lcommaaccent.sc + Ldotbelow.sc + Ldotbelowmacron.sc + Llinebelow.sc + f_l.sc + + @MMK_L_LAT_N + + N + Nacute + Ncaron + Ntilde + Ndotaccent + Ncommaaccent + Ndotbelow + Ngrave + Nlinebelow + + @MMK_L_LAT_N.sc + + N.sc + Nacute.sc + Ncaron.sc + Ntilde.sc + Ndotaccent.sc + Ncommaaccent.sc + Ndotbelow.sc + Ngrave.sc + Nlinebelow.sc + + @MMK_L_LAT_O + + O + Oacute + Ocircumflex + Odieresis + Ograve + Ohungarumlaut + Omacron + Oslash + Otilde + Q + Obreve + Ocaron + Ocircumflexacute + Ocircumflexdotbelow + Ocircumflexgrave + Ocircumflexhoi + Ocircumflextilde + Odotbelow + Ohoi + Ohorn + Ohornacute + Ohorndotbelow + Ohorngrave + Ohornhoi + Ohorntilde + Schwa + + @MMK_L_LAT_O.sc + + O.sc + Oacute.sc + Ocircumflex.sc + Odieresis.sc + Ograve.sc + Ohungarumlaut.sc + Omacron.sc + Oslash.sc + Otilde.sc + Q.sc + Obreve.sc + Ocaron.sc + Ocircumflexacute.sc + Ocircumflexdotbelow.sc + Ocircumflexgrave.sc + Ocircumflexhoi.sc + Ocircumflextilde.sc + Odotbelow.sc + Ohoi.sc + Ohorn.sc + Ohornacute.sc + Ohorndotbelow.sc + Ohorngrave.sc + Ohornhoi.sc + Ohorntilde.sc + Schwa.sc + + @MMK_L_LAT_R + + R + Racute + Rcaron + Rcommaaccent + Rdotbelow + Rdotbelowmacron + Rlinebelow + + @MMK_L_LAT_R.sc + + R.sc + Racute.sc + Rcaron.sc + Rcommaaccent.sc + Rdotbelow.sc + Rdotbelowmacron.sc + Rlinebelow.sc + + @MMK_L_LAT_S + + S + Sacute + Scaron + Scedilla + Scommaaccent + Scircumflex + Sdotaccent + Sdotbelow + + @MMK_L_LAT_S.sc + + S.sc + Sacute.sc + Scaron.sc + Scedilla.sc + Scommaaccent.sc + Scircumflex.sc + Sdotaccent.sc + Sdotbelow.sc + germandbls.sc + + @MMK_L_LAT_T + + T + Tcaron + Tcommaaccent + Tcedilla + Tdotbelow + Tlinebelow + + @MMK_L_LAT_T.sc + + T.sc + Tcaron.sc + Tcommaaccent.sc + Tcedilla.sc + Tdotbelow.sc + Tlinebelow.sc + tdieresis.sc + + @MMK_L_LAT_U + + U + Uacute + Ucircumflex + Udieresis + Ugrave + Uhungarumlaut + Umacron + Uogonek + Uring + Ubreve + Ucaron + Udieresisacute + Udieresiscaron + Udieresisgrave + Udieresismacron + Udotbelow + Uhoi + Uhorn + Uhornacute + Uhorndotbelow + Uhorngrave + Uhornhoi + Uhorntilde + Utilde + + @MMK_L_LAT_U.sc + + U.sc + Uacute.sc + Ucircumflex.sc + Udieresis.sc + Ugrave.sc + Uhungarumlaut.sc + Umacron.sc + Uogonek.sc + Uring.sc + Ubreve.sc + Ucaron.sc + Udieresisacute.sc + Udieresiscaron.sc + Udieresisgrave.sc + Udieresismacron.sc + Udotbelow.sc + Uhoi.sc + Uhorn.sc + Uhornacute.sc + Uhorndotbelow.sc + Uhorngrave.sc + Uhornhoi.sc + Uhorntilde.sc + Utilde.sc + + @MMK_L_LAT_W + + W + Wacute + Wcircumflex + Wdieresis + Wgrave + + @MMK_L_LAT_W.sc + + W.sc + Wacute.sc + Wcircumflex.sc + Wdieresis.sc + Wgrave.sc + + @MMK_L_LAT_Y + + Y + Yacute + Ydieresis + Ycircumflex + Ydotaccent + Ydotbelow + Ygrave + Yhoi + Ytilde + + @MMK_L_LAT_Y.sc + + Y.sc + Yacute.sc + Ydieresis.sc + Ycircumflex.sc + Ydotaccent.sc + Ydotbelow.sc + Ygrave.sc + Yhoi.sc + Ytilde.sc + + @MMK_L_LAT_Z + + Z + Zacute + Zcaron + Zdotaccent + Zdotbelow + + @MMK_L_LAT_Z.sc + + Z.sc + Zacute.sc + Zcaron.sc + Zdotaccent.sc + Zdotbelow.sc + + @MMK_L_LAT_a + + a + aacute + abreve + acircumflex + adieresis + agrave + amacron + aogonek + aring + atilde + abreveacute + abrevedotbelow + abrevegrave + abrevehoi + abrevetilde + acaron + acircumflexacute + acircumflexdotbelow + acircumflexgrave + acircumflexhoi + acircumflextilde + adotbelow + ahoi + + @MMK_L_LAT_b + + b + p + thorn + o + oacute + ocircumflex + odieresis + ograve + ohungarumlaut + omacron + oslash + otilde + obreve + ocaron + ocircumflexacute + ocircumflexdotbelow + ocircumflexgrave + ocircumflexhoi + ocircumflextilde + odotbelow + ohoi + schwa + + @MMK_L_LAT_c + + c + cacute + ccaron + ccedilla + ccircumflex + cdotaccent + + @MMK_L_LAT_dcaron + + dcaron + lcaron + + @MMK_L_LAT_e + + ae + e + eacute + ecaron + ecircumflex + edieresis + edotaccent + egrave + emacron + eogonek + oe + ebreve + ecircumflexacute + ecircumflexdotbelow + ecircumflexgrave + ecircumflexhoi + ecircumflextilde + edotbelow + ehoi + etilde + + @MMK_L_LAT_f + + f + longs + f_f + + @MMK_L_LAT_g + + g + gbreve + gdotaccent + gcommaaccent + gcaron + gcircumflex + gmacron + gtilde + + @MMK_L_LAT_h + + h + m + n + nacute + ncaron + ntilde + ndotaccent + ncommaaccent + hbrevebelow + hcircumflex + hdotbelow + macute + mdotbelow + ndotbelow + ngrave + nlinebelow + hbar + + @MMK_L_LAT_i + + dotlessi + i + iacute + igrave + iogonek + f_i + i.trk + idotbelow + ihoi + f_f_i + + @MMK_L_LAT_icircumflex + + icircumflex + idieresis + imacron + icaron + itilde + + @MMK_L_LAT_j + + j + jcircumflex + dotlessj + + @MMK_L_LAT_k + + k + kcommaaccent + kgreenlandic + + @MMK_L_LAT_l + + d + dcroat + l + lacute + lslash + f_l + lcommaaccent + ldotbelow + ldotbelowmacron + llinebelow + ddotbelow + dlinebelow + f_f_l + + @MMK_L_LAT_ohorn + + ohorn + ohornacute + ohorndotbelow + ohorngrave + ohornhoi + ohorntilde + + @MMK_L_LAT_r + + r + racute + rcaron + rcommaaccent + rdotbelow + rdotbelowmacron + rlinebelow + + @MMK_L_LAT_s + + s + sacute + scaron + scedilla + scommaaccent + scircumflex + sdotaccent + sdotbelow + + @MMK_L_LAT_t + + t + tcaron + tcommaaccent + tcedilla + f_t + tdieresis + tdotbelow + tlinebelow + + @MMK_L_LAT_u + + u + uacute + ucircumflex + udieresis + ugrave + uhungarumlaut + umacron + uogonek + uring + ubreve + ucaron + udieresisacute + udieresiscaron + udieresisgrave + udieresismacron + udotbelow + uhoi + utilde + + @MMK_L_LAT_uhorn + + uhorn + uhornacute + uhorndotbelow + uhorngrave + uhornhoi + uhorntilde + + @MMK_L_LAT_v + + v + w + y + yacute + ydieresis + wacute + wcircumflex + wdieresis + wgrave + ycircumflex + ydotaccent + ydotbelow + ygrave + yhoi + ytilde + + @MMK_L_LAT_z + + z + zacute + zcaron + zdotaccent + zdotbelow + + @MMK_L_colon + + colon + semicolon + + @MMK_L_comma + + comma + ellipsis + period + + @MMK_L_comma.sups + + comma.sups + period.sups + + @MMK_L_copyright + + copyright + soundcopyright + copyleft + + @MMK_L_eight.lf + + eight.lf + eight.osf + three.lf + + @MMK_L_equal + + equal + notequal + approxequal + logicalnot + + @MMK_L_fractions + + onehalf + onequarter + percent + threequarters + perthousand + fiveeighths + oneeighth + onethird + seveneighths + threeeighths + twothirds + + @MMK_L_guilsinglleft + + guillemotleft + guillemotleft.cap + guilsinglleft + guilsinglleft.cap + + @MMK_L_guilsinglright + + guillemotright + guillemotright.cap + guilsinglright + guilsinglright.cap + + @MMK_L_hyphen + + emdash + endash + hyphen + horizontalbar + emdash.cap + endash.cap + horizontalbar.cap + hyphen.cap + figuredash + threeemdash + twoemdash + + @MMK_L_hyphen.sc + + emdash.sc + endash.sc + hyphen.sc + + @MMK_L_hyphen.sups + + emdash.sups + endash.sups + hyphen.sups + + @MMK_L_less + + less + multiply + + @MMK_L_parenleft + + braceleft + braceleft.cap + bracketleft + bracketleft.cap + parenleft + parenleft.cap + + @MMK_L_parenleft.sc + + braceleft.sc + bracketleft.sc + parenleft.sc + + @MMK_L_parenright + + braceright + braceright.cap + bracketright + bracketright.cap + parenright + parenright.cap + + @MMK_L_parenright.sc + + braceright.sc + bracketright.sc + parenright.sc + + @MMK_L_periodcentered + + bulletoperator + periodcentered + + @MMK_L_plus + + asciitilde + divide + greater + minus + plus + + @MMK_L_quotedbl + + quotedbl + quotesingle + + @MMK_L_quotedbl.sc + + quotedbl.sc + quotesingle.sc + + @MMK_L_quoteleft + + quotedblleft + quoteleft + + @MMK_L_quoteleft.sc + + quotedblleft.sc + quoteleft.sc + + @MMK_L_quoteright + + quotedblright + quoteright + + @MMK_L_quoteright.sc + + quotedblright.sc + quoteright.sc + + @MMK_L_quotesinglbase + + quotedblbase + quotesinglbase + + @MMK_L_registered + + asterisk + registered + + @MMK_L_six.lf + + six.lf + six.osf + + @MMK_L_subs_figures + + eight.subs + five.subs + four.subs + nine.subs + one.subs + seven.subs + six.subs + three.subs + two.subs + zero.subs + + @MMK_L_sups_corner + + H.sups + I.sups + K.sups + L.sups + M.sups + N.sups + u.sups + A.sups + E.sups + R.sups + X.sups + Z.sups + d.sups + f.sups + h.sups + i.sups + k.sups + l.sups + m.sups + n.sups + t.sups + x.sups + a.sups + z.sups + ordfeminine + + @MMK_L_sups_figures + + eight.sups + five.sups + four.sups + nine.sups + one.sups + seven.sups + six.sups + three.sups + two.sups + zero.sups + + @MMK_L_sups_low + + g.sups + j.sups + q.sups + J.sups + Q.sups + + @MMK_L_sups_round + + b.sups + c.sups + e.sups + eacute.sups + egrave.sups + o.sups + p.sups + s.sups + ordmasculine + G.sups + O.sups + S.sups + U.sups + D.sups + B.sups + C.sups + + @MMK_L_sups_v + + r.sups + v.sups + w.sups + y.sups + T.sups + V.sups + W.sups + Y.sups + F.sups + P.sups + + @MMK_L_trademark + + servicemark + trademark + commercemark + deposeemark + + @MMK_L_zero.lf + + zero.lf + zero.lfslash + + @MMK_R_CYR_Acyr + + Abrevecyr + Acyr + + @MMK_R_CYR_Acyr.sc + + Abrevecyr.sc + Acyr.sc + + @MMK_R_CYR_Che + + Che + Chedescender + + @MMK_R_CYR_Che.sc + + Che.sc + Chedescender.sc + + @MMK_R_CYR_De + + De + El + Lje + + @MMK_R_CYR_De.sc + + De.sc + El.sc + Lje.sc + + @MMK_R_CYR_Dje + + Dje + Te + Tshe + Hard + Kabashkir + + @MMK_R_CYR_Dje.sc + + Dje.sc + Te.sc + Tshe.sc + Hard.sc + Kabashkir.sc + + @MMK_R_CYR_En + + Be + Dzhe + En + Endescender + Er + Ghe + Ghestroke + Gheup + Gje + Icyr + Ie + Iebreve + Iegrave + Igravecyr + Imacroncyr + Io + Ishort + Iukran + Kadescender + Nje + Palochka + Pe + Sha + Shcha + Shha + Soft + Tse + Ve + Yeru + Yi + Yu + Ka + Kje + Em + + @MMK_R_CYR_En.sc + + Be.sc + Dzhe.sc + En.sc + Endescender.sc + Er.sc + Ghe.sc + Ghestroke.sc + Gheup.sc + Gje.sc + Icyr.sc + Ie.sc + Iebreve.sc + Iegrave.sc + Igravecyr.sc + Imacroncyr.sc + Io.sc + Ishort.sc + Iukran.sc + Kadescender.sc + Nje.sc + Palochka.sc + Pe.sc + Sha.sc + Shcha.sc + Shha.sc + Soft.sc + Tse.sc + Ve.sc + Yeru.sc + Yi.sc + Yu.sc + Ka.sc + Kje.sc + Em.sc + + @MMK_R_CYR_Ocyr + + Es + Esdescender + Fita + Ieukran + Obarcyr + Ocyr + Odieresiscyr + Schwacyr + + @MMK_R_CYR_Ocyr.sc + + Es.sc + Esdescender.sc + Fita.sc + Ieukran.sc + Obarcyr.sc + Ocyr.sc + Odieresiscyr.sc + Schwacyr.sc + + @MMK_R_CYR_Ucyr + + Uacutedblcyr + Ucyr + Umacroncyr + Ushort + + @MMK_R_CYR_Ucyr.sc + + Uacutedblcyr.sc + Ucyr.sc + Umacroncyr.sc + Ushort.sc + + @MMK_R_CYR_Ustraight + + Ustraight + Ustraightstroke + + @MMK_R_CYR_Ustraight.sc + + Ustraight.sc + Ustraightstroke.sc + + @MMK_R_CYR_Ze + + Ecyr + Ze + Zedescender + + @MMK_R_CYR_Ze.sc + + Ecyr.sc + Ze.sc + Zedescender.sc + + @MMK_R_CYR_Zhe + + Zhe + Zhebreve + Zhedescender + Ha + Hadescender + + @MMK_R_CYR_Zhe.sc + + Zhe.sc + Zhebreve.sc + Zhedescender.sc + Ha.sc + Hadescender.sc + + @MMK_R_CYR_acyr + + abrevecyr + acyr + aie + + @MMK_R_CYR_che + + che + chedescender + + @MMK_R_CYR_el + + el + lje + + @MMK_R_CYR_ie + + ef + es + esdescender + fita + ie + iebreve + iegrave + ieukran + io + obarcyr + ocyr + odieresiscyr + schwacyr + + @MMK_R_CYR_iukran + + iukran + yi + + @MMK_R_CYR_shha + + palochka + shha + dje + tshe + + @MMK_R_CYR_te + + hard + kabashkir + te + + @MMK_R_CYR_ucyr + + uacutedblcyr + ucyr + umacroncyr + ushort + + @MMK_R_CYR_ustraight + + izhitsa + ustraight + ustraightstroke + + @MMK_R_CYR_ve + + dzhe + em + en + ghe + ghestroke + gheup + gje + icyr + igravecyr + imacroncyr + ishort + ka + kadescender + kje + nje + pe + sha + shcha + soft + tse + ve + yeru + endescender + yu + + @MMK_R_CYR_ze + + ecyr + ze + zedescender + + @MMK_R_CYR_zhe + + ha + zhe + zhebreve + zhedescender + hadescender + + @MMK_R_GRK_Alpha + + Alpha + Lambda + Delta + + @MMK_R_GRK_Alpha.sc + + Alpha.sc + Lambda.sc + Delta.sc + + @MMK_R_GRK_Beta + + Beta + Epsilon + Eta + Gamma + Iota + Iotadieresis + Kappa + Pi + Rho + + @MMK_R_GRK_Beta.sc + + Beta.sc + Epsilon.sc + Eta.sc + Gamma.sc + Iota.sc + Iotadieresis.sc + Kappa.sc + Pi.sc + Rho.sc + + @MMK_R_GRK_Epsilontonos + + Epsilontonos + Etatonos + Iotatonos + + @MMK_R_GRK_Mu + + Mu + Nu + + @MMK_R_GRK_Mu.sc + + Mu.sc + Nu.sc + + @MMK_R_GRK_Theta + + Omicron + Theta + + @MMK_R_GRK_Theta.sc + + Omicron.sc + Theta.sc + + @MMK_R_GRK_Upsilon + + Upsilon + Upsilondieresis + + @MMK_R_GRK_Upsilon.sc + + Upsilon.sc + Upsilondieresis.sc + + @MMK_R_GRK_alpha + + alpha + alphatonos + omicron + omicrontonos + phi + sigma + koppa + sigma.end + stigma + omega + omegatonos + + @MMK_R_GRK_epsilon + + epsilon + epsilontonos + + @MMK_R_GRK_eta + + eta + etatonos + kappa + + @MMK_R_GRK_gamma + + gamma + nu + + @MMK_R_GRK_iota + + iota + iotatonos + + @MMK_R_GRK_iotadieresis + + iotadieresis + iotadieresistonos + + @MMK_R_GRK_mu + + digamma + mu + + @MMK_R_GRK_upsilon + + psi + upsilon + upsilondieresis + upsilondieresistonos + upsilontonos + + @MMK_R_LAT_A + + A + Aacute + Abreve + Acircumflex + Adieresis + Agrave + Amacron + Aogonek + Aring + Atilde + Abreveacute + Abrevedotbelow + Abrevegrave + Abrevehoi + Abrevetilde + Acaron + Acircumflexacute + Acircumflexdotbelow + Acircumflexgrave + Acircumflexhoi + Acircumflextilde + Adotbelow + Ahoi + + @MMK_R_LAT_A.sc + + A.sc + Aacute.sc + Abreve.sc + Acircumflex.sc + Adieresis.sc + Agrave.sc + Amacron.sc + Aogonek.sc + Aring.sc + Atilde.sc + Abreveacute.sc + Abrevedotbelow.sc + Abrevegrave.sc + Abrevehoi.sc + Abrevetilde.sc + Acaron.sc + Acircumflexacute.sc + Acircumflexdotbelow.sc + Acircumflexgrave.sc + Acircumflexhoi.sc + Acircumflextilde.sc + Adotbelow.sc + Ahoi.sc + + @MMK_R_LAT_E + + B + D + Dcaron + Dcroat + E + Eacute + Ecaron + Ecircumflex + Edieresis + Edotaccent + Egrave + Emacron + Eogonek + Eth + F + H + I + Iacute + Icircumflex + Idieresis + Idotaccent + Igrave + Imacron + Iogonek + K + Kcommaaccent + L + Lacute + Lcaron + Ldot + Lslash + P + R + Racute + Rcaron + Rcommaaccent + Thorn + Lcommaaccent + Ddotbelow + Dlinebelow + Ebreve + Ecircumflexacute + Ecircumflexdotbelow + Ecircumflexgrave + Ecircumflexhoi + Ecircumflextilde + Edotbelow + Ehoi + Etilde + Hbrevebelow + Hcircumflex + Hdotbelow + Icaron + Idotbelow + Ihoi + Itilde + Ldotbelow + Ldotbelowmacron + Llinebelow + Rdotbelow + Rdotbelowmacron + Rlinebelow + Hbar + + @MMK_R_LAT_E.sc + + B.sc + D.sc + Dcaron.sc + Dcroat.sc + E.sc + Eacute.sc + Ecaron.sc + Ecircumflex.sc + Edieresis.sc + Edotaccent.sc + Egrave.sc + Emacron.sc + Eogonek.sc + Eth.sc + F.sc + H.sc + I.sc + Iacute.sc + Icircumflex.sc + Idieresis.sc + Idotaccent.sc + Igrave.sc + Imacron.sc + Iogonek.sc + K.sc + Kcommaaccent.sc + L.sc + Lacute.sc + Lcaron.sc + Ldot.sc + Lslash.sc + P.sc + R.sc + Racute.sc + Rcaron.sc + Rcommaaccent.sc + Thorn.sc + Lcommaaccent.sc + Ddotbelow.sc + Dlinebelow.sc + Ebreve.sc + Ecircumflexacute.sc + Ecircumflexdotbelow.sc + Ecircumflexgrave.sc + Ecircumflexhoi.sc + Ecircumflextilde.sc + Edotbelow.sc + Ehoi.sc + Etilde.sc + Hbrevebelow.sc + Hcircumflex.sc + Hdotbelow.sc + Icaron.sc + Idotbelow.sc + Ihoi.sc + Itilde.sc + Ldotbelow.sc + Ldotbelowmacron.sc + Llinebelow.sc + Rdotbelow.sc + Rdotbelowmacron.sc + Rlinebelow.sc + Hbar.sc + + @MMK_R_LAT_J + + J + Jcircumflex + + @MMK_R_LAT_J.sc + + J.sc + Jcircumflex.sc + + @MMK_R_LAT_M + + M + N + Nacute + Ncaron + Ntilde + Ndotaccent + Ncommaaccent + Macute + Mdotbelow + Ndotbelow + Ngrave + Nlinebelow + + @MMK_R_LAT_M.sc + + M.sc + N.sc + Nacute.sc + Ncaron.sc + Ntilde.sc + Ndotaccent.sc + Ncommaaccent.sc + Macute.sc + Mdotbelow.sc + Ndotbelow.sc + Ngrave.sc + Nlinebelow.sc + + @MMK_R_LAT_O + + C + Cacute + Ccaron + Ccedilla + G + Gbreve + Gdotaccent + O + OE + Oacute + Ocircumflex + Odieresis + Ograve + Ohungarumlaut + Omacron + Oslash + Otilde + Q + Gcommaaccent + Ccircumflex + Cdotaccent + Obreve + Ocaron + Ocircumflexacute + Ocircumflexdotbelow + Ocircumflexgrave + Ocircumflexhoi + Ocircumflextilde + Odotbelow + Ohoi + Ohorn + Ohornacute + Ohorndotbelow + Ohorngrave + Ohornhoi + Ohorntilde + Gcaron + Gcircumflex + Gmacron + Gtilde + Schwa + + @MMK_R_LAT_O.sc + + C.sc + Cacute.sc + Ccaron.sc + Ccedilla.sc + G.sc + Gbreve.sc + Gdotaccent.sc + O.sc + OE.sc + Oacute.sc + Ocircumflex.sc + Odieresis.sc + Ograve.sc + Ohungarumlaut.sc + Omacron.sc + Oslash.sc + Otilde.sc + Q.sc + Gcommaaccent.sc + Ccircumflex.sc + Cdotaccent.sc + Obreve.sc + Ocaron.sc + Ocircumflexacute.sc + Ocircumflexdotbelow.sc + Ocircumflexgrave.sc + Ocircumflexhoi.sc + Ocircumflextilde.sc + Odotbelow.sc + Ohoi.sc + Ohorn.sc + Ohornacute.sc + Ohorndotbelow.sc + Ohorngrave.sc + Ohornhoi.sc + Ohorntilde.sc + Gcaron.sc + Gcircumflex.sc + Gmacron.sc + Gtilde.sc + Schwa.sc + + @MMK_R_LAT_S + + S + Sacute + Scaron + Scedilla + Scommaaccent + Scircumflex + Sdotaccent + Sdotbelow + + @MMK_R_LAT_S.sc + + S.sc + Sacute.sc + Scaron.sc + Scedilla.sc + Scommaaccent.sc + Scircumflex.sc + Sdotaccent.sc + Sdotbelow.sc + germandbls.sc + + @MMK_R_LAT_T + + T + Tcaron + Tcommaaccent + Tcedilla + Tdotbelow + Tlinebelow + + @MMK_R_LAT_T.sc + + T.sc + Tcaron.sc + Tcommaaccent.sc + Tcedilla.sc + Tdotbelow.sc + Tlinebelow.sc + tdieresis.sc + + @MMK_R_LAT_U + + U + Uacute + Ucircumflex + Udieresis + Ugrave + Uhungarumlaut + Umacron + Uogonek + Uring + Ubreve + Ucaron + Udieresisacute + Udieresiscaron + Udieresisgrave + Udieresismacron + Udotbelow + Uhoi + Uhorn + Uhornacute + Uhorndotbelow + Uhorngrave + Uhornhoi + Uhorntilde + Utilde + + @MMK_R_LAT_U.sc + + U.sc + Uacute.sc + Ucircumflex.sc + Udieresis.sc + Ugrave.sc + Uhungarumlaut.sc + Umacron.sc + Uogonek.sc + Uring.sc + Ubreve.sc + Ucaron.sc + Udieresisacute.sc + Udieresiscaron.sc + Udieresisgrave.sc + Udieresismacron.sc + Udotbelow.sc + Uhoi.sc + Uhorn.sc + Uhornacute.sc + Uhorndotbelow.sc + Uhorngrave.sc + Uhornhoi.sc + Uhorntilde.sc + Utilde.sc + + @MMK_R_LAT_W + + W + Wacute + Wcircumflex + Wdieresis + Wgrave + + @MMK_R_LAT_W.sc + + W.sc + Wacute.sc + Wcircumflex.sc + Wdieresis.sc + Wgrave.sc + + @MMK_R_LAT_Y + + Y + Yacute + Ydieresis + Ycircumflex + Ydotaccent + Ydotbelow + Ygrave + Yhoi + Ytilde + + @MMK_R_LAT_Y.sc + + Y.sc + Yacute.sc + Ydieresis.sc + Ycircumflex.sc + Ydotaccent.sc + Ydotbelow.sc + Ygrave.sc + Yhoi.sc + Ytilde.sc + + @MMK_R_LAT_Z + + Z + Zacute + Zcaron + Zdotaccent + Zdotbelow + + @MMK_R_LAT_Z.sc + + Z.sc + Zacute.sc + Zcaron.sc + Zdotaccent.sc + Zdotbelow.sc + + @MMK_R_LAT_a + + a + aacute + abreve + acircumflex + adieresis + ae + agrave + amacron + aogonek + aring + atilde + abreveacute + abrevedotbelow + abrevegrave + abrevehoi + abrevetilde + acaron + acircumflexacute + acircumflexdotbelow + acircumflexgrave + acircumflexhoi + acircumflextilde + adotbelow + ahoi + + @MMK_R_LAT_f + + f + germandbls + longs + f_i + f_l + f_t + f_f + f_f_i + f_f_l + + @MMK_R_LAT_f.sc + + f_i.sc + f_l.sc + + @MMK_R_LAT_g + + g + gbreve + gdotaccent + gcommaaccent + gcaron + gcircumflex + gmacron + gtilde + + @MMK_R_LAT_h + + h + k + kcommaaccent + l + lacute + lcaron + ldot + lslash + b + lcommaaccent + ldotbelow + ldotbelowmacron + llinebelow + hbrevebelow + hcircumflex + hdotbelow + hbar + + @MMK_R_LAT_i + + i + iacute + igrave + iogonek + i.trk + idotbelow + ihoi + + @MMK_R_LAT_icircumflex + + icircumflex + idieresis + imacron + icaron + itilde + + @MMK_R_LAT_j + + j + jcircumflex + dotlessj + + @MMK_R_LAT_m + + m + n + nacute + ncaron + ntilde + r + racute + rcaron + rcommaaccent + ndotaccent + ncommaaccent + dotlessi + macute + mdotbelow + ndotbelow + ngrave + nlinebelow + rdotbelow + rdotbelowmacron + rlinebelow + kgreenlandic + + @MMK_R_LAT_o + + c + cacute + ccaron + ccedilla + d + dcaron + dcroat + e + eacute + ecaron + ecircumflex + edieresis + edotaccent + egrave + emacron + eogonek + eth + o + oacute + ocircumflex + odieresis + oe + ograve + ohungarumlaut + omacron + oslash + otilde + q + ccircumflex + cdotaccent + ddotbelow + dlinebelow + ebreve + ecircumflexacute + ecircumflexdotbelow + ecircumflexgrave + ecircumflexhoi + ecircumflextilde + edotbelow + ehoi + etilde + ocaron + ocircumflexacute + ocircumflexdotbelow + ocircumflexgrave + ocircumflexhoi + ocircumflextilde + odotbelow + ohoi + ohorn + ohornacute + ohorndotbelow + ohorngrave + ohornhoi + ohorntilde + obreve + schwa + + @MMK_R_LAT_s + + s + sacute + scaron + scedilla + scommaaccent + scircumflex + sdotaccent + sdotbelow + + @MMK_R_LAT_t + + t + tcaron + tcommaaccent + tcedilla + tdieresis + tdotbelow + tlinebelow + + @MMK_R_LAT_u + + u + uacute + ucircumflex + udieresis + ugrave + uhungarumlaut + umacron + uogonek + uring + ubreve + ucaron + udieresisacute + udieresiscaron + udieresisgrave + udieresismacron + udotbelow + uhoi + uhorn + uhornacute + uhorndotbelow + uhorngrave + uhornhoi + uhorntilde + utilde + + @MMK_R_LAT_v + + v + w + wacute + wcircumflex + wdieresis + wgrave + + @MMK_R_LAT_y + + y + yacute + ydieresis + ycircumflex + ydotaccent + ydotbelow + ygrave + yhoi + ytilde + + @MMK_R_LAT_z + + z + zacute + zcaron + zdotaccent + zdotbelow + + @MMK_R_colon + + colon + semicolon + + @MMK_R_comma + + comma + ellipsis + period + + @MMK_R_comma.sups + + comma.sups + period.sups + + @MMK_R_copyright + + copyright + soundcopyright + copyleft + + @MMK_R_eight.lf + + eight.lf + eight.osf + + @MMK_R_equal + + equal + notequal + approxequal + + @MMK_R_fractions + + onehalf + onequarter + percent + perthousand + threequarters + fiveeighths + oneeighth + onethird + seveneighths + threeeighths + twothirds + + @MMK_R_greater + + greater + multiply + + @MMK_R_guilsinglleft + + guillemotleft + guillemotleft.cap + guilsinglleft + guilsinglleft.cap + + @MMK_R_guilsinglright + + guillemotright + guillemotright.cap + guilsinglright + guilsinglright.cap + + @MMK_R_hyphen + + emdash + endash + hyphen + horizontalbar + emdash.cap + endash.cap + horizontalbar.cap + hyphen.cap + figuredash + threeemdash + twoemdash + + @MMK_R_hyphen.sc + + emdash.sc + endash.sc + hyphen.sc + + @MMK_R_hyphen.sups + + emdash.sups + endash.sups + hyphen.sups + + @MMK_R_parenleft + + braceleft + braceleft.cap + bracketleft + bracketleft.cap + parenleft + parenleft.cap + + @MMK_R_parenleft.sc + + braceleft.sc + bracketleft.sc + parenleft.sc + + @MMK_R_parenright + + braceright + braceright.cap + bracketright + bracketright.cap + parenright + parenright.cap + + @MMK_R_parenright.sc + + braceright.sc + bracketright.sc + parenright.sc + + @MMK_R_periodcentered + + bulletoperator + periodcentered + + @MMK_R_plus + + asciitilde + divide + less + logicalnot + minus + plus + + @MMK_R_quotedbl + + quotedbl + quotesingle + + @MMK_R_quotedbl.sc + + quotedbl.sc + quotesingle.sc + + @MMK_R_quoteleft + + quotedblleft + quoteleft + + @MMK_R_quoteleft.sc + + quotedblleft.sc + quoteleft.sc + + @MMK_R_quoteright + + quotedblright + quoteright + + @MMK_R_quoteright.sc + + quotedblright.sc + quoteright.sc + + @MMK_R_quotesinglbase + + quotedblbase + quotesinglbase + + @MMK_R_registered + + asterisk + registered + + @MMK_R_six.lf + + six.lf + six.osf + + @MMK_R_subs_figures + + eight.subs + five.subs + four.subs + nine.subs + one.subs + seven.subs + six.subs + three.subs + two.subs + zero.subs + + @MMK_R_sups_corner + + b.sups + f.sups + h.sups + i.sups + k.sups + l.sups + m.sups + n.sups + r.sups + x.sups + z.sups + A.sups + B.sups + D.sups + E.sups + F.sups + H.sups + I.sups + K.sups + L.sups + M.sups + N.sups + P.sups + R.sups + X.sups + Z.sups + + @MMK_R_sups_desc + + g.sups + p.sups + y.sups + + @MMK_R_sups_diag + + v.sups + w.sups + V.sups + W.sups + T.sups + Y.sups + + @MMK_R_sups_figures + + eight.sups + five.sups + four.sups + nine.sups + one.sups + seven.sups + six.sups + three.sups + two.sups + zero.sups + + @MMK_R_sups_j + + J.sups + j.sups + + @MMK_R_sups_round + + a.sups + c.sups + d.sups + e.sups + eacute.sups + egrave.sups + o.sups + q.sups + s.sups + ordfeminine + ordmasculine + u.sups + t.sups + C.sups + G.sups + O.sups + Q.sups + S.sups + U.sups + + @MMK_R_trademark + + servicemark + trademark + commercemark + deposeemark + + @MMK_R_zero.lf + + zero.lf + zero.lfslash + + ADDL_AL3_AL4 + + Abreveacute + Abrevedotbelow + Abrevegrave + Abrevehoi + Abrevetilde + Acaron + Acircumflexacute + Acircumflexdotbelow + Acircumflexgrave + Acircumflexhoi + Acircumflextilde + Adotbelow + Ahoi + Ccircumflex + Cdotaccent + Ddotbelow + Dlinebelow + Ebreve + Ecircumflexacute + Ecircumflexdotbelow + Ecircumflexgrave + Ecircumflexhoi + Ecircumflextilde + Edotbelow + Ehoi + Etilde + Gcaron + Gcircumflex + Gmacron + Gtilde + Hbar + Hbrevebelow + Hcircumflex + Hdotbelow + Icaron + Idotbelow + Ihoi + Itilde + Jcircumflex + Ldotbelow + Ldotbelowmacron + Llinebelow + Mdotbelow + Ndotbelow + Nlinebelow + Ocaron + Ocircumflexacute + Ocircumflexdotbelow + Ocircumflexgrave + Ocircumflexhoi + Ocircumflextilde + Odotbelow + Ohoi + Ohorn + Ohornacute + Ohorndotbelow + Ohorngrave + Ohornhoi + Ohorntilde + Rdotbelow + Rdotbelowmacron + Rlinebelow + Scircumflex + Sdotaccent + Sdotbelow + Germandbls + Tdotbelow + Tlinebelow + Ubreve + Ucaron + Udieresisacute + Udieresiscaron + Udieresisgrave + Udieresismacron + Udotbelow + Uhoi + Uhorn + Uhornacute + Uhorndotbelow + Uhorngrave + Uhornhoi + Uhorntilde + Utilde + Wacute + Wcircumflex + Wdieresis + Wgrave + Ycircumflex + Ydotaccent + Ydotbelow + Ygrave + Yhoi + Ytilde + Zdotbelow + Schwa + abreveacute + abrevedotbelow + abrevegrave + abrevehoi + abrevetilde + acaron + acircumflexacute + acircumflexdotbelow + acircumflexgrave + acircumflexhoi + acircumflextilde + adotbelow + ahoi + ccircumflex + cdotaccent + ddotbelow + dlinebelow + ebreve + ecircumflexacute + ecircumflexdotbelow + ecircumflexgrave + ecircumflexhoi + ecircumflextilde + edotbelow + ehoi + etilde + gcaron + gcircumflex + gmacron + gtilde + hbar + hbrevebelow + hcircumflex + hdotbelow + icaron + idotbelow + ihoi + itilde + dotlessj + jcircumflex + kgreenlandic + ldotbelow + ldotbelowmacron + llinebelow + mdotbelow + napostrophe + ndotbelow + nlinebelow + ocaron + ocircumflexacute + ocircumflexdotbelow + ocircumflexgrave + ocircumflexhoi + ocircumflextilde + odotbelow + ohoi + ohorn + ohornacute + ohorndotbelow + ohorngrave + ohornhoi + ohorntilde + rdotbelow + rdotbelowmacron + rlinebelow + scircumflex + sdotaccent + sdotbelow + tdieresis + tdotbelow + tlinebelow + ubreve + ucaron + udieresisacute + udieresiscaron + udieresisgrave + udieresismacron + udotbelow + uhoi + uhorn + uhornacute + uhorndotbelow + uhorngrave + uhornhoi + uhorntilde + utilde + wacute + wcircumflex + wdieresis + wgrave + ycircumflex + ydotaccent + ydotbelow + ygrave + yhoi + ytilde + zdotbelow + schwa + alphalatin + gscript + f_f + f_f_i + f_f_l + zero.cap + one.cap + two.cap + three.cap + four.cap + five.cap + six.cap + seven.cap + eight.cap + nine.cap + bracketleft.sups + bracketright.sups + bracketleft.subs + bracketright.subs + bracketleft.dnom + bracketright.dnom + bracketleft.numr + bracketright.numr + A.sups + B.sups + C.sups + D.sups + E.sups + F.sups + G.sups + H.sups + I.sups + J.sups + K.sups + L.sups + M.sups + N.sups + O.sups + P.sups + Q.sups + R.sups + S.sups + T.sups + U.sups + V.sups + W.sups + X.sups + Y.sups + Z.sups + colonmonetary + lira + naira + peseta + won + dong + peso + guarani + hryvnia + cedi + ruble + bitcoin + ringhalfleftmod + ringhalfrightmod + verticallinemod + verticallinelowmod + verticallinebelowcmb + brevebelowcmb + dieresisbelowcmb + dotbelowcmb + hoicmb + hoicmb.cap + horncmb + macronbelowcmb + dieresisacute + dieresisacute.cap + dieresisgrave + dieresisgrave.cap + dieresismacron + dieresismacron.cap + dieresiscaron + dieresiscaron.cap + circumflexacute + circumflexacute.cap + circumflexgrave + circumflexgrave.cap + circumflexhoi + circumflexhoi.cap + circumflextilde + circumflextilde.cap + breveacute + breveacute.cap + brevegrave + brevegrave.cap + brevehoi + brevehoi.cap + brevetilde + brevetilde.cap + Alpha + Beta + Gamma + Delta + Epsilon + Zeta + Eta + Theta + Iota + Kappa + Lambda + Mu + Nu + Xi + Omicron + Pi + Rho + Sigma + Tau + Upsilon + Phi + Chi + Psi + Omega + Alphatonos + Epsilontonos + Etatonos + Iotatonos + Iotadieresis + Omicrontonos + Upsilontonos + Upsilondieresis + Omegatonos + alpha + beta + gamma + delta + epsilon + zeta + eta + theta + iota + kappa + lambda + mu + nu + xi + omicron + rho + sigma + tau + upsilon + phi + chi + psi + omega + sigma.end + alphatonos + epsilontonos + etatonos + iotatonos + iotadieresis + omicrontonos + upsilontonos + upsilondieresis + omegatonos + iotadieresistonos + upsilondieresistonos + kai + koppa + stigma + digamma + sampi + questiongreek + anoteleia + anoteleia.cap + numeralsign + lownumeralsign + tonos + tonos.cap + dieresistonos + tonoscmb + dieresistonoscmb + Acyr + Be + Ve + Ghe + De + Ie + Zhe + Ze + Icyr + Ishort + Ka + El + Em + En + Ocyr + Pe + Er + Es + Te + Ucyr + Ef + Ha + Tse + Che + Sha + Shcha + Hard + Yeru + Soft + Ecyr + Yu + Ya + Iegrave + Io + Dje + Gje + Ieukran + Dze + Iukran + Yi + Je + Lje + Nje + Tshe + Kje + Igravecyr + Ushort + Dzhe + Yat + Fita + Izhitsa + Gheup + Ghestroke + Zhedescender + Zedescender + Kadescender + Kabashkir + Endescender + Esdescender + Ustraight + Ustraightstroke + Hadescender + Chedescender + Shha + Palochka + Zhebreve + Abrevecyr + Aie + Iebreve + Schwacyr + Imacroncyr + Odieresiscyr + Obarcyr + Umacroncyr + Uacutedblcyr + acyr + be + ve + ghe + de + ie + zhe + ze + icyr + ishort + ka + el + em + en + ocyr + pe + er + es + te + ucyr + ef + ha + tse + che + sha + shcha + hard + yeru + soft + ecyr + yu + ya + iegrave + io + dje + gje + ieukran + dze + iukran + yi + je + lje + nje + tshe + kje + igravecyr + ushort + dzhe + yat + fita + izhitsa + gheup + ghestroke + zhedescender + zedescender + kadescender + kabashkir + endescender + esdescender + ustraight + ustraightstroke + hadescender + chedescender + shha + zhebreve + palochka + abrevecyr + aie + iebreve + schwacyr + imacroncyr + odieresiscyr + obarcyr + umacroncyr + uacutedblcyr + be.srb + numero + brevecmb.cyr + brevecmb.cyrcap + twoemdash + threeemdash + commercemark + deposeemark + Macute + macute + Ngrave + ngrave + Obreve + obreve + twodotenleader + exclamdbl + questiondbl + questionexclam + exclamquestion + + ADDL_AL3_AL4.sc + + Abreveacute.sc + Abrevedotbelow.sc + Abrevegrave.sc + Abrevehoi.sc + Abrevetilde.sc + Acaron.sc + Acircumflexacute.sc + Acircumflexdotbelow.sc + Acircumflexgrave.sc + Acircumflexhoi.sc + Acircumflextilde.sc + Adotbelow.sc + Ahoi.sc + Ccircumflex.sc + Cdotaccent.sc + Ddotbelow.sc + Dlinebelow.sc + Ebreve.sc + Ecircumflexacute.sc + Ecircumflexdotbelow.sc + Ecircumflexgrave.sc + Ecircumflexhoi.sc + Ecircumflextilde.sc + Edotbelow.sc + Ehoi.sc + Etilde.sc + Gcaron.sc + Gcircumflex.sc + Gmacron.sc + Gtilde.sc + Hbar.sc + Hbrevebelow.sc + Hcircumflex.sc + Hdotbelow.sc + Icaron.sc + Idotbelow.sc + Ihoi.sc + Itilde.sc + Jcircumflex.sc + Ldotbelow.sc + Ldotbelowmacron.sc + Llinebelow.sc + Mdotbelow.sc + Ndotbelow.sc + Nlinebelow.sc + Ocaron.sc + Ocircumflexacute.sc + Ocircumflexdotbelow.sc + Ocircumflexgrave.sc + Ocircumflexhoi.sc + Ocircumflextilde.sc + Odotbelow.sc + Ohoi.sc + Ohorn.sc + Ohornacute.sc + Ohorndotbelow.sc + Ohorngrave.sc + Ohornhoi.sc + Ohorntilde.sc + Rdotbelow.sc + Rdotbelowmacron.sc + Rlinebelow.sc + Scircumflex.sc + Sdotaccent.sc + Sdotbelow.sc + Germandbls.sc + Tdotbelow.sc + Tlinebelow.sc + Ubreve.sc + Ucaron.sc + Udieresisacute.sc + Udieresiscaron.sc + Udieresisgrave.sc + Udieresismacron.sc + Udotbelow.sc + Uhoi.sc + Uhorn.sc + Uhornacute.sc + Uhorndotbelow.sc + Uhorngrave.sc + Uhornhoi.sc + Uhorntilde.sc + Utilde.sc + Wacute.sc + Wcircumflex.sc + Wdieresis.sc + Wgrave.sc + Ycircumflex.sc + Ydotaccent.sc + Ydotbelow.sc + Ygrave.sc + Yhoi.sc + Ytilde.sc + Zdotbelow.sc + Schwa.sc + tdieresis.sc + Alpha.sc + Beta.sc + Gamma.sc + Delta.sc + Epsilon.sc + Zeta.sc + Eta.sc + Theta.sc + Iota.sc + Kappa.sc + Lambda.sc + Mu.sc + Nu.sc + Xi.sc + Omicron.sc + Pi.sc + Rho.sc + Sigma.sc + Tau.sc + Upsilon.sc + Phi.sc + Chi.sc + Psi.sc + Omega.sc + Iotadieresis.sc + Upsilondieresis.sc + Acyr.sc + Be.sc + Ve.sc + Ghe.sc + De.sc + Ie.sc + Zhe.sc + Ze.sc + Icyr.sc + Ishort.sc + Ka.sc + El.sc + Em.sc + En.sc + Ocyr.sc + Pe.sc + Er.sc + Es.sc + Te.sc + Ucyr.sc + Ef.sc + Ha.sc + Tse.sc + Che.sc + Sha.sc + Shcha.sc + Hard.sc + Yeru.sc + Soft.sc + Ecyr.sc + Yu.sc + Ya.sc + Iegrave.sc + Io.sc + Dje.sc + Gje.sc + Ieukran.sc + Dze.sc + Iukran.sc + Yi.sc + Je.sc + Lje.sc + Nje.sc + Tshe.sc + Kje.sc + Igravecyr.sc + Ushort.sc + Dzhe.sc + Yat.sc + Fita.sc + Izhitsa.sc + Gheup.sc + Ghestroke.sc + Zhedescender.sc + Zedescender.sc + Kadescender.sc + Kabashkir.sc + Endescender.sc + Esdescender.sc + Ustraight.sc + Ustraightstroke.sc + Hadescender.sc + Chedescender.sc + Shha.sc + Palochka.sc + Zhebreve.sc + Abrevecyr.sc + Aie.sc + Iebreve.sc + Schwacyr.sc + Imacroncyr.sc + Odieresiscyr.sc + Obarcyr.sc + Umacroncyr.sc + Uacutedblcyr.sc + Macute.sc + Ngrave.sc + Obreve.sc + + COMBINING_MARKS + + commabelowcmb.alt + gravecmb + gravecmb.cap + acutecmb + acutecmb.cap + circumflexcmb + circumflexcmb.cap + tildecmb + tildecmb.cap + macroncmb + macroncmb.cap + brevecmb + brevecmb.cap + dotaccentcmb + dotaccentcmb.cap + dieresiscmb + dieresiscmb.cap + ringcmb + ringcmb.cap + hungarumlautcmb + hungarumlautcmb.cap + caroncmb + caroncmb.cap + commabelowcmb + cedillacmb + ogonekcmb + verticallinebelowcmb + brevebelowcmb + dieresisbelowcmb + dotbelowcmb + hoicmb + hoicmb.cap + horncmb + macronbelowcmb + dieresisacute + dieresisacute.cap + dieresisgrave + dieresisgrave.cap + dieresismacron + dieresismacron.cap + dieresiscaron + dieresiscaron.cap + circumflexacute + circumflexacute.cap + circumflexgrave + circumflexgrave.cap + circumflexhoi + circumflexhoi.cap + circumflextilde + circumflextilde.cap + breveacute + breveacute.cap + brevegrave + brevegrave.cap + brevehoi + brevehoi.cap + brevetilde + brevetilde.cap + tonoscmb + dieresistonoscmb + brevecmb.cyr + brevecmb.cyrcap + + CYRILLIC + + Acyr + Be + Ve + Ghe + De + Ie + Zhe + Ze + Icyr + Ishort + Ka + El + Em + En + Ocyr + Pe + Er + Es + Te + Ucyr + Ef + Ha + Tse + Che + Sha + Shcha + Hard + Yeru + Soft + Ecyr + Yu + Ya + Iegrave + Io + Dje + Gje + Ieukran + Dze + Iukran + Yi + Je + Lje + Nje + Tshe + Kje + Igravecyr + Ushort + Dzhe + Yat + Fita + Izhitsa + Gheup + Ghestroke + Zhedescender + Zedescender + Kadescender + Kabashkir + Endescender + Esdescender + Ustraight + Ustraightstroke + Hadescender + Chedescender + Shha + Palochka + Zhebreve + Abrevecyr + Aie + Iebreve + Schwacyr + Imacroncyr + Odieresiscyr + Obarcyr + Umacroncyr + Uacutedblcyr + acyr + be + ve + ghe + de + ie + zhe + ze + icyr + ishort + ka + el + em + en + ocyr + pe + er + es + te + ucyr + ef + ha + tse + che + sha + shcha + hard + yeru + soft + ecyr + yu + ya + iegrave + io + dje + gje + ieukran + dze + iukran + yi + je + lje + nje + tshe + kje + igravecyr + ushort + dzhe + yat + fita + izhitsa + gheup + ghestroke + zhedescender + zedescender + kadescender + kabashkir + endescender + esdescender + ustraight + ustraightstroke + hadescender + chedescender + shha + zhebreve + palochka + abrevecyr + aie + iebreve + schwacyr + imacroncyr + odieresiscyr + obarcyr + umacroncyr + uacutedblcyr + be.srb + numero + brevecmb.cyr + brevecmb.cyrcap + + CYRILLIC.sc + + Acyr.sc + Be.sc + Ve.sc + Ghe.sc + De.sc + Ie.sc + Zhe.sc + Ze.sc + Icyr.sc + Ishort.sc + Ka.sc + El.sc + Em.sc + En.sc + Ocyr.sc + Pe.sc + Er.sc + Es.sc + Te.sc + Ucyr.sc + Ef.sc + Ha.sc + Tse.sc + Che.sc + Sha.sc + Shcha.sc + Hard.sc + Yeru.sc + Soft.sc + Ecyr.sc + Yu.sc + Ya.sc + Iegrave.sc + Io.sc + Dje.sc + Gje.sc + Ieukran.sc + Dze.sc + Iukran.sc + Yi.sc + Je.sc + Lje.sc + Nje.sc + Tshe.sc + Kje.sc + Igravecyr.sc + Ushort.sc + Dzhe.sc + Yat.sc + Fita.sc + Izhitsa.sc + Gheup.sc + Ghestroke.sc + Zhedescender.sc + Zedescender.sc + Kadescender.sc + Kabashkir.sc + Endescender.sc + Esdescender.sc + Ustraight.sc + Ustraightstroke.sc + Hadescender.sc + Chedescender.sc + Shha.sc + Palochka.sc + Zhebreve.sc + Abrevecyr.sc + Aie.sc + Iebreve.sc + Schwacyr.sc + Imacroncyr.sc + Odieresiscyr.sc + Obarcyr.sc + Umacroncyr.sc + Uacutedblcyr.sc + + GREEK + + Alpha + Beta + Gamma + Delta + Epsilon + Zeta + Eta + Theta + Iota + Kappa + Lambda + Mu + Nu + Xi + Omicron + Pi + Rho + Sigma + Tau + Upsilon + Phi + Chi + Psi + Omega + Alphatonos + Epsilontonos + Etatonos + Iotatonos + Iotadieresis + Omicrontonos + Upsilontonos + Upsilondieresis + Omegatonos + alpha + beta + gamma + delta + epsilon + zeta + eta + theta + iota + kappa + lambda + mu + nu + xi + omicron + pi + rho + sigma + tau + upsilon + phi + chi + psi + omega + sigma.end + alphatonos + epsilontonos + etatonos + iotatonos + iotadieresis + omicrontonos + upsilontonos + upsilondieresis + omegatonos + iotadieresistonos + upsilondieresistonos + kai + koppa + stigma + digamma + sampi + questiongreek + anoteleia + anoteleia.cap + numeralsign + lownumeralsign + tonos + tonos.cap + dieresistonos + tonoscmb + dieresistonoscmb + + GREEK.sc + + Alpha.sc + Beta.sc + Gamma.sc + Delta.sc + Epsilon.sc + Zeta.sc + Eta.sc + Theta.sc + Iota.sc + Kappa.sc + Lambda.sc + Mu.sc + Nu.sc + Xi.sc + Omicron.sc + Pi.sc + Rho.sc + Sigma.sc + Tau.sc + Upsilon.sc + Phi.sc + Chi.sc + Psi.sc + Omega.sc + Iotadieresis.sc + Upsilondieresis.sc + + LATIN + + A + B + C + D + E + F + G + H + I + J + K + L + M + N + O + P + Q + R + S + T + U + V + W + X + Y + Z + a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + t + u + v + w + x + y + z + Agrave + Aacute + Acircumflex + Atilde + Adieresis + Amacron + Abreve + Abreveacute + Abrevedotbelow + Abrevegrave + Abrevehoi + Abrevetilde + Acaron + Acircumflexacute + Acircumflexdotbelow + Acircumflexgrave + Acircumflexhoi + Acircumflextilde + Adotbelow + Ahoi + Aring + Aogonek + AE + Ccedilla + Cacute + Ccaron + Ccircumflex + Cdotaccent + Dcaron + Dcroat + Ddotbelow + Dlinebelow + Egrave + Eacute + Ecircumflex + Ecaron + Edieresis + Emacron + Edotaccent + Eogonek + Ebreve + Ecircumflexacute + Ecircumflexdotbelow + Ecircumflexgrave + Ecircumflexhoi + Ecircumflextilde + Edotbelow + Ehoi + Etilde + Gbreve + Gdotaccent + Gcommaaccent + Gcaron + Gcircumflex + Gmacron + Gtilde + Hbar + Hbrevebelow + Hcircumflex + Hdotbelow + Igrave + Iacute + Icircumflex + Idieresis + Imacron + Idotaccent + Iogonek + Icaron + Idotbelow + Ihoi + Itilde + Jcircumflex + Kcommaaccent + Lacute + Lcaron + Lcommaaccent + Ldot + Ldotbelow + Ldotbelowmacron + Llinebelow + Lslash + Mdotbelow + Nacute + Ncaron + Ntilde + Ncommaaccent + Ndotaccent + Ndotbelow + Nlinebelow + Ograve + Oacute + Ocircumflex + Otilde + Odieresis + Omacron + Ohungarumlaut + Ocaron + Ocircumflexacute + Ocircumflexdotbelow + Ocircumflexgrave + Ocircumflexhoi + Ocircumflextilde + Odotbelow + Ohoi + Ohorn + Ohornacute + Ohorndotbelow + Ohorngrave + Ohornhoi + Ohorntilde + Oslash + OE + Racute + Rcaron + Rcommaaccent + Rdotbelow + Rdotbelowmacron + Rlinebelow + Sacute + Scaron + Scedilla + Scommaaccent + Scircumflex + Sdotaccent + Sdotbelow + Germandbls + Tcaron + Tcedilla + Tcommaaccent + Tdotbelow + Tlinebelow + Ugrave + Uacute + Ucircumflex + Udieresis + Umacron + Uring + Uhungarumlaut + Uogonek + Ubreve + Ucaron + Udieresisacute + Udieresiscaron + Udieresisgrave + Udieresismacron + Udotbelow + Uhoi + Uhorn + Uhornacute + Uhorndotbelow + Uhorngrave + Uhornhoi + Uhorntilde + Utilde + Wacute + Wcircumflex + Wdieresis + Wgrave + Yacute + Ydieresis + Ycircumflex + Ydotaccent + Ydotbelow + Ygrave + Yhoi + Ytilde + Zacute + Zcaron + Zdotaccent + Zdotbelow + Eth + Thorn + Schwa + agrave + aacute + acircumflex + atilde + adieresis + amacron + abreve + abreveacute + abrevedotbelow + abrevegrave + abrevehoi + abrevetilde + acaron + acircumflexacute + acircumflexdotbelow + acircumflexgrave + acircumflexhoi + acircumflextilde + adotbelow + ahoi + aring + aogonek + ae + ccedilla + cacute + ccaron + ccircumflex + cdotaccent + dcaron + dcroat + ddotbelow + dlinebelow + egrave + eacute + ecircumflex + ecaron + edieresis + emacron + edotaccent + eogonek + ebreve + ecircumflexacute + ecircumflexdotbelow + ecircumflexgrave + ecircumflexhoi + ecircumflextilde + edotbelow + ehoi + etilde + gbreve + gdotaccent + gcommaaccent + gcaron + gcircumflex + gmacron + gtilde + hbar + hbrevebelow + hcircumflex + hdotbelow + igrave + iacute + icircumflex + idieresis + imacron + iogonek + i.trk + icaron + idotbelow + ihoi + itilde + dotlessi + dotlessj + jcircumflex + kcommaaccent + kgreenlandic + lacute + lcaron + lcommaaccent + ldot + ldotbelow + ldotbelowmacron + llinebelow + lslash + mdotbelow + nacute + ncaron + ntilde + ncommaaccent + ndotaccent + napostrophe + ndotbelow + nlinebelow + ograve + oacute + ocircumflex + otilde + odieresis + omacron + ohungarumlaut + ocaron + ocircumflexacute + ocircumflexdotbelow + ocircumflexgrave + ocircumflexhoi + ocircumflextilde + odotbelow + ohoi + ohorn + ohornacute + ohorndotbelow + ohorngrave + ohornhoi + ohorntilde + oslash + oe + racute + rcommaaccent + rcaron + rdotbelow + rdotbelowmacron + rlinebelow + sacute + scaron + scedilla + scommaaccent + scircumflex + sdotaccent + sdotbelow + longs + germandbls + tcaron + tcedilla + tcommaaccent + tdieresis + tdotbelow + tlinebelow + ugrave + uacute + ucircumflex + udieresis + umacron + uring + uhungarumlaut + uogonek + ubreve + ucaron + udieresisacute + udieresiscaron + udieresisgrave + udieresismacron + udotbelow + uhoi + uhorn + uhornacute + uhorndotbelow + uhorngrave + uhornhoi + uhorntilde + utilde + wacute + wcircumflex + wdieresis + wgrave + yacute + ydieresis + ycircumflex + ydotaccent + ydotbelow + ygrave + yhoi + ytilde + zacute + zcaron + zdotaccent + zdotbelow + eth + thorn + schwa + alphalatin + gscript + f_i + f_l + f_t + f_f + f_f_i + f_f_l + Macute + macute + Ngrave + ngrave + Obreve + obreve + exclamdown + exclamdown.cap + questiondown + questiondown.cap + + LATIN.sc + + A.sc + B.sc + C.sc + D.sc + E.sc + F.sc + G.sc + H.sc + I.sc + J.sc + K.sc + L.sc + M.sc + N.sc + O.sc + P.sc + Q.sc + R.sc + S.sc + T.sc + U.sc + V.sc + W.sc + X.sc + Y.sc + Z.sc + Agrave.sc + Aacute.sc + Acircumflex.sc + Atilde.sc + Adieresis.sc + Amacron.sc + Abreve.sc + Abreveacute.sc + Abrevedotbelow.sc + Abrevegrave.sc + Abrevehoi.sc + Abrevetilde.sc + Acaron.sc + Acircumflexacute.sc + Acircumflexdotbelow.sc + Acircumflexgrave.sc + Acircumflexhoi.sc + Acircumflextilde.sc + Adotbelow.sc + Ahoi.sc + Aring.sc + Aogonek.sc + AE.sc + Ccedilla.sc + Cacute.sc + Ccaron.sc + Ccircumflex.sc + Cdotaccent.sc + Dcaron.sc + Dcroat.sc + Ddotbelow.sc + Dlinebelow.sc + Egrave.sc + Eacute.sc + Ecircumflex.sc + Ecaron.sc + Edieresis.sc + Emacron.sc + Edotaccent.sc + Eogonek.sc + Ebreve.sc + Ecircumflexacute.sc + Ecircumflexdotbelow.sc + Ecircumflexgrave.sc + Ecircumflexhoi.sc + Ecircumflextilde.sc + Edotbelow.sc + Ehoi.sc + Etilde.sc + Gbreve.sc + Gdotaccent.sc + Gcommaaccent.sc + Gcaron.sc + Gcircumflex.sc + Gmacron.sc + Gtilde.sc + Hbar.sc + Hbrevebelow.sc + Hcircumflex.sc + Hdotbelow.sc + Igrave.sc + Iacute.sc + Icircumflex.sc + Idieresis.sc + Imacron.sc + Idotaccent.sc + Iogonek.sc + Icaron.sc + Idotbelow.sc + Ihoi.sc + Itilde.sc + Jcircumflex.sc + Kcommaaccent.sc + Lacute.sc + Lcaron.sc + Lcommaaccent.sc + Ldot.sc + Ldotbelow.sc + Ldotbelowmacron.sc + Llinebelow.sc + Lslash.sc + Mdotbelow.sc + Nacute.sc + Ncaron.sc + Ntilde.sc + Ncommaaccent.sc + Ndotaccent.sc + Ndotbelow.sc + Nlinebelow.sc + Ograve.sc + Oacute.sc + Ocircumflex.sc + Otilde.sc + Odieresis.sc + Omacron.sc + Ohungarumlaut.sc + Ocaron.sc + Ocircumflexacute.sc + Ocircumflexdotbelow.sc + Ocircumflexgrave.sc + Ocircumflexhoi.sc + Ocircumflextilde.sc + Odotbelow.sc + Ohoi.sc + Ohorn.sc + Ohornacute.sc + Ohorndotbelow.sc + Ohorngrave.sc + Ohornhoi.sc + Ohorntilde.sc + Oslash.sc + OE.sc + Racute.sc + Rcaron.sc + Rcommaaccent.sc + Rdotbelow.sc + Rdotbelowmacron.sc + Rlinebelow.sc + Sacute.sc + Scaron.sc + Scedilla.sc + Scommaaccent.sc + Scircumflex.sc + Sdotaccent.sc + Sdotbelow.sc + Germandbls.sc + Tcaron.sc + Tcedilla.sc + Tcommaaccent.sc + Tdotbelow.sc + Tlinebelow.sc + Ugrave.sc + Uacute.sc + Ucircumflex.sc + Udieresis.sc + Umacron.sc + Uring.sc + Uhungarumlaut.sc + Uogonek.sc + Ubreve.sc + Ucaron.sc + Udieresisacute.sc + Udieresiscaron.sc + Udieresisgrave.sc + Udieresismacron.sc + Udotbelow.sc + Uhoi.sc + Uhorn.sc + Uhornacute.sc + Uhorndotbelow.sc + Uhorngrave.sc + Uhornhoi.sc + Uhorntilde.sc + Utilde.sc + Wacute.sc + Wcircumflex.sc + Wdieresis.sc + Wgrave.sc + Yacute.sc + Ydieresis.sc + Ycircumflex.sc + Ydotaccent.sc + Ydotbelow.sc + Ygrave.sc + Yhoi.sc + Ytilde.sc + Zacute.sc + Zcaron.sc + Zdotaccent.sc + Zdotbelow.sc + Eth.sc + Thorn.sc + Schwa.sc + germandbls.sc + tdieresis.sc + f_i.sc + f_l.sc + Macute.sc + Ngrave.sc + Obreve.sc + exclamdown.sc + questiondown.sc + + cap_punc + + hyphen.cap + endash.cap + emdash.cap + parenleft.cap + bracketleft.cap + braceleft.cap + parenright.cap + bracketright.cap + braceright.cap + guillemotleft.cap + guilsinglleft.cap + guillemotright.cap + guilsinglright.cap + at.cap + exclamdown.cap + questiondown.cap + horizontalbar.cap + + currency + + dollar + cent + sterling + yen + Euro + liraturkish + rupeeindian + florin + colonmonetary + lira + naira + peseta + won + dong + peso + guarani + hryvnia + cedi + ruble + bitcoin + + fig_lf + + zero.lf + one.lf + two.lf + three.lf + four.lf + five.lf + six.lf + seven.lf + eight.lf + nine.lf + zero + one + two + three + four + five + six + seven + eight + nine + + fig_lf.sc + + zero.sc + one.sc + two.sc + three.sc + four.sc + five.sc + six.sc + seven.sc + eight.sc + nine.sc + + fig_osf + + eight.osf + five.osf + four.osf + nine.osf + one.osf + seven.osf + six.osf + three.osf + two.osf + zero.osf + zero.tosf + one.tosf + two.tosf + three.tosf + four.tosf + five.tosf + six.tosf + seven.tosf + eight.tosf + nine.tosf + + fig_prop + + eight.osf + five.osf + four.osf + nine.osf + one.osf + seven.osf + six.osf + three.osf + two.osf + zero.osf + zero.lf + one.lf + two.lf + three.lf + four.lf + five.lf + six.lf + seven.lf + eight.lf + nine.lf + + lc + + a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + t + u + v + w + x + y + z + germandbls + agrave + aacute + acircumflex + atilde + adieresis + aring + ae + ccedilla + egrave + eacute + ecircumflex + edieresis + igrave + iacute + icircumflex + idieresis + eth + ntilde + ograve + oacute + ocircumflex + otilde + odieresis + oslash + ugrave + uacute + ucircumflex + udieresis + yacute + thorn + ydieresis + amacron + abreve + aogonek + cacute + ccircumflex + cdotaccent + ccaron + dcaron + dcroat + emacron + ebreve + edotaccent + eogonek + ecaron + gcircumflex + gbreve + gdotaccent + gcommaaccent + hcircumflex + hbar + itilde + imacron + iogonek + dotlessi + jcircumflex + kcommaaccent + kgreenlandic + lacute + lcommaaccent + lcaron + ldot + lslash + nacute + ncommaaccent + ncaron + napostrophe + omacron + obreve + ohungarumlaut + oe + racute + rcommaaccent + rcaron + sacute + scircumflex + scedilla + scaron + tcedilla + tcaron + utilde + umacron + ubreve + uring + uhungarumlaut + uogonek + wcircumflex + ycircumflex + zacute + zdotaccent + zcaron + longs + florin + ohorn + uhorn + acaron + icaron + ocaron + ucaron + udieresismacron + udieresisacute + udieresiscaron + udieresisgrave + gcaron + ngrave + scommaaccent + tcommaaccent + dotlessj + alphalatin + schwa + gscript + iotadieresistonos + alphatonos + epsilontonos + etatonos + iotatonos + upsilondieresistonos + alpha + beta + gamma + delta + epsilon + zeta + eta + theta + iota + kappa + lambda + mu + nu + xi + omicron + pi + rho + sigma.end + sigma + tau + upsilon + phi + chi + psi + omega + iotadieresis + upsilondieresis + omicrontonos + upsilontonos + omegatonos + kai + koppa + stigma + digamma + sampi + acyr + be + ve + ghe + de + ie + zhe + ze + icyr + ishort + ka + el + em + en + ocyr + pe + er + es + te + ucyr + ef + ha + tse + che + sha + shcha + hard + yeru + soft + ecyr + yu + ya + iegrave + io + dje + gje + ieukran + dze + iukran + yi + je + lje + nje + tshe + kje + igravecyr + ushort + dzhe + yat + fita + izhitsa + gheup + ghestroke + zhedescender + zedescender + kadescender + kabashkir + endescender + esdescender + ustraight + ustraightstroke + hadescender + chedescender + shha + zhebreve + palochka + abrevecyr + aie + iebreve + schwacyr + imacroncyr + odieresiscyr + obarcyr + umacroncyr + uacutedblcyr + ddotbelow + dlinebelow + gmacron + hdotbelow + hbrevebelow + ldotbelow + ldotbelowmacron + llinebelow + macute + mdotbelow + ndotaccent + ndotbelow + nlinebelow + rdotbelow + rdotbelowmacron + rlinebelow + sdotaccent + sdotbelow + tdotbelow + tlinebelow + wgrave + wacute + wdieresis + ydotaccent + zdotbelow + tdieresis + adotbelow + ahoi + acircumflexacute + acircumflexgrave + acircumflexhoi + acircumflextilde + acircumflexdotbelow + abreveacute + abrevegrave + abrevehoi + abrevetilde + abrevedotbelow + edotbelow + ehoi + etilde + ecircumflexacute + ecircumflexgrave + ecircumflexhoi + ecircumflextilde + ecircumflexdotbelow + ihoi + idotbelow + odotbelow + ohoi + ocircumflexacute + ocircumflexgrave + ocircumflexhoi + ocircumflextilde + ocircumflexdotbelow + ohornacute + ohorngrave + ohornhoi + ohorntilde + ohorndotbelow + udotbelow + uhoi + uhornacute + uhorngrave + uhornhoi + uhorntilde + uhorndotbelow + ygrave + ydotbelow + yhoi + ytilde + litre + f_f + f_i + f_l + f_f_i + f_f_l + be.srb + gtilde + i.trk + + lc.sc + + germandbls.sc + tdieresis.sc + f_i.sc + f_l.sc + + math + + plus + less + equal + greater + bar + asciitilde + logicalnot + plusminus + multiply + divide + minus + bulletoperator + approxequal + notequal + lessequal + greaterequal + + punc + + underscore + hyphen + figuredash + endash + emdash + parenleft + bracketleft + braceleft + quotesinglbase + quotedblbase + parenright + bracketright + braceright + guillemotleft + quoteleft + quotedblleft + guilsinglleft + guillemotright + quoteright + quotedblright + guilsinglright + exclam + quotedbl + numbersign + ampersand + quotesingle + asterisk + comma + period + slash + colon + semicolon + question + at + backslash + exclamdown + periodcentered + questiondown + dagger + daggerdbl + bullet + ellipsis + copyright + registered + trademark + servicemark + soundcopyright + horizontalbar + + punc.sc + + hyphen.sc + endash.sc + emdash.sc + parenleft.sc + bracketleft.sc + braceleft.sc + parenright.sc + bracketright.sc + braceright.sc + quoteleft.sc + quotedblleft.sc + quoteright.sc + quotedblright.sc + exclam.sc + quotedbl.sc + ampersand.sc + quotesingle.sc + question.sc + exclamdown.sc + questiondown.sc + + subs + + zero.subs + one.subs + two.subs + three.subs + four.subs + five.subs + six.subs + seven.subs + eight.subs + nine.subs + parenleft.subs + parenright.subs + comma.subs + period.subs + + sups + + a.sups + b.sups + c.sups + d.sups + e.sups + egrave.sups + eacute.sups + f.sups + g.sups + h.sups + i.sups + j.sups + k.sups + l.sups + m.sups + n.sups + o.sups + p.sups + q.sups + r.sups + s.sups + t.sups + u.sups + v.sups + w.sups + x.sups + y.sups + z.sups + zero.sups + one.sups + two.sups + three.sups + four.sups + five.sups + six.sups + seven.sups + eight.sups + nine.sups + hyphen.sups + endash.sups + emdash.sups + parenleft.sups + parenright.sups + comma.sups + period.sups + colon.sups + + uc + + A + B + C + D + E + F + G + H + I + J + K + L + M + N + O + P + Q + R + S + T + U + V + W + X + Y + Z + Agrave + Aacute + Acircumflex + Atilde + Adieresis + Aring + AE + Ccedilla + Egrave + Eacute + Ecircumflex + Edieresis + Igrave + Iacute + Icircumflex + Idieresis + Eth + Ntilde + Ograve + Oacute + Ocircumflex + Otilde + Odieresis + Oslash + Ugrave + Uacute + Ucircumflex + Udieresis + Yacute + Thorn + Amacron + Abreve + Aogonek + Cacute + Ccircumflex + Cdotaccent + Ccaron + Dcaron + Dcroat + Emacron + Ebreve + Edotaccent + Eogonek + Ecaron + Gcircumflex + Gbreve + Gdotaccent + Gcommaaccent + Hcircumflex + Hbar + Itilde + Imacron + Iogonek + Idotaccent + Jcircumflex + Kcommaaccent + Lacute + Lcommaaccent + Lcaron + Ldot + Lslash + Nacute + Ncommaaccent + Ncaron + Omacron + Obreve + Ohungarumlaut + OE + Racute + Rcommaaccent + Rcaron + Sacute + Scircumflex + Scedilla + Scaron + Tcedilla + Tcaron + Utilde + Umacron + Ubreve + Uring + Uhungarumlaut + Uogonek + Wcircumflex + Ycircumflex + Ydieresis + Zacute + Zdotaccent + Zcaron + Schwa + Ohorn + Uhorn + Acaron + Icaron + Ocaron + Ucaron + Udieresismacron + Udieresisacute + Udieresiscaron + Udieresisgrave + Gcaron + Ngrave + Scommaaccent + Tcommaaccent + Alphatonos + Epsilontonos + Etatonos + Iotatonos + Omicrontonos + Upsilontonos + Omegatonos + Alpha + Beta + Gamma + Delta + Epsilon + Zeta + Eta + Theta + Iota + Kappa + Lambda + Mu + Nu + Xi + Omicron + Pi + Rho + Sigma + Tau + Upsilon + Phi + Chi + Psi + Omega + Iotadieresis + Upsilondieresis + Iegrave + Io + Dje + Gje + Ieukran + Dze + Iukran + Yi + Je + Lje + Nje + Tshe + Kje + Igravecyr + Ushort + Dzhe + Acyr + Be + Ve + Ghe + De + Ie + Zhe + Ze + Icyr + Ishort + Ka + El + Em + En + Ocyr + Pe + Er + Es + Te + Ucyr + Ef + Ha + Tse + Che + Sha + Shcha + Hard + Yeru + Soft + Ecyr + Yu + Ya + Yat + Fita + Izhitsa + Gheup + Ghestroke + Zhedescender + Zedescender + Kadescender + Kabashkir + Endescender + Esdescender + Ustraight + Ustraightstroke + Hadescender + Chedescender + Shha + Palochka + Zhebreve + Abrevecyr + Aie + Iebreve + Schwacyr + Imacroncyr + Odieresiscyr + Obarcyr + Umacroncyr + Uacutedblcyr + Ddotbelow + Dlinebelow + Gmacron + Hdotbelow + Hbrevebelow + Ldotbelow + Ldotbelowmacron + Llinebelow + Macute + Mdotbelow + Ndotaccent + Ndotbelow + Nlinebelow + Rdotbelow + Rdotbelowmacron + Rlinebelow + Sdotaccent + Sdotbelow + Tdotbelow + Tlinebelow + Wgrave + Wacute + Wdieresis + Ydotaccent + Zdotbelow + Germandbls + Adotbelow + Ahoi + Acircumflexacute + Acircumflexgrave + Acircumflexhoi + Acircumflextilde + Acircumflexdotbelow + Abreveacute + Abrevegrave + Abrevehoi + Abrevetilde + Abrevedotbelow + Edotbelow + Ehoi + Etilde + Ecircumflexacute + Ecircumflexgrave + Ecircumflexhoi + Ecircumflextilde + Ecircumflexdotbelow + Ihoi + Idotbelow + Odotbelow + Ohoi + Ocircumflexacute + Ocircumflexgrave + Ocircumflexhoi + Ocircumflextilde + Ocircumflexdotbelow + Ohornacute + Ohorngrave + Ohornhoi + Ohorntilde + Ohorndotbelow + Udotbelow + Uhoi + Uhornacute + Uhorngrave + Uhornhoi + Uhorntilde + Uhorndotbelow + Ygrave + Ydotbelow + Yhoi + Ytilde + Gtilde + + uc.sc + + A.sc + B.sc + C.sc + D.sc + E.sc + F.sc + G.sc + H.sc + I.sc + J.sc + K.sc + L.sc + M.sc + N.sc + O.sc + P.sc + Q.sc + R.sc + S.sc + T.sc + U.sc + V.sc + W.sc + X.sc + Y.sc + Z.sc + Agrave.sc + Aacute.sc + Acircumflex.sc + Atilde.sc + Adieresis.sc + Aring.sc + AE.sc + Ccedilla.sc + Egrave.sc + Eacute.sc + Ecircumflex.sc + Edieresis.sc + Igrave.sc + Iacute.sc + Icircumflex.sc + Idieresis.sc + Eth.sc + Ntilde.sc + Ograve.sc + Oacute.sc + Ocircumflex.sc + Otilde.sc + Odieresis.sc + Oslash.sc + Ugrave.sc + Uacute.sc + Ucircumflex.sc + Udieresis.sc + Yacute.sc + Thorn.sc + Amacron.sc + Abreve.sc + Aogonek.sc + Cacute.sc + Ccircumflex.sc + Cdotaccent.sc + Ccaron.sc + Dcaron.sc + Dcroat.sc + Emacron.sc + Ebreve.sc + Edotaccent.sc + Eogonek.sc + Ecaron.sc + Gcircumflex.sc + Gbreve.sc + Gdotaccent.sc + Gcommaaccent.sc + Hcircumflex.sc + Hbar.sc + Itilde.sc + Imacron.sc + Iogonek.sc + Idotaccent.sc + Jcircumflex.sc + Kcommaaccent.sc + Lacute.sc + Lcommaaccent.sc + Lcaron.sc + Ldot.sc + Lslash.sc + Nacute.sc + Ncommaaccent.sc + Ncaron.sc + Omacron.sc + Obreve.sc + Ohungarumlaut.sc + OE.sc + Racute.sc + Rcommaaccent.sc + Rcaron.sc + Sacute.sc + Scircumflex.sc + Scedilla.sc + Scaron.sc + Tcedilla.sc + Tcaron.sc + Utilde.sc + Umacron.sc + Ubreve.sc + Uring.sc + Uhungarumlaut.sc + Uogonek.sc + Wcircumflex.sc + Ycircumflex.sc + Ydieresis.sc + Zacute.sc + Zdotaccent.sc + Zcaron.sc + Schwa.sc + Ohorn.sc + Uhorn.sc + Acaron.sc + Icaron.sc + Ocaron.sc + Ucaron.sc + Udieresismacron.sc + Udieresisacute.sc + Udieresiscaron.sc + Udieresisgrave.sc + Gcaron.sc + Ngrave.sc + Scommaaccent.sc + Tcommaaccent.sc + Alpha.sc + Beta.sc + Gamma.sc + Delta.sc + Epsilon.sc + Zeta.sc + Eta.sc + Theta.sc + Iota.sc + Kappa.sc + Lambda.sc + Mu.sc + Nu.sc + Xi.sc + Omicron.sc + Pi.sc + Rho.sc + Sigma.sc + Tau.sc + Upsilon.sc + Phi.sc + Chi.sc + Psi.sc + Omega.sc + Iotadieresis.sc + Upsilondieresis.sc + Iegrave.sc + Io.sc + Dje.sc + Gje.sc + Ieukran.sc + Dze.sc + Iukran.sc + Yi.sc + Je.sc + Lje.sc + Nje.sc + Tshe.sc + Kje.sc + Igravecyr.sc + Ushort.sc + Dzhe.sc + Acyr.sc + Be.sc + Ve.sc + Ghe.sc + De.sc + Ie.sc + Zhe.sc + Ze.sc + Icyr.sc + Ishort.sc + Ka.sc + El.sc + Em.sc + En.sc + Ocyr.sc + Pe.sc + Er.sc + Es.sc + Te.sc + Ucyr.sc + Ef.sc + Ha.sc + Tse.sc + Che.sc + Sha.sc + Shcha.sc + Hard.sc + Yeru.sc + Soft.sc + Ecyr.sc + Yu.sc + Ya.sc + Yat.sc + Fita.sc + Izhitsa.sc + Gheup.sc + Ghestroke.sc + Zhedescender.sc + Zedescender.sc + Kadescender.sc + Kabashkir.sc + Endescender.sc + Esdescender.sc + Ustraight.sc + Ustraightstroke.sc + Hadescender.sc + Chedescender.sc + Shha.sc + Palochka.sc + Zhebreve.sc + Abrevecyr.sc + Aie.sc + Iebreve.sc + Schwacyr.sc + Imacroncyr.sc + Odieresiscyr.sc + Obarcyr.sc + Umacroncyr.sc + Uacutedblcyr.sc + Ddotbelow.sc + Dlinebelow.sc + Gmacron.sc + Hdotbelow.sc + Hbrevebelow.sc + Ldotbelow.sc + Ldotbelowmacron.sc + Llinebelow.sc + Macute.sc + Mdotbelow.sc + Ndotaccent.sc + Ndotbelow.sc + Nlinebelow.sc + Rdotbelow.sc + Rdotbelowmacron.sc + Rlinebelow.sc + Sdotaccent.sc + Sdotbelow.sc + Tdotbelow.sc + Tlinebelow.sc + Wgrave.sc + Wacute.sc + Wdieresis.sc + Ydotaccent.sc + Zdotbelow.sc + Germandbls.sc + Adotbelow.sc + Ahoi.sc + Acircumflexacute.sc + Acircumflexgrave.sc + Acircumflexhoi.sc + Acircumflextilde.sc + Acircumflexdotbelow.sc + Abreveacute.sc + Abrevegrave.sc + Abrevehoi.sc + Abrevetilde.sc + Abrevedotbelow.sc + Edotbelow.sc + Ehoi.sc + Etilde.sc + Ecircumflexacute.sc + Ecircumflexgrave.sc + Ecircumflexhoi.sc + Ecircumflextilde.sc + Ecircumflexdotbelow.sc + Ihoi.sc + Idotbelow.sc + Odotbelow.sc + Ohoi.sc + Ocircumflexacute.sc + Ocircumflexgrave.sc + Ocircumflexhoi.sc + Ocircumflextilde.sc + Ocircumflexdotbelow.sc + Ohornacute.sc + Ohorngrave.sc + Ohornhoi.sc + Ohorntilde.sc + Ohorndotbelow.sc + Udotbelow.sc + Uhoi.sc + Uhornacute.sc + Uhorngrave.sc + Uhornhoi.sc + Uhorntilde.sc + Uhorndotbelow.sc + Ygrave.sc + Ydotbelow.sc + Yhoi.sc + Ytilde.sc + Gtilde.sc + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/layercontents.plist b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/layercontents.plist new file mode 100644 index 000000000..b07680883 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/layercontents.plist @@ -0,0 +1,14 @@ + + + + + + public.default + glyphs + + + com.adobe.type.processedglyphs + glyphs.com.adobe.type.processedglyphs + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/lib.plist b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/lib.plist new file mode 100644 index 000000000..638f48730 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/lib.plist @@ -0,0 +1,2070 @@ + + + + + public.glyphOrder + + Agrave + Aacute + Acircumflex + Atilde + Adieresis + Amacron + Abreve + Abreveacute + Abrevedotbelow + Abrevegrave + Abrevehoi + Abrevetilde + Acaron + Acircumflexacute + Acircumflexdotbelow + Acircumflexgrave + Acircumflexhoi + Acircumflextilde + Adotbelow + Ahoi + Aring + Aogonek + AE + Ccedilla + Cacute + Ccaron + Ccircumflex + Cdotaccent + Dcaron + Dcroat + Ddotbelow + Dlinebelow + Egrave + Eacute + Ecircumflex + Ecaron + Edieresis + Emacron + Edotaccent + Eogonek + Ebreve + Ecircumflexacute + Ecircumflexdotbelow + Ecircumflexgrave + Ecircumflexhoi + Ecircumflextilde + Edotbelow + Ehoi + Etilde + Gbreve + Gdotaccent + Gcommaaccent + Gcaron + Gcircumflex + Gmacron + Hbar + Hbrevebelow + Hcircumflex + Hdotbelow + Igrave + Iacute + Icircumflex + Idieresis + Imacron + Idotaccent + Iogonek + Icaron + Idotbelow + Ihoi + Itilde + Jcircumflex + Kcommaaccent + Lacute + Lcaron + Lcommaaccent + Ldot + Ldotbelow + Ldotbelowmacron + Llinebelow + Lslash + Macute + Mdotbelow + Nacute + Ncaron + Ngrave + Ntilde + Ncommaaccent + Ndotaccent + Ndotbelow + Nlinebelow + Ograve + Oacute + Obreve + Ocircumflex + Otilde + Odieresis + Omacron + Ohungarumlaut + Ocaron + Ocircumflexacute + Ocircumflexdotbelow + Ocircumflexgrave + Ocircumflexhoi + Ocircumflextilde + Odotbelow + Ohoi + Ohorn + Ohornacute + Ohorndotbelow + Ohorngrave + Ohornhoi + Ohorntilde + Oslash + OE + Racute + Rcaron + Rcommaaccent + Rdotbelow + Rdotbelowmacron + Rlinebelow + Sacute + Scaron + Scedilla + Scommaaccent + Scircumflex + Sdotaccent + Sdotbelow + Germandbls + Tcaron + Tcedilla + Tcommaaccent + Tdotbelow + Tlinebelow + Ugrave + Uacute + Ucircumflex + Udieresis + Umacron + Uring + Uhungarumlaut + Uogonek + Ubreve + Ucaron + Udieresisacute + Udieresiscaron + Udieresisgrave + Udieresismacron + Udotbelow + Uhoi + Uhorn + Uhornacute + Uhorndotbelow + Uhorngrave + Uhornhoi + Uhorntilde + Utilde + Wacute + Wcircumflex + Wdieresis + Wgrave + Yacute + Ydieresis + Ycircumflex + Ydotaccent + Ydotbelow + Ygrave + Yhoi + Ytilde + Zacute + Zcaron + Zdotaccent + Zdotbelow + Eth + Thorn + Schwa + agrave + aacute + acircumflex + atilde + adieresis + amacron + abreve + abreveacute + abrevedotbelow + abrevegrave + abrevehoi + abrevetilde + acaron + acircumflexacute + acircumflexdotbelow + acircumflexgrave + acircumflexhoi + acircumflextilde + adotbelow + ahoi + aring + aogonek + ae + ccedilla + cacute + ccaron + ccircumflex + cdotaccent + dcaron + dcroat + ddotbelow + dlinebelow + egrave + eacute + ecircumflex + ecaron + edieresis + emacron + edotaccent + eogonek + ebreve + ecircumflexacute + ecircumflexdotbelow + ecircumflexgrave + ecircumflexhoi + ecircumflextilde + edotbelow + ehoi + etilde + gbreve + gdotaccent + gcommaaccent + gcaron + gcircumflex + gmacron + hbar + hbrevebelow + hcircumflex + hdotbelow + igrave + iacute + icircumflex + idieresis + imacron + iogonek + icaron + idotbelow + ihoi + itilde + dotlessi + dotlessj + jcircumflex + kcommaaccent + kgreenlandic + lacute + lcaron + lcommaaccent + ldot + ldotbelow + ldotbelowmacron + llinebelow + lslash + macute + mdotbelow + nacute + ncaron + ngrave + ntilde + ncommaaccent + ndotaccent + napostrophe + ndotbelow + nlinebelow + ograve + oacute + obreve + ocircumflex + otilde + odieresis + omacron + ohungarumlaut + ocaron + ocircumflexacute + ocircumflexdotbelow + ocircumflexgrave + ocircumflexhoi + ocircumflextilde + odotbelow + ohoi + ohorn + ohornacute + ohorndotbelow + ohorngrave + ohornhoi + ohorntilde + oslash + oe + racute + rcommaaccent + rcaron + rdotbelow + rdotbelowmacron + rlinebelow + sacute + scaron + scedilla + scommaaccent + scircumflex + sdotaccent + sdotbelow + longs + germandbls + tcaron + tcedilla + tcommaaccent + tdieresis + tdotbelow + tlinebelow + ugrave + uacute + ucircumflex + udieresis + umacron + uring + uhungarumlaut + uogonek + ubreve + ucaron + udieresisacute + udieresiscaron + udieresisgrave + udieresismacron + udotbelow + uhoi + uhorn + uhornacute + uhorndotbelow + uhorngrave + uhornhoi + uhorntilde + utilde + wacute + wcircumflex + wdieresis + wgrave + yacute + ydieresis + ycircumflex + ydotaccent + ydotbelow + ygrave + yhoi + ytilde + zacute + zcaron + zdotaccent + zdotbelow + eth + thorn + schwa + alphalatin + gscript + f_i + f_l + f_f + f_f_i + f_f_l + ellipsis + exclamdown + questiondown + quoteleft + quoteright + quotedblleft + quotedblright + quotesinglbase + quotedblbase + guilsinglleft + guilsinglright + guillemotleft + guillemotright + endash + emdash + figuredash + horizontalbar + periodcentered + bullet + brokenbar + dagger + daggerdbl + section + paragraph + copyright + soundcopyright + registered + trademark + servicemark + zero.sups + one.sups + two.sups + three.sups + four.sups + five.sups + six.sups + seven.sups + eight.sups + nine.sups + parenleft.sups + parenright.sups + zero.subs + one.subs + two.subs + three.subs + four.subs + five.subs + six.subs + seven.subs + eight.subs + nine.subs + parenleft.subs + parenright.subs + ordfeminine + ordmasculine + a.sups + b.sups + c.sups + d.sups + e.sups + f.sups + g.sups + h.sups + i.sups + j.sups + k.sups + l.sups + m.sups + n.sups + o.sups + p.sups + r.sups + s.sups + t.sups + u.sups + v.sups + w.sups + x.sups + y.sups + z.sups + degree + currency + cent + sterling + yen + florin + colonmonetary + lira + naira + peseta + won + dong + Euro + tugrik + peso + guarani + hryvnia + cedi + rupeeindian + liraturkish + tenge + ruble + bitcoin + fraction + divisionslash + figurespace + perthousand + onequarter + onehalf + threequarters + onethird + twothirds + oneeighth + threeeighths + fiveeighths + seveneighths + minus + multiply + divide + bulletoperator + lessequal + greaterequal + plusminus + notequal + approxequal + logicalnot + infinity + partialdiff + integral + radical + summation + product + litre + estimated + arrowleft + arrowupleft + arrowup + arrowupright + arrowright + arrowdownright + arrowdown + arrowdownleft + squareblack + diamondblack + fisheye + squareshadow + triangleblackup + trianglewhiteup + triangleblackright + trianglewhiteright + triangleblackdown + trianglewhitedown + triangleblackleft + trianglewhiteleft + checkbox + checkedbox + check + eighthnote + lozenge + prime + dblprime + ringhalfleftmod + ringhalfrightmod + verticallinemod + macronmod + verticallinelowmod + acute + circumflex + caron + tilde + dieresis + breve + ring + hungarumlaut + dotaccent + cedilla + ogonek + gravecmb + acutecmb + circumflexcmb + tildecmb + macroncmb + brevecmb + dotaccentcmb + dieresiscmb + ringcmb + hungarumlautcmb + caroncmb + commabelowcmb + cedillacmb + ogonekcmb + verticallinebelowcmb + brevebelowcmb + dieresisbelowcmb + dotbelowcmb + hoicmb + horncmb + macronbelowcmb + Alpha + Beta + Gamma + Delta + Epsilon + Zeta + Eta + Theta + Iota + Kappa + Lambda + Mu + Nu + Xi + Omicron + Pi + Rho + Sigma + Tau + Upsilon + Phi + Chi + Psi + Omega + Alphatonos + Epsilontonos + Etatonos + Iotatonos + Iotadieresis + Omicrontonos + Upsilontonos + Upsilondieresis + Omegatonos + alpha + beta + gamma + delta + epsilon + zeta + eta + theta + iota + kappa + lambda + mu + nu + xi + omicron + pi + rho + sigma + tau + upsilon + phi + chi + psi + omega + sigma.end + alphatonos + epsilontonos + etatonos + iotatonos + iotadieresis + omicrontonos + upsilontonos + upsilondieresis + omegatonos + iotadieresistonos + upsilondieresistonos + kai + koppa + stigma + digamma + sampi + questiongreek + anoteleia + numeralsign + lownumeralsign + tonos + dieresistonos + Acyr + Be + Ve + Ghe + De + Ie + Zhe + Ze + Icyr + Ishort + Ka + El + Em + En + Ocyr + Pe + Er + Es + Te + Ucyr + Ef + Ha + Tse + Che + Sha + Shcha + Hard + Yeru + Soft + Ecyr + Yu + Ya + Iegrave + Io + Dje + Gje + Ieukran + Dze + Iukran + Yi + Je + Lje + Nje + Tshe + Kje + Igravecyr + Ushort + Dzhe + Yat + Fita + Izhitsa + Gheup + Ghestroke + Zhedescender + Zedescender + Kadescender + Kabashkir + Endescender + Esdescender + Ustraight + Ustraightstroke + Hadescender + Chedescender + Shha + Palochka + Zhebreve + Abrevecyr + Aie + Iebreve + Schwacyr + Imacroncyr + Odieresiscyr + Obarcyr + Umacroncyr + Uacutedblcyr + acyr + be + ve + ghe + de + ie + zhe + ze + icyr + ishort + ka + el + em + en + ocyr + pe + er + es + te + ucyr + ef + ha + tse + che + sha + shcha + hard + yeru + soft + ecyr + yu + ya + iegrave + io + dje + gje + ieukran + dze + iukran + yi + je + lje + nje + tshe + kje + igravecyr + ushort + dzhe + yat + fita + izhitsa + gheup + ghestroke + zhedescender + zedescender + kadescender + kabashkir + endescender + esdescender + ustraight + ustraightstroke + hadescender + chedescender + shha + zhebreve + palochka + abrevecyr + aie + iebreve + schwacyr + imacroncyr + odieresiscyr + obarcyr + umacroncyr + uacutedblcyr + numero + twoemdash + threeemdash + copyleft + commercemark + deposeemark + twodotenleader + exclamdbl + questiondbl + questionexclam + exclamquestion + IJ + ij + Eng + eng + Tbar + tbar + colontriangularmod + triangularbullet + overline + similar + dngb:cross + + public.postscriptNames + + Abreveacute + uni1EAE + Abreveacute.sc + uni1EAE.sc + Abrevecyr + uni04D0 + Abrevecyr.sc + uni04D0.sc + Abrevedotbelow + uni1EB6 + Abrevedotbelow.sc + uni1EB6.sc + Abrevegrave + uni1EB0 + Abrevegrave.sc + uni1EB0.sc + Abrevehoi + uni1EB2 + Abrevehoi.sc + uni1EB2.sc + Abrevetilde + uni1EB4 + Abrevetilde.sc + uni1EB4.sc + Acaron + uni01CD + Acaron.sc + uni01CD.sc + Acircumflexacute + uni1EA4 + Acircumflexacute.sc + uni1EA4.sc + Acircumflexdotbelow + uni1EAC + Acircumflexdotbelow.sc + uni1EAC.sc + Acircumflexgrave + uni1EA6 + Acircumflexgrave.sc + uni1EA6.sc + Acircumflexhoi + uni1EA8 + Acircumflexhoi.sc + uni1EA8.sc + Acircumflextilde + uni1EAA + Acircumflextilde.sc + uni1EAA.sc + Acyr + uni0410 + Acyr.sc + uni0410.sc + Adotbelow + uni1EA0 + Adotbelow.sc + uni1EA0.sc + Ahoi + uni1EA2 + Ahoi.sc + uni1EA2.sc + Aie + uni04D4 + Aie.sc + uni04D4.sc + Be + uni0411 + Be.sc + uni0411.sc + Che + uni0427 + Che.sc + uni0427.sc + Chedescender + uni04B6 + Chedescender.sc + uni04B6.sc + Ddotbelow + uni1E0C + Ddotbelow.sc + uni1E0C.sc + De + uni0414 + De.sc + uni0414.sc + Delta + uni0394 + Delta.math + uni2206 + Dje + uni0402 + Dje.sc + uni0402.sc + Dlinebelow + uni1E0E + Dlinebelow.sc + uni1E0E.sc + Dze + uni0405 + Dze.sc + uni0405.sc + Dzhe + uni040F + Dzhe.sc + uni040F.sc + Ecircumflexacute + uni1EBE + Ecircumflexacute.sc + uni1EBE.sc + Ecircumflexdotbelow + uni1EC6 + Ecircumflexdotbelow.sc + uni1EC6.sc + Ecircumflexgrave + uni1EC0 + Ecircumflexgrave.sc + uni1EC0.sc + Ecircumflexhoi + uni1EC2 + Ecircumflexhoi.sc + uni1EC2.sc + Ecircumflextilde + uni1EC4 + Ecircumflextilde.sc + uni1EC4.sc + Ecyr + uni042D + Ecyr.sc + uni042D.sc + Edotbelow + uni1EB8 + Edotbelow.sc + uni1EB8.sc + Ef + uni0424 + Ef.sc + uni0424.sc + Ehoi + uni1EBA + Ehoi.sc + uni1EBA.sc + El + uni041B + El.sc + uni041B.sc + Em + uni041C + Em.sc + uni041C.sc + En + uni041D + En.sc + uni041D.sc + Endescender + uni04A2 + Endescender.sc + uni04A2.sc + Er + uni0420 + Er.sc + uni0420.sc + Es + uni0421 + Es.sc + uni0421.sc + Esdescender + uni04AA + Esdescender.sc + uni04AA.sc + Etilde + uni1EBC + Etilde.sc + uni1EBC.sc + Fita + uni0472 + Fita.sc + uni0472.sc + Gcommaaccent + uni0122 + Gcommaaccent.sc + uni0122.sc + Germandbls + uni1E9E + Germandbls.sc + uni1E9E.sc + Ghe + uni0413 + Ghe.sc + uni0413.sc + Ghestroke + uni0492 + Ghestroke.sc + uni0492.sc + Gheup + uni0490 + Gheup.sc + uni0490.sc + Gje + uni0403 + Gje.sc + uni0403.sc + Gmacron + uni1E20 + Gmacron.sc + uni1E20.sc + Gtilde + uni00470303 + Gtilde.sc + uni00470303.sc + Ha + uni0425 + Ha.sc + uni0425.sc + Hadescender + uni04B2 + Hadescender.sc + uni04B2.sc + Hard + uni042A + Hard.sc + uni042A.sc + Hbrevebelow + uni1E2A + Hbrevebelow.sc + uni1E2A.sc + Hdotbelow + uni1E24 + Hdotbelow.sc + uni1E24.sc + Icaron + uni01CF + Icaron.sc + uni01CF.sc + Icyr + uni0418 + Icyr.sc + uni0418.sc + Idotbelow + uni1ECA + Idotbelow.sc + uni1ECA.sc + Ie + uni0415 + Ie.sc + uni0415.sc + Iebreve + uni04D6 + Iebreve.sc + uni04D6.sc + Iegrave + uni0400 + Iegrave.sc + uni0400.sc + Ieukran + uni0404 + Ieukran.sc + uni0404.sc + Igravecyr + uni040D + Igravecyr.sc + uni040D.sc + Ihoi + uni1EC8 + Ihoi.sc + uni1EC8.sc + Imacroncyr + uni04E2 + Imacroncyr.sc + uni04E2.sc + Io + uni0401 + Io.sc + uni0401.sc + Ishort + uni0419 + Ishort.sc + uni0419.sc + Iukran + uni0406 + Iukran.sc + uni0406.sc + Izhitsa + uni0474 + Izhitsa.sc + uni0474.sc + Je + uni0408 + Je.sc + uni0408.sc + Ka + uni041A + Ka.sc + uni041A.sc + Kabashkir + uni04A0 + Kabashkir.sc + uni04A0.sc + Kadescender + uni049A + Kadescender.sc + uni049A.sc + Kcommaaccent + uni0136 + Kcommaaccent.sc + uni0136.sc + Kje + uni040C + Kje.sc + uni040C.sc + Lcommaaccent + uni013B + Lcommaaccent.sc + uni013B.sc + Ldotbelow + uni1E36 + Ldotbelow.sc + uni1E36.sc + Ldotbelowmacron + uni1E38 + Ldotbelowmacron.sc + uni1E38.sc + Lje + uni0409 + Lje.sc + uni0409.sc + Llinebelow + uni1E3A + Llinebelow.sc + uni1E3A.sc + Macute + uni1E3E + Macute.sc + uni1E3E.sc + Mdotbelow + uni1E42 + Mdotbelow.sc + uni1E42.sc + Ncommaaccent + uni0145 + Ncommaaccent.sc + uni0145.sc + Ndotaccent + uni1E44 + Ndotaccent.sc + uni1E44.sc + Ndotbelow + uni1E46 + Ndotbelow.sc + uni1E46.sc + Ngrave + uni01F8 + Ngrave.sc + uni01F8.sc + Nje + uni040A + Nje.sc + uni040A.sc + Nlinebelow + uni1E48 + Nlinebelow.sc + uni1E48.sc + Obarcyr + uni04E8 + Obarcyr.sc + uni04E8.sc + Obreve + uni014E + Obreve.sc + uni014E.sc + Ocaron + uni01D1 + Ocaron.sc + uni01D1.sc + Ocircumflexacute + uni1ED0 + Ocircumflexacute.sc + uni1ED0.sc + Ocircumflexdotbelow + uni1ED8 + Ocircumflexdotbelow.sc + uni1ED8.sc + Ocircumflexgrave + uni1ED2 + Ocircumflexgrave.sc + uni1ED2.sc + Ocircumflexhoi + uni1ED4 + Ocircumflexhoi.sc + uni1ED4.sc + Ocircumflextilde + uni1ED6 + Ocircumflextilde.sc + uni1ED6.sc + Ocyr + uni041E + Ocyr.sc + uni041E.sc + Odieresiscyr + uni04E6 + Odieresiscyr.sc + uni04E6.sc + Odotbelow + uni1ECC + Odotbelow.sc + uni1ECC.sc + Ohoi + uni1ECE + Ohoi.sc + uni1ECE.sc + Ohornacute + uni1EDA + Ohornacute.sc + uni1EDA.sc + Ohorndotbelow + uni1EE2 + Ohorndotbelow.sc + uni1EE2.sc + Ohorngrave + uni1EDC + Ohorngrave.sc + uni1EDC.sc + Ohornhoi + uni1EDE + Ohornhoi.sc + uni1EDE.sc + Ohorntilde + uni1EE0 + Ohorntilde.sc + uni1EE0.sc + Omega + uni03A9 + Omega.math + uni2126 + Palochka + uni04C0 + Palochka.sc + uni04C0.sc + Pe + uni041F + Pe.sc + uni041F.sc + Rcommaaccent + uni0156 + Rcommaaccent.sc + uni0156.sc + Rdotbelow + uni1E5A + Rdotbelow.sc + uni1E5A.sc + Rdotbelowmacron + uni1E5C + Rdotbelowmacron.sc + uni1E5C.sc + Rlinebelow + uni1E5E + Rlinebelow.sc + uni1E5E.sc + Scedilla + uni015E + Scedilla.sc + uni015E.sc + Schwa + uni018F + Schwa.sc + uni018F.sc + Schwacyr + uni04D8 + Schwacyr.sc + uni04D8.sc + Scommaaccent + uni0218 + Scommaaccent.sc + uni0218.sc + Sdotaccent + uni1E60 + Sdotaccent.sc + uni1E60.sc + Sdotbelow + uni1E62 + Sdotbelow.sc + uni1E62.sc + Sha + uni0428 + Sha.sc + uni0428.sc + Shcha + uni0429 + Shcha.sc + uni0429.sc + Shha + uni04BA + Shha.sc + uni04BA.sc + Soft + uni042C + Soft.sc + uni042C.sc + Tcedilla + uni0162 + Tcedilla.sc + uni0162.sc + Tcommaaccent + uni021A + Tcommaaccent.sc + uni021A.sc + Tdotbelow + uni1E6C + Tdotbelow.sc + uni1E6C.sc + Te + uni0422 + Te.sc + uni0422.sc + Tlinebelow + uni1E6E + Tlinebelow.sc + uni1E6E.sc + Tse + uni0426 + Tse.sc + uni0426.sc + Tshe + uni040B + Tshe.sc + uni040B.sc + Uacutedblcyr + uni04F2 + Uacutedblcyr.sc + uni04F2.sc + Ucaron + uni01D3 + Ucaron.sc + uni01D3.sc + Ucyr + uni0423 + Ucyr.sc + uni0423.sc + Udieresisacute + uni01D7 + Udieresisacute.sc + uni01D7.sc + Udieresiscaron + uni01D9 + Udieresiscaron.sc + uni01D9.sc + Udieresisgrave + uni01DB + Udieresisgrave.sc + uni01DB.sc + Udieresismacron + uni01D5 + Udieresismacron.sc + uni01D5.sc + Udotbelow + uni1EE4 + Udotbelow.sc + uni1EE4.sc + Uhoi + uni1EE6 + Uhoi.sc + uni1EE6.sc + Uhornacute + uni1EE8 + Uhornacute.sc + uni1EE8.sc + Uhorndotbelow + uni1EF0 + Uhorndotbelow.sc + uni1EF0.sc + Uhorngrave + uni1EEA + Uhorngrave.sc + uni1EEA.sc + Uhornhoi + uni1EEC + Uhornhoi.sc + uni1EEC.sc + Uhorntilde + uni1EEE + Uhorntilde.sc + uni1EEE.sc + Umacroncyr + uni04EE + Umacroncyr.sc + uni04EE.sc + Ushort + uni040E + Ushort.sc + uni040E.sc + Ustraight + uni04AE + Ustraight.sc + uni04AE.sc + Ustraightstroke + uni04B0 + Ustraightstroke.sc + uni04B0.sc + Ve + uni0412 + Ve.sc + uni0412.sc + Ya + uni042F + Ya.sc + uni042F.sc + Yat + uni0462 + Yat.sc + uni0462.sc + Ydotaccent + uni1E8E + Ydotaccent.sc + uni1E8E.sc + Ydotbelow + uni1EF4 + Ydotbelow.sc + uni1EF4.sc + Yeru + uni042B + Yeru.sc + uni042B.sc + Yhoi + uni1EF6 + Yhoi.sc + uni1EF6.sc + Yi + uni0407 + Yi.sc + uni0407.sc + Ytilde + uni1EF8 + Ytilde.sc + uni1EF8.sc + Yu + uni042E + Yu.sc + uni042E.sc + Zdotbelow + uni1E92 + Zdotbelow.sc + uni1E92.sc + Ze + uni0417 + Ze.sc + uni0417.sc + Zedescender + uni0498 + Zedescender.sc + uni0498.sc + Zhe + uni0416 + Zhe.sc + uni0416.sc + Zhebreve + uni04C1 + Zhebreve.sc + uni04C1.sc + Zhedescender + uni0496 + Zhedescender.sc + uni0496.sc + abreveacute + uni1EAF + abrevecyr + uni04D1 + abrevedotbelow + uni1EB7 + abrevegrave + uni1EB1 + abrevehoi + uni1EB3 + abrevetilde + uni1EB5 + acaron + uni01CE + acircumflexacute + uni1EA5 + acircumflexdotbelow + uni1EAD + acircumflexgrave + uni1EA7 + acircumflexhoi + uni1EA9 + acircumflextilde + uni1EAB + acutecmb + uni0301 + acutemod + uni02CA + acyr + uni0430 + adotbelow + uni1EA1 + ahoi + uni1EA3 + aie + uni04D5 + alphalatin + uni0251 + apostrophemod + uni02BC + arrowdownleft + uni2199 + arrowdownright + uni2198 + arrowleft + uni2190 + arrowright + uni2192 + arrowupleft + uni2196 + arrowupright + uni2197 + be + uni0431 + be.srb + uni0431.srb + bitcoin + uni20BF + breveacute + uni03060301 + breveacute.cap + uni03060301.cap + brevebelowcmb + uni032E + brevecmb + uni0306 + brevegrave + uni03060300 + brevegrave.cap + uni03060300.cap + brevehoi + uni03060309 + brevehoi.cap + uni03060309.cap + brevetilde + uni03060303 + brevetilde.cap + uni03060303.cap + bulletoperator + uni2219 + caroncmb + uni030C + cedi + uni20B5 + cedillacmb + uni0327 + che + uni0447 + check + uni2713 + checkbox + uni2610 + checkedbox + uni2611 + chedescender + uni04B7 + circumflexacute + uni03020301 + circumflexacute.cap + uni03020301.cap + circumflexcmb + uni0302 + circumflexgrave + uni03020300 + circumflexgrave.cap + uni03020300.cap + circumflexhoi + uni03020309 + circumflexhoi.cap + uni03020309.cap + circumflextilde + uni03020303 + circumflextilde.cap + uni03020303.cap + commabelowcmb + uni0326 + commaturnedmod + uni02BB + commercemark + u1F16A + copyleft + u1F12F + dblprime + uni2033 + ddotbelow + uni1E0D + de + uni0434 + deposeemark + u1F16B + diamondblack + uni25C6 + dieresisacute + uni03080301 + dieresisacute.cap + uni03080301.cap + dieresisbelowcmb + uni0324 + dieresiscaron + uni0308030C + dieresiscaron.cap + uni0308030C.cap + dieresiscmb + uni0308 + dieresisgrave + uni03080300 + dieresisgrave.cap + uni03080300.cap + dieresismacron + uni03080304 + dieresismacron.cap + uni03080304.cap + dieresistonoscmb + uni03080301.g + digamma + uni03DD + divisionslash + uni2215 + dje + uni0452 + dlinebelow + uni1E0F + dotaccentcmb + uni0307 + dotbelowcmb + uni0323 + dotlessj + uni0237 + dze + uni0455 + dzhe + uni045F + ecircumflexacute + uni1EBF + ecircumflexdotbelow + uni1EC7 + ecircumflexgrave + uni1EC1 + ecircumflexhoi + uni1EC3 + ecircumflextilde + uni1EC5 + ecyr + uni044D + edotbelow + uni1EB9 + ef + uni0444 + ehoi + uni1EBB + eighthnote + musicalnote + el + uni043B + em + uni043C + en + uni043D + endescender + uni04A3 + er + uni0440 + es + uni0441 + esdescender + uni04AB + etilde + uni1EBD + exclamquestion + uni2049 + figurespace + uni2007 + fisheye + uni25C9 + fita + uni0473 + florin + uni0192 + gcommaaccent + uni0123 + ghe + uni0433 + ghestroke + uni0493 + gheup + uni0491 + gje + uni0453 + gmacron + uni1E21 + gravecmb + uni0300 + gravemod + uni02CB + gscript + uni0261 + gtilde + uni00670303 + guarani + uni20B2 + ha + uni0445 + hadescender + uni04B3 + hard + uni044A + hbrevebelow + uni1E2B + hdotbelow + uni1E25 + hoicmb + uni0309 + hoicmb.cap + uni0309.cap + horizontalbar + uni2015 + horncmb + uni031B + hryvnia + uni20B4 + hungarumlautcmb + uni030B + hyphentwo + uni2010 + icaron + uni01D0 + icyr + uni0438 + idotbelow + uni1ECB + ie + uni0435 + iebreve + uni04D7 + iegrave + uni0450 + ieukran + uni0454 + igravecyr + uni045D + ihoi + uni1EC9 + imacroncyr + uni04E3 + io + uni0451 + ishort + uni0439 + iukran + uni0456 + izhitsa + uni0475 + je + uni0458 + ka + uni043A + kabashkir + uni04A1 + kadescender + uni049B + kai + uni03D7 + kcommaaccent + uni0137 + kje + uni045C + koppa + uni03D9 + lcommaaccent + uni013C + ldotbelow + uni1E37 + ldotbelowmacron + uni1E39 + liraturkish + uni20BA + litre + uni2113 + lje + uni0459 + llinebelow + uni1E3B + lownumeralsign + uni0375 + macronbelowcmb + uni0331 + macroncmb + uni0304 + macronmod + uni02C9 + macute + uni1E3F + mdotbelow + uni1E43 + mu + uni03BC + mu.math + uni00B5 + naira + uni20A6 + nbspace + uni00A0 + nbspace.frac + uni00A0.frac + ncommaaccent + uni0146 + ndotaccent + uni1E45 + ndotbelow + uni1E47 + ngrave + uni01F9 + nje + uni045A + nlinebelow + uni1E49 + numeralsign + uni0374 + numero + uni2116 + obarcyr + uni04E9 + obreve + uni014F + ocaron + uni01D2 + ocircumflexacute + uni1ED1 + ocircumflexdotbelow + uni1ED9 + ocircumflexgrave + uni1ED3 + ocircumflexhoi + uni1ED5 + ocircumflextilde + uni1ED7 + ocyr + uni043E + odieresiscyr + uni04E7 + odotbelow + uni1ECD + ogonekcmb + uni0328 + ohoi + uni1ECF + ohornacute + uni1EDB + ohorndotbelow + uni1EE3 + ohorngrave + uni1EDD + ohornhoi + uni1EDF + ohorntilde + uni1EE1 + palochka + uni04CF + pe + uni043F + peso + uni20B1 + prime + uni2032 + questiondbl + uni2047 + questionexclam + uni2048 + questiongreek + uni037E + rcommaaccent + uni0157 + rdotbelow + uni1E5B + rdotbelowmacron + uni1E5D + ringcmb + uni030A + ringhalfleftmod + uni02BF + ringhalfrightmod + uni02BE + rlinebelow + uni1E5F + ruble + uni20BD + rupeeindian + uni20B9 + sampi + uni03E1 + scedilla + uni015F + schwa + uni0259 + schwacyr + uni04D9 + scommaaccent + uni0219 + sdotaccent + uni1E61 + sdotbelow + uni1E63 + servicemark + uni2120 + sfthyphen + uni00AD + sha + uni0448 + shcha + uni0449 + shha + uni04BB + sigma.end + uni03C2 + soft + uni044C + soundcopyright + uni2117 + squareblack + uni25A0 + squareshadow + uni2752 + stigma + uni03DB + tcedilla + uni0163 + tcommaaccent + uni021B + tdieresis + uni1E97 + tdieresis.sc + uni1E97.sc + tdotbelow + uni1E6D + te + uni0442 + tenge + uni20B8 + threeemdash + uni2E3B + tildecmb + uni0303 + tlinebelow + uni1E6F + tonoscmb + uni0301.g + triangleblackdown + triagdn + triangleblackleft + uni25C0 + triangleblackright + uni25B6 + triangleblackup + triagup + trianglewhitedown + uni25BD + trianglewhiteleft + uni25C1 + trianglewhiteright + uni25B7 + trianglewhiteup + uni25B3 + tse + uni0446 + tshe + uni045B + tugrik + uni20AE + twoemdash + uni2E3A + uacutedblcyr + uni04F3 + ucaron + uni01D4 + ucyr + uni0443 + udieresisacute + uni01D8 + udieresiscaron + uni01DA + udieresisgrave + uni01DC + udieresismacron + uni01D6 + udotbelow + uni1EE5 + uhoi + uni1EE7 + uhornacute + uni1EE9 + uhorndotbelow + uni1EF1 + uhorngrave + uni1EEB + uhornhoi + uni1EED + uhorntilde + uni1EEF + umacroncyr + uni04EF + ushort + uni045E + ustraight + uni04AF + ustraightstroke + uni04B1 + ve + uni0432 + verticallinebelowcmb + uni0329 + verticallinelowmod + uni02CC + verticallinemod + uni02C8 + won + uni20A9 + ya + uni044F + yat + uni0463 + ydotaccent + uni1E8F + ydotbelow + uni1EF5 + yeru + uni044B + yhoi + uni1EF7 + yi + uni0457 + ytilde + uni1EF9 + yu + uni044E + zdotbelow + uni1E93 + ze + uni0437 + zedescender + uni0499 + zhe + uni0436 + zhebreve + uni04C2 + zhedescender + uni0497 + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font1.ufo/metainfo.plist b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/metainfo.plist new file mode 100644 index 000000000..7b8b34ac6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font1.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + com.github.fonttools.ufoLib + formatVersion + 3 + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/fontinfo.plist b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/fontinfo.plist new file mode 100644 index 000000000..34ccf6f7d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/fontinfo.plist @@ -0,0 +1,94 @@ + + + + + ascender + 738 + capHeight + 677 + copyright + Copyright 2014 - 2017 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. + descender + -245 + familyName + Source Serif Variable + italicAngle + 0 + postscriptBlueFuzz + 0 + postscriptBlueScale + 0.0375 + postscriptBlueValues + + -13 + 0 + 470 + 483 + 534 + 547 + 556 + 569 + 654 + 667 + 677 + 690 + 738 + 758 + + postscriptFamilyBlues + + -15 + 0 + 475 + 488 + 527 + 540 + 549 + 563 + 646 + 659 + 669 + 684 + 729 + 749 + + postscriptFamilyOtherBlues + + -249 + -239 + + postscriptFontName + SourceSerif_ExtraLight + postscriptOtherBlues + + -255 + -245 + + postscriptStemSnapH + + 26 + 20 + + postscriptStemSnapV + + 28 + 32 + + postscriptUnderlinePosition + -75 + postscriptUnderlineThickness + 50 + styleName + ExtraLight + trademark + Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + unitsPerEm + 1000 + versionMajor + 1 + versionMinor + 0 + xHeight + 470 + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_E_.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_E_.glif new file mode 100644 index 000000000..d75c15abf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_E_.glif @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_acute.glif new file mode 100644 index 000000000..aea4eec01 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_acute.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_breve.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_breve.glif new file mode 100644 index 000000000..526c295a6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_breve.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_breveacute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_breveacute.glif new file mode 100644 index 000000000..60b056a77 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_breveacute.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_brevecyr.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_brevecyr.glif new file mode 100644 index 000000000..14a1ae21c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_brevecyr.glif @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_brevedotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_brevedotbelow.glif new file mode 100644 index 000000000..a492bcf3b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_brevedotbelow.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_brevegrave.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_brevegrave.glif new file mode 100644 index 000000000..ee30cbce2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_brevegrave.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_brevehoi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_brevehoi.glif new file mode 100644 index 000000000..bc1c76730 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_brevehoi.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_brevetilde.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_brevetilde.glif new file mode 100644 index 000000000..701d400fb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_brevetilde.glif @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_caron.glif new file mode 100644 index 000000000..e25f9e417 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_caron.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_circumflex.glif new file mode 100644 index 000000000..fa967cd3d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_circumflex.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_circumflexacute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_circumflexacute.glif new file mode 100644 index 000000000..8e27bcdba --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_circumflexacute.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_circumflexdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_circumflexdotbelow.glif new file mode 100644 index 000000000..0fe43fd56 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_circumflexdotbelow.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_circumflexgrave.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_circumflexgrave.glif new file mode 100644 index 000000000..8e6aed763 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_circumflexgrave.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_circumflexhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_circumflexhoi.glif new file mode 100644 index 000000000..116c0b568 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_circumflexhoi.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_circumflextilde.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_circumflextilde.glif new file mode 100644 index 000000000..db7da23d1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_circumflextilde.glif @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_cyr.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_cyr.glif new file mode 100644 index 000000000..de1de8e60 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_cyr.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_dieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_dieresis.glif new file mode 100644 index 000000000..b3a910a59 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_dieresis.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_dotbelow.glif new file mode 100644 index 000000000..025de0ce8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_dotbelow.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_grave.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_grave.glif new file mode 100644 index 000000000..9474ec2b1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_grave.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_hoi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_hoi.glif new file mode 100644 index 000000000..16fe1e290 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_hoi.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_ie.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_ie.glif new file mode 100644 index 000000000..d78a30677 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_ie.glif @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_lpha.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_lpha.glif new file mode 100644 index 000000000..aaba944a6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_lpha.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_lphatonos.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_lphatonos.glif new file mode 100644 index 000000000..341c1f39a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_lphatonos.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_macron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_macron.glif new file mode 100644 index 000000000..c1346316a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_macron.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_ogonek.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_ogonek.glif new file mode 100644 index 000000000..4c5e6cbd0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_ogonek.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_ring.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_ring.glif new file mode 100644 index 000000000..41fdf6aba --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_ring.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_tilde.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_tilde.glif new file mode 100644 index 000000000..4514c1567 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/A_tilde.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/B_e.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/B_e.glif new file mode 100644 index 000000000..4bc351f34 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/B_e.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/B_eta.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/B_eta.glif new file mode 100644 index 000000000..256b74f01 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/B_eta.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/C_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/C_acute.glif new file mode 100644 index 000000000..957e68495 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/C_acute.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/C_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/C_caron.glif new file mode 100644 index 000000000..a111ed044 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/C_caron.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/C_cedilla.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/C_cedilla.glif new file mode 100644 index 000000000..a2d94caee --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/C_cedilla.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/C_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/C_circumflex.glif new file mode 100644 index 000000000..f4c92978e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/C_circumflex.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/C_dotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/C_dotaccent.glif new file mode 100644 index 000000000..fdc24e9aa --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/C_dotaccent.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/C_he.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/C_he.glif new file mode 100644 index 000000000..b597f9649 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/C_he.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/C_hedescender.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/C_hedescender.glif new file mode 100644 index 000000000..95c2d9c9a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/C_hedescender.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/C_hi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/C_hi.glif new file mode 100644 index 000000000..193dabb37 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/C_hi.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_caron.glif new file mode 100644 index 000000000..416f6e0e6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_caron.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_croat.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_croat.glif new file mode 100644 index 000000000..0eececc86 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_croat.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_dotbelow.glif new file mode 100644 index 000000000..2ec5607cd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_dotbelow.glif @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_e.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_e.glif new file mode 100644 index 000000000..890fedcfc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_e.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_elta.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_elta.glif new file mode 100644 index 000000000..b56a583e9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_elta.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_je.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_je.glif new file mode 100644 index 000000000..543da8a1d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_je.glif @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_linebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_linebelow.glif new file mode 100644 index 000000000..b4b53b031 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_linebelow.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_ze.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_ze.glif new file mode 100644 index 000000000..17c139afd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_ze.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_zhe.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_zhe.glif new file mode 100644 index 000000000..663c1cfb0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/D_zhe.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_acute.glif new file mode 100644 index 000000000..97d1bc01e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_acute.glif @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_breve.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_breve.glif new file mode 100644 index 000000000..6808b3eaf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_breve.glif @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_caron.glif new file mode 100644 index 000000000..0ea86dc4f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_caron.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_circumflex.glif new file mode 100644 index 000000000..0bdf27c12 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_circumflex.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_circumflexacute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_circumflexacute.glif new file mode 100644 index 000000000..24b450a0c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_circumflexacute.glif @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_circumflexdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_circumflexdotbelow.glif new file mode 100644 index 000000000..9f49056d4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_circumflexdotbelow.glif @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_circumflexgrave.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_circumflexgrave.glif new file mode 100644 index 000000000..fbe536d5d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_circumflexgrave.glif @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_circumflexhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_circumflexhoi.glif new file mode 100644 index 000000000..20198c653 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_circumflexhoi.glif @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_circumflextilde.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_circumflextilde.glif new file mode 100644 index 000000000..17d22727e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_circumflextilde.glif @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_cyr.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_cyr.glif new file mode 100644 index 000000000..c29897521 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_cyr.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_dieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_dieresis.glif new file mode 100644 index 000000000..3d6412740 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_dieresis.glif @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_dotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_dotaccent.glif new file mode 100644 index 000000000..fa1dc352d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_dotaccent.glif @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_dotbelow.glif new file mode 100644 index 000000000..f32009235 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_dotbelow.glif @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_f.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_f.glif new file mode 100644 index 000000000..726a22885 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_f.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_grave.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_grave.glif new file mode 100644 index 000000000..244d3c532 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_grave.glif @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_hoi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_hoi.glif new file mode 100644 index 000000000..6bfeef5db --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_hoi.glif @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_l.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_l.glif new file mode 100644 index 000000000..b6025f2af --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_l.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_m.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_m.glif new file mode 100644 index 000000000..61ee90bc6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_m.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_macron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_macron.glif new file mode 100644 index 000000000..e4a04afdf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_macron.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_n.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_n.glif new file mode 100644 index 000000000..c698781e4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_n.glif @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_ndescender.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_ndescender.glif new file mode 100644 index 000000000..c8814124d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_ndescender.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_ng.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_ng.glif new file mode 100644 index 000000000..41794ef6b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_ng.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_ogonek.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_ogonek.glif new file mode 100644 index 000000000..e07aca1e1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_ogonek.glif @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_psilon.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_psilon.glif new file mode 100644 index 000000000..68153da64 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_psilon.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_psilontonos.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_psilontonos.glif new file mode 100644 index 000000000..4795f147a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_psilontonos.glif @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_r.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_r.glif new file mode 100644 index 000000000..e21c5abe9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_r.glif @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_s.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_s.glif new file mode 100644 index 000000000..59b70e00d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_s.glif @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_sdescender.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_sdescender.glif new file mode 100644 index 000000000..017ac0ddb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_sdescender.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_ta.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_ta.glif new file mode 100644 index 000000000..d673a5960 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_ta.glif @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_tatonos.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_tatonos.glif new file mode 100644 index 000000000..9500026a5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_tatonos.glif @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_th.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_th.glif new file mode 100644 index 000000000..acc59a850 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_th.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_tilde.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_tilde.glif new file mode 100644 index 000000000..da87d076f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_tilde.glif @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_uro.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_uro.glif new file mode 100644 index 000000000..5d6591751 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/E_uro.glif @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/F_ita.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/F_ita.glif new file mode 100644 index 000000000..3d5a11f3a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/F_ita.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_amma.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_amma.glif new file mode 100644 index 000000000..ce649c2b2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_amma.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_breve.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_breve.glif new file mode 100644 index 000000000..7768f4307 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_breve.glif @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_caron.glif new file mode 100644 index 000000000..2a29f5970 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_caron.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_circumflex.glif new file mode 100644 index 000000000..0f3c77e3f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_circumflex.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_commaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_commaaccent.glif new file mode 100644 index 000000000..65387c8be --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_commaaccent.glif @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_dotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_dotaccent.glif new file mode 100644 index 000000000..89669b948 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_dotaccent.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_ermandbls.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_ermandbls.glif new file mode 100644 index 000000000..82bcd20cd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_ermandbls.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_he.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_he.glif new file mode 100644 index 000000000..675309ad3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_he.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_hestroke.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_hestroke.glif new file mode 100644 index 000000000..9616d939d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_hestroke.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_heup.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_heup.glif new file mode 100644 index 000000000..59fe14f38 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_heup.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_je.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_je.glif new file mode 100644 index 000000000..8e9026c40 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_je.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_macron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_macron.glif new file mode 100644 index 000000000..2b655d540 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/G_macron.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/H_a.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/H_a.glif new file mode 100644 index 000000000..e132233a4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/H_a.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/H_adescender.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/H_adescender.glif new file mode 100644 index 000000000..eb1cfab0d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/H_adescender.glif @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/H_ard.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/H_ard.glif new file mode 100644 index 000000000..c0f95f3ed --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/H_ard.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/H_bar.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/H_bar.glif new file mode 100644 index 000000000..085694ff2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/H_bar.glif @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/H_brevebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/H_brevebelow.glif new file mode 100644 index 000000000..ccbc3d2ee --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/H_brevebelow.glif @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/H_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/H_circumflex.glif new file mode 100644 index 000000000..6016647ed --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/H_circumflex.glif @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/H_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/H_dotbelow.glif new file mode 100644 index 000000000..30d96af60 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/H_dotbelow.glif @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_J_.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_J_.glif new file mode 100644 index 000000000..850ccd0f4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_J_.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_acute.glif new file mode 100644 index 000000000..8ad7e2686 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_acute.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_caron.glif new file mode 100644 index 000000000..26fca62ce --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_caron.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_circumflex.glif new file mode 100644 index 000000000..6d9a839f1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_circumflex.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_cyr.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_cyr.glif new file mode 100644 index 000000000..d5502c05e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_cyr.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_dieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_dieresis.glif new file mode 100644 index 000000000..a8ba1ef05 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_dieresis.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_dotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_dotaccent.glif new file mode 100644 index 000000000..92b8b647d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_dotaccent.glif @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_dotbelow.glif new file mode 100644 index 000000000..dbcb6e599 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_dotbelow.glif @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_e.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_e.glif new file mode 100644 index 000000000..8a4fc7461 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_e.glif @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_ebreve.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_ebreve.glif new file mode 100644 index 000000000..b0b72e35f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_ebreve.glif @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_egrave.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_egrave.glif new file mode 100644 index 000000000..93e8c6218 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_egrave.glif @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_eukran.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_eukran.glif new file mode 100644 index 000000000..05672b71e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_eukran.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_grave.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_grave.glif new file mode 100644 index 000000000..91821149b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_grave.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_gravecyr.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_gravecyr.glif new file mode 100644 index 000000000..4188276eb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_gravecyr.glif @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_hoi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_hoi.glif new file mode 100644 index 000000000..bb411deec --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_hoi.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_macron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_macron.glif new file mode 100644 index 000000000..24d3293b5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_macron.glif @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_macroncyr.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_macroncyr.glif new file mode 100644 index 000000000..a04c95c59 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_macroncyr.glif @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_o.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_o.glif new file mode 100644 index 000000000..7cbffbd3d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_o.glif @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_ogonek.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_ogonek.glif new file mode 100644 index 000000000..d062e9ad4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_ogonek.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_ota.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_ota.glif new file mode 100644 index 000000000..ef6853dfd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_ota.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_otadieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_otadieresis.glif new file mode 100644 index 000000000..a61ae52b4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_otadieresis.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_otatonos.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_otatonos.glif new file mode 100644 index 000000000..71a9f79af --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_otatonos.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_short.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_short.glif new file mode 100644 index 000000000..a40e77a67 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_short.glif @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_tilde.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_tilde.glif new file mode 100644 index 000000000..af167f3a7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_tilde.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_ukran.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_ukran.glif new file mode 100644 index 000000000..54460f5e7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_ukran.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_zhitsa.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_zhitsa.glif new file mode 100644 index 000000000..e113ea6f5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/I_zhitsa.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/J_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/J_circumflex.glif new file mode 100644 index 000000000..af0e58558 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/J_circumflex.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/J_e.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/J_e.glif new file mode 100644 index 000000000..1e39d33d9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/J_e.glif @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/K_a.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/K_a.glif new file mode 100644 index 000000000..38079a330 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/K_a.glif @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/K_abashkir.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/K_abashkir.glif new file mode 100644 index 000000000..e8dc6635f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/K_abashkir.glif @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/K_adescender.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/K_adescender.glif new file mode 100644 index 000000000..4ae23c096 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/K_adescender.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/K_appa.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/K_appa.glif new file mode 100644 index 000000000..42b8a4866 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/K_appa.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/K_commaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/K_commaaccent.glif new file mode 100644 index 000000000..daffb5bc8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/K_commaaccent.glif @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/K_je.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/K_je.glif new file mode 100644 index 000000000..e22748c48 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/K_je.glif @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_acute.glif new file mode 100644 index 000000000..b530b1d7c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_acute.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_ambda.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_ambda.glif new file mode 100644 index 000000000..761391974 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_ambda.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_caron.glif new file mode 100644 index 000000000..263504b1d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_caron.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_commaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_commaaccent.glif new file mode 100644 index 000000000..6e8f96ef4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_commaaccent.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_dot.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_dot.glif new file mode 100644 index 000000000..6e4d99944 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_dot.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_dotbelow.glif new file mode 100644 index 000000000..ae0ff5e2e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_dotbelow.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_dotbelowmacron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_dotbelowmacron.glif new file mode 100644 index 000000000..4907aa33b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_dotbelowmacron.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_je.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_je.glif new file mode 100644 index 000000000..e52db1bc8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_je.glif @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_linebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_linebelow.glif new file mode 100644 index 000000000..a020cb7a3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_linebelow.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_slash.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_slash.glif new file mode 100644 index 000000000..96bac3c33 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/L_slash.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/M_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/M_acute.glif new file mode 100644 index 000000000..b61909bc4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/M_acute.glif @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/M_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/M_dotbelow.glif new file mode 100644 index 000000000..44c78f556 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/M_dotbelow.glif @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/M_u.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/M_u.glif new file mode 100644 index 000000000..fc4d67ef8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/M_u.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_acute.glif new file mode 100644 index 000000000..d1dd6f41e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_acute.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_caron.glif new file mode 100644 index 000000000..9e8a20f69 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_caron.glif @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_commaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_commaaccent.glif new file mode 100644 index 000000000..162c1ce93 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_commaaccent.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_dotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_dotaccent.glif new file mode 100644 index 000000000..9a723df48 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_dotaccent.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_dotbelow.glif new file mode 100644 index 000000000..04aaa8613 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_dotbelow.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_grave.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_grave.glif new file mode 100644 index 000000000..d88ca995a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_grave.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_je.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_je.glif new file mode 100644 index 000000000..76006592f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_je.glif @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_linebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_linebelow.glif new file mode 100644 index 000000000..c7d82b43d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_linebelow.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_tilde.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_tilde.glif new file mode 100644 index 000000000..173b05d98 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_tilde.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_u.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_u.glif new file mode 100644 index 000000000..9b3510e52 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/N_u.glif @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_E_.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_E_.glif new file mode 100644 index 000000000..18eb6cc5e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_E_.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_acute.glif new file mode 100644 index 000000000..9d4b99a94 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_acute.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_barcyr.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_barcyr.glif new file mode 100644 index 000000000..5b79e6fd0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_barcyr.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_breve.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_breve.glif new file mode 100644 index 000000000..790aa64c8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_breve.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_caron.glif new file mode 100644 index 000000000..623e65faf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_caron.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_circumflex.glif new file mode 100644 index 000000000..a64b705f9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_circumflex.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_circumflexacute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_circumflexacute.glif new file mode 100644 index 000000000..e965c3194 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_circumflexacute.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_circumflexdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_circumflexdotbelow.glif new file mode 100644 index 000000000..472843051 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_circumflexdotbelow.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_circumflexgrave.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_circumflexgrave.glif new file mode 100644 index 000000000..e7917af03 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_circumflexgrave.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_circumflexhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_circumflexhoi.glif new file mode 100644 index 000000000..5f9e2307d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_circumflexhoi.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_circumflextilde.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_circumflextilde.glif new file mode 100644 index 000000000..0ebbeda91 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_circumflextilde.glif @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_cyr.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_cyr.glif new file mode 100644 index 000000000..69c5163cb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_cyr.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_dieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_dieresis.glif new file mode 100644 index 000000000..4cd829f77 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_dieresis.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_dieresiscyr.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_dieresiscyr.glif new file mode 100644 index 000000000..075386377 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_dieresiscyr.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_dotbelow.glif new file mode 100644 index 000000000..b019f165b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_dotbelow.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_grave.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_grave.glif new file mode 100644 index 000000000..417663643 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_grave.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_hoi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_hoi.glif new file mode 100644 index 000000000..5dfc49463 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_hoi.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_horn.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_horn.glif new file mode 100644 index 000000000..2672c1460 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_horn.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_hornacute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_hornacute.glif new file mode 100644 index 000000000..cd66bd8c2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_hornacute.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_horndotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_horndotbelow.glif new file mode 100644 index 000000000..60e738911 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_horndotbelow.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_horngrave.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_horngrave.glif new file mode 100644 index 000000000..5d5e80330 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_horngrave.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_hornhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_hornhoi.glif new file mode 100644 index 000000000..6502d1595 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_hornhoi.glif @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_horntilde.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_horntilde.glif new file mode 100644 index 000000000..776da9074 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_horntilde.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_hungarumlaut.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_hungarumlaut.glif new file mode 100644 index 000000000..2746aaab2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_hungarumlaut.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_macron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_macron.glif new file mode 100644 index 000000000..eff84b10e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_macron.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_mega.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_mega.glif new file mode 100644 index 000000000..8d9cd3793 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_mega.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_megatonos.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_megatonos.glif new file mode 100644 index 000000000..03c3d281c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_megatonos.glif @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_micron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_micron.glif new file mode 100644 index 000000000..439426d0c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_micron.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_microntonos.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_microntonos.glif new file mode 100644 index 000000000..940023180 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_microntonos.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_slash.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_slash.glif new file mode 100644 index 000000000..fd54af82a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_slash.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_tilde.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_tilde.glif new file mode 100644 index 000000000..d53a10ef2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/O_tilde.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/P_alochka.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/P_alochka.glif new file mode 100644 index 000000000..d9727c359 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/P_alochka.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/P_e.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/P_e.glif new file mode 100644 index 000000000..260f52239 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/P_e.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/P_hi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/P_hi.glif new file mode 100644 index 000000000..92faea3ba --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/P_hi.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/P_i.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/P_i.glif new file mode 100644 index 000000000..daad6f132 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/P_i.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/P_si.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/P_si.glif new file mode 100644 index 000000000..2152352f7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/P_si.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/R_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/R_acute.glif new file mode 100644 index 000000000..3ae192449 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/R_acute.glif @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/R_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/R_caron.glif new file mode 100644 index 000000000..bc841f223 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/R_caron.glif @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/R_commaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/R_commaaccent.glif new file mode 100644 index 000000000..fbd8a0718 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/R_commaaccent.glif @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/R_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/R_dotbelow.glif new file mode 100644 index 000000000..019764c06 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/R_dotbelow.glif @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/R_dotbelowmacron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/R_dotbelowmacron.glif new file mode 100644 index 000000000..d0cfb5526 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/R_dotbelowmacron.glif @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/R_ho.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/R_ho.glif new file mode 100644 index 000000000..da980832b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/R_ho.glif @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/R_linebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/R_linebelow.glif new file mode 100644 index 000000000..9e8fa968e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/R_linebelow.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_acute.glif new file mode 100644 index 000000000..db0c6c954 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_acute.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_caron.glif new file mode 100644 index 000000000..e99615330 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_caron.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_cedilla.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_cedilla.glif new file mode 100644 index 000000000..3bc102ae6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_cedilla.glif @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_chwa.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_chwa.glif new file mode 100644 index 000000000..dd45e4e6b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_chwa.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_chwacyr.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_chwacyr.glif new file mode 100644 index 000000000..f164fd23d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_chwacyr.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_circumflex.glif new file mode 100644 index 000000000..85d255086 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_circumflex.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_commaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_commaaccent.glif new file mode 100644 index 000000000..529a64c1b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_commaaccent.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_dotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_dotaccent.glif new file mode 100644 index 000000000..f21fda01e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_dotaccent.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_dotbelow.glif new file mode 100644 index 000000000..3dbbb770e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_dotbelow.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_ha.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_ha.glif new file mode 100644 index 000000000..aca0dbef9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_ha.glif @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_hcha.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_hcha.glif new file mode 100644 index 000000000..9ffcc6fc1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_hcha.glif @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_hha.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_hha.glif new file mode 100644 index 000000000..210b7e001 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_hha.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_igma.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_igma.glif new file mode 100644 index 000000000..8b0de72da --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_igma.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_oft.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_oft.glif new file mode 100644 index 000000000..81d9667af --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/S_oft.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_au.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_au.glif new file mode 100644 index 000000000..1017c1f7b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_au.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_bar.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_bar.glif new file mode 100644 index 000000000..61d301c54 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_bar.glif @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_caron.glif new file mode 100644 index 000000000..3efe819c1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_caron.glif @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_cedilla.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_cedilla.glif new file mode 100644 index 000000000..602cbbd74 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_cedilla.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_commaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_commaaccent.glif new file mode 100644 index 000000000..04afdca0e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_commaaccent.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_dotbelow.glif new file mode 100644 index 000000000..0c7adf661 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_dotbelow.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_e.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_e.glif new file mode 100644 index 000000000..1a540ba5e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_e.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_heta.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_heta.glif new file mode 100644 index 000000000..6f6ca1778 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_heta.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_horn.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_horn.glif new file mode 100644 index 000000000..7a5d7a823 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_horn.glif @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_linebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_linebelow.glif new file mode 100644 index 000000000..cd3d5c68b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_linebelow.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_se.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_se.glif new file mode 100644 index 000000000..296698562 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_se.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_she.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_she.glif new file mode 100644 index 000000000..88671a8cf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/T_she.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_acute.glif new file mode 100644 index 000000000..3a2f30c30 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_acute.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_acutedblcyr.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_acutedblcyr.glif new file mode 100644 index 000000000..97296130f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_acutedblcyr.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_breve.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_breve.glif new file mode 100644 index 000000000..191947e33 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_breve.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_caron.glif new file mode 100644 index 000000000..0a1df33ab --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_caron.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_circumflex.glif new file mode 100644 index 000000000..fcec44abf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_circumflex.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_cyr.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_cyr.glif new file mode 100644 index 000000000..23f712b80 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_cyr.glif @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_dieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_dieresis.glif new file mode 100644 index 000000000..3182f983d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_dieresis.glif @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_dieresisacute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_dieresisacute.glif new file mode 100644 index 000000000..c8f108d57 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_dieresisacute.glif @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_dieresiscaron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_dieresiscaron.glif new file mode 100644 index 000000000..708340cdf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_dieresiscaron.glif @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_dieresisgrave.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_dieresisgrave.glif new file mode 100644 index 000000000..c001fd784 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_dieresisgrave.glif @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_dieresismacron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_dieresismacron.glif new file mode 100644 index 000000000..2f48fa75a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_dieresismacron.glif @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_dotbelow.glif new file mode 100644 index 000000000..7f9589769 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_dotbelow.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_grave.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_grave.glif new file mode 100644 index 000000000..27a45ca54 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_grave.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_hoi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_hoi.glif new file mode 100644 index 000000000..b859f108c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_hoi.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_horn.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_horn.glif new file mode 100644 index 000000000..15dd87147 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_horn.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_hornacute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_hornacute.glif new file mode 100644 index 000000000..f138d316b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_hornacute.glif @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_horndotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_horndotbelow.glif new file mode 100644 index 000000000..87405df09 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_horndotbelow.glif @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_horngrave.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_horngrave.glif new file mode 100644 index 000000000..9e1ccd067 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_horngrave.glif @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_hornhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_hornhoi.glif new file mode 100644 index 000000000..6ca124f36 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_hornhoi.glif @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_horntilde.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_horntilde.glif new file mode 100644 index 000000000..29dda8e09 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_horntilde.glif @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_hungarumlaut.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_hungarumlaut.glif new file mode 100644 index 000000000..ce829f491 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_hungarumlaut.glif @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_macron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_macron.glif new file mode 100644 index 000000000..d916d8b7f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_macron.glif @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_macroncyr.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_macroncyr.glif new file mode 100644 index 000000000..f33cffba4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_macroncyr.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_ogonek.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_ogonek.glif new file mode 100644 index 000000000..4e79c7e1c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_ogonek.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_psilon.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_psilon.glif new file mode 100644 index 000000000..7694d1f3f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_psilon.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_psilondieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_psilondieresis.glif new file mode 100644 index 000000000..f3f477dd7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_psilondieresis.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_psilontonos.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_psilontonos.glif new file mode 100644 index 000000000..7eafd281c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_psilontonos.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_ring.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_ring.glif new file mode 100644 index 000000000..4b60bb4af --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_ring.glif @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_short.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_short.glif new file mode 100644 index 000000000..934e8c04f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_short.glif @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_straight.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_straight.glif new file mode 100644 index 000000000..fc88d0aaf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_straight.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_straightstroke.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_straightstroke.glif new file mode 100644 index 000000000..b4b82aef6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_straightstroke.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_tilde.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_tilde.glif new file mode 100644 index 000000000..de4de7900 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/U_tilde.glif @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/V_e.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/V_e.glif new file mode 100644 index 000000000..f9a1e8f7b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/V_e.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/W_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/W_acute.glif new file mode 100644 index 000000000..51a77a5cb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/W_acute.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/W_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/W_circumflex.glif new file mode 100644 index 000000000..3ce5e9c76 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/W_circumflex.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/W_dieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/W_dieresis.glif new file mode 100644 index 000000000..c46bbab04 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/W_dieresis.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/W_grave.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/W_grave.glif new file mode 100644 index 000000000..46d28f403 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/W_grave.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/X_i.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/X_i.glif new file mode 100644 index 000000000..f8b01381b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/X_i.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_a.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_a.glif new file mode 100644 index 000000000..577545021 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_a.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_acute.glif new file mode 100644 index 000000000..a8f793ee3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_acute.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_at.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_at.glif new file mode 100644 index 000000000..2457aa9a7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_at.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_circumflex.glif new file mode 100644 index 000000000..87a24391b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_circumflex.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_dieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_dieresis.glif new file mode 100644 index 000000000..b12534c07 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_dieresis.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_dotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_dotaccent.glif new file mode 100644 index 000000000..a0f21e3a3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_dotaccent.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_dotbelow.glif new file mode 100644 index 000000000..329f6f1f5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_dotbelow.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_eru.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_eru.glif new file mode 100644 index 000000000..a3c4c7725 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_eru.glif @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_grave.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_grave.glif new file mode 100644 index 000000000..c52a70247 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_grave.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_hoi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_hoi.glif new file mode 100644 index 000000000..f2326be89 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_hoi.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_i.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_i.glif new file mode 100644 index 000000000..b4254bf66 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_i.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_tilde.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_tilde.glif new file mode 100644 index 000000000..22eaa51ba --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_tilde.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_u.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_u.glif new file mode 100644 index 000000000..28bba6565 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Y_u.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_acute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_acute.glif new file mode 100644 index 000000000..e0de0d72a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_acute.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_caron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_caron.glif new file mode 100644 index 000000000..c6d77c44f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_caron.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_dotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_dotaccent.glif new file mode 100644 index 000000000..dbf257552 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_dotaccent.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_dotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_dotbelow.glif new file mode 100644 index 000000000..63e5f0491 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_dotbelow.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_e.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_e.glif new file mode 100644 index 000000000..7103f65c7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_e.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_edescender.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_edescender.glif new file mode 100644 index 000000000..82c4d0747 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_edescender.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_eta.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_eta.glif new file mode 100644 index 000000000..ba6d0f51f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_eta.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_he.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_he.glif new file mode 100644 index 000000000..069c20ad0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_he.glif @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_hebreve.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_hebreve.glif new file mode 100644 index 000000000..066fac59c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_hebreve.glif @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_hedescender.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_hedescender.glif new file mode 100644 index 000000000..e238e4ed8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/Z_hedescender.glif @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/a.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/a.sups.glif new file mode 100644 index 000000000..9d689ac19 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/a.sups.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/aacute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/aacute.glif new file mode 100644 index 000000000..da825d29e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/aacute.glif @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/abreve.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/abreve.glif new file mode 100644 index 000000000..9e03b6b00 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/abreve.glif @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/abreveacute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/abreveacute.glif new file mode 100644 index 000000000..60eb52bd4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/abreveacute.glif @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/abrevecyr.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/abrevecyr.glif new file mode 100644 index 000000000..b8ce2497b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/abrevecyr.glif @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/abrevedotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/abrevedotbelow.glif new file mode 100644 index 000000000..9674a5f9e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/abrevedotbelow.glif @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/abrevegrave.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/abrevegrave.glif new file mode 100644 index 000000000..48c1e854c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/abrevegrave.glif @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/abrevehoi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/abrevehoi.glif new file mode 100644 index 000000000..8d9f198be --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/abrevehoi.glif @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/abrevetilde.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/abrevetilde.glif new file mode 100644 index 000000000..eb48d6c98 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/abrevetilde.glif @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acaron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acaron.glif new file mode 100644 index 000000000..87bcbd50c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acaron.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acircumflex.glif new file mode 100644 index 000000000..c0339bd54 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acircumflex.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acircumflexacute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acircumflexacute.glif new file mode 100644 index 000000000..0797c11e1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acircumflexacute.glif @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acircumflexdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acircumflexdotbelow.glif new file mode 100644 index 000000000..26be5113c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acircumflexdotbelow.glif @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acircumflexgrave.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acircumflexgrave.glif new file mode 100644 index 000000000..734e4d2d5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acircumflexgrave.glif @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acircumflexhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acircumflexhoi.glif new file mode 100644 index 000000000..9539f6a4d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acircumflexhoi.glif @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acircumflextilde.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acircumflextilde.glif new file mode 100644 index 000000000..be29e5707 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acircumflextilde.glif @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acute.glif new file mode 100644 index 000000000..c7dec24f1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acute.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acutecmb.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acutecmb.glif new file mode 100644 index 000000000..e4fc66ce4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acutecmb.glif @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acyr.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acyr.glif new file mode 100644 index 000000000..3b2a4624b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/acyr.glif @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/adieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/adieresis.glif new file mode 100644 index 000000000..595719f9d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/adieresis.glif @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/adotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/adotbelow.glif new file mode 100644 index 000000000..af57cf130 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/adotbelow.glif @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ae.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ae.glif new file mode 100644 index 000000000..8e81e7f81 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ae.glif @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/agrave.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/agrave.glif new file mode 100644 index 000000000..ea62994aa --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/agrave.glif @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ahoi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ahoi.glif new file mode 100644 index 000000000..a6605a5fb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ahoi.glif @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/aie.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/aie.glif new file mode 100644 index 000000000..9fe89f179 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/aie.glif @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/alpha.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/alpha.glif new file mode 100644 index 000000000..088080f6b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/alpha.glif @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/alphalatin.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/alphalatin.glif new file mode 100644 index 000000000..17a1b348b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/alphalatin.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/alphatonos.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/alphatonos.glif new file mode 100644 index 000000000..8c60a1fe7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/alphatonos.glif @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/amacron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/amacron.glif new file mode 100644 index 000000000..70741af96 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/amacron.glif @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/anoteleia.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/anoteleia.glif new file mode 100644 index 000000000..d4e67ccf6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/anoteleia.glif @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/aogonek.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/aogonek.glif new file mode 100644 index 000000000..a963743c2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/aogonek.glif @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/approxequal.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/approxequal.glif new file mode 100644 index 000000000..11a886149 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/approxequal.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/aring.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/aring.glif new file mode 100644 index 000000000..42251386f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/aring.glif @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/arrowdown.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/arrowdown.glif new file mode 100644 index 000000000..b661a0f03 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/arrowdown.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/arrowdownleft.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/arrowdownleft.glif new file mode 100644 index 000000000..8b03b46f7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/arrowdownleft.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/arrowdownright.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/arrowdownright.glif new file mode 100644 index 000000000..1af6387e9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/arrowdownright.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/arrowleft.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/arrowleft.glif new file mode 100644 index 000000000..7c783c440 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/arrowleft.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/arrowright.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/arrowright.glif new file mode 100644 index 000000000..1b99b5590 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/arrowright.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/arrowup.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/arrowup.glif new file mode 100644 index 000000000..810ff9513 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/arrowup.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/arrowupleft.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/arrowupleft.glif new file mode 100644 index 000000000..6d9802282 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/arrowupleft.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/arrowupright.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/arrowupright.glif new file mode 100644 index 000000000..b3efd4284 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/arrowupright.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/atilde.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/atilde.glif new file mode 100644 index 000000000..0fd7f5b8c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/atilde.glif @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/b.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/b.sups.glif new file mode 100644 index 000000000..d27b228ec --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/b.sups.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/be.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/be.glif new file mode 100644 index 000000000..d4785adc8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/be.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/beta.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/beta.glif new file mode 100644 index 000000000..1cf9784df --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/beta.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/bitcoin.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/bitcoin.glif new file mode 100644 index 000000000..efd044062 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/bitcoin.glif @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/breve.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/breve.glif new file mode 100644 index 000000000..96a1c40a5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/breve.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/brevebelowcmb.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/brevebelowcmb.glif new file mode 100644 index 000000000..13cf9f648 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/brevebelowcmb.glif @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/brevecmb.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/brevecmb.glif new file mode 100644 index 000000000..2bd36d3ec --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/brevecmb.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/brokenbar.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/brokenbar.glif new file mode 100644 index 000000000..f84f9bbba --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/brokenbar.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/bullet.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/bullet.glif new file mode 100644 index 000000000..bf3f7b206 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/bullet.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/bulletoperator.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/bulletoperator.glif new file mode 100644 index 000000000..6d5aa927b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/bulletoperator.glif @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/c.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/c.sups.glif new file mode 100644 index 000000000..dce4ce66e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/c.sups.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/cacute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/cacute.glif new file mode 100644 index 000000000..54cc73e48 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/cacute.glif @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/caron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/caron.glif new file mode 100644 index 000000000..33dd98d34 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/caron.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/caroncmb.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/caroncmb.glif new file mode 100644 index 000000000..37fc230ea --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/caroncmb.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ccaron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ccaron.glif new file mode 100644 index 000000000..3b179506e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ccaron.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ccedilla.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ccedilla.glif new file mode 100644 index 000000000..19f989585 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ccedilla.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ccircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ccircumflex.glif new file mode 100644 index 000000000..475230d8a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ccircumflex.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/cdotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/cdotaccent.glif new file mode 100644 index 000000000..b2851f618 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/cdotaccent.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/cedi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/cedi.glif new file mode 100644 index 000000000..3f1530e08 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/cedi.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/cedilla.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/cedilla.glif new file mode 100644 index 000000000..e3dddb6c3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/cedilla.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/cedillacmb.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/cedillacmb.glif new file mode 100644 index 000000000..8357ab3d7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/cedillacmb.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/cent.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/cent.glif new file mode 100644 index 000000000..1705b539e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/cent.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/che.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/che.glif new file mode 100644 index 000000000..6feb0894b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/che.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/check.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/check.glif new file mode 100644 index 000000000..08f69011a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/check.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/checkbox.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/checkbox.glif new file mode 100644 index 000000000..8278da64c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/checkbox.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/checkedbox.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/checkedbox.glif new file mode 100644 index 000000000..6468d8b44 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/checkedbox.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/chedescender.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/chedescender.glif new file mode 100644 index 000000000..be6c0a325 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/chedescender.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/chi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/chi.glif new file mode 100644 index 000000000..0fafd0a29 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/chi.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/circumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/circumflex.glif new file mode 100644 index 000000000..20db8ffdb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/circumflex.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/circumflexcmb.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/circumflexcmb.glif new file mode 100644 index 000000000..abbe6a911 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/circumflexcmb.glif @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/colonmonetary.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/colonmonetary.glif new file mode 100644 index 000000000..d9892d954 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/colonmonetary.glif @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/colontriangularmod.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/colontriangularmod.glif new file mode 100644 index 000000000..ae97c9092 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/colontriangularmod.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/commabelowcmb.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/commabelowcmb.glif new file mode 100644 index 000000000..d239f0ed5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/commabelowcmb.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/commercemark.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/commercemark.glif new file mode 100644 index 000000000..fc3b6ee99 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/commercemark.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/contents.plist b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/contents.plist new file mode 100644 index 000000000..b689da04d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/contents.plist @@ -0,0 +1,1630 @@ + + + + + AE + A_E_.glif + Aacute + A_acute.glif + Abreve + A_breve.glif + Abreveacute + A_breveacute.glif + Abrevecyr + A_brevecyr.glif + Abrevedotbelow + A_brevedotbelow.glif + Abrevegrave + A_brevegrave.glif + Abrevehoi + A_brevehoi.glif + Abrevetilde + A_brevetilde.glif + Acaron + A_caron.glif + Acircumflex + A_circumflex.glif + Acircumflexacute + A_circumflexacute.glif + Acircumflexdotbelow + A_circumflexdotbelow.glif + Acircumflexgrave + A_circumflexgrave.glif + Acircumflexhoi + A_circumflexhoi.glif + Acircumflextilde + A_circumflextilde.glif + Acyr + A_cyr.glif + Adieresis + A_dieresis.glif + Adotbelow + A_dotbelow.glif + Agrave + A_grave.glif + Ahoi + A_hoi.glif + Aie + A_ie.glif + Alpha + A_lpha.glif + Alphatonos + A_lphatonos.glif + Amacron + A_macron.glif + Aogonek + A_ogonek.glif + Aring + A_ring.glif + Atilde + A_tilde.glif + Be + B_e.glif + Beta + B_eta.glif + Cacute + C_acute.glif + Ccaron + C_caron.glif + Ccedilla + C_cedilla.glif + Ccircumflex + C_circumflex.glif + Cdotaccent + C_dotaccent.glif + Che + C_he.glif + Chedescender + C_hedescender.glif + Chi + C_hi.glif + Dcaron + D_caron.glif + Dcroat + D_croat.glif + Ddotbelow + D_dotbelow.glif + De + D_e.glif + Delta + D_elta.glif + Dje + D_je.glif + Dlinebelow + D_linebelow.glif + Dze + D_ze.glif + Dzhe + D_zhe.glif + Eacute + E_acute.glif + Ebreve + E_breve.glif + Ecaron + E_caron.glif + Ecircumflex + E_circumflex.glif + Ecircumflexacute + E_circumflexacute.glif + Ecircumflexdotbelow + E_circumflexdotbelow.glif + Ecircumflexgrave + E_circumflexgrave.glif + Ecircumflexhoi + E_circumflexhoi.glif + Ecircumflextilde + E_circumflextilde.glif + Ecyr + E_cyr.glif + Edieresis + E_dieresis.glif + Edotaccent + E_dotaccent.glif + Edotbelow + E_dotbelow.glif + Ef + E_f.glif + Egrave + E_grave.glif + Ehoi + E_hoi.glif + El + E_l.glif + Em + E_m.glif + Emacron + E_macron.glif + En + E_n.glif + Endescender + E_ndescender.glif + Eng + E_ng.glif + Eogonek + E_ogonek.glif + Epsilon + E_psilon.glif + Epsilontonos + E_psilontonos.glif + Er + E_r.glif + Es + E_s.glif + Esdescender + E_sdescender.glif + Eta + E_ta.glif + Etatonos + E_tatonos.glif + Eth + E_th.glif + Etilde + E_tilde.glif + Euro + E_uro.glif + Fita + F_ita.glif + Gamma + G_amma.glif + Gbreve + G_breve.glif + Gcaron + G_caron.glif + Gcircumflex + G_circumflex.glif + Gcommaaccent + G_commaaccent.glif + Gdotaccent + G_dotaccent.glif + Germandbls + G_ermandbls.glif + Ghe + G_he.glif + Ghestroke + G_hestroke.glif + Gheup + G_heup.glif + Gje + G_je.glif + Gmacron + G_macron.glif + Ha + H_a.glif + Hadescender + H_adescender.glif + Hard + H_ard.glif + Hbar + H_bar.glif + Hbrevebelow + H_brevebelow.glif + Hcircumflex + H_circumflex.glif + Hdotbelow + H_dotbelow.glif + IJ + I_J_.glif + Iacute + I_acute.glif + Icaron + I_caron.glif + Icircumflex + I_circumflex.glif + Icyr + I_cyr.glif + Idieresis + I_dieresis.glif + Idotaccent + I_dotaccent.glif + Idotbelow + I_dotbelow.glif + Ie + I_e.glif + Iebreve + I_ebreve.glif + Iegrave + I_egrave.glif + Ieukran + I_eukran.glif + Igrave + I_grave.glif + Igravecyr + I_gravecyr.glif + Ihoi + I_hoi.glif + Imacron + I_macron.glif + Imacroncyr + I_macroncyr.glif + Io + I_o.glif + Iogonek + I_ogonek.glif + Iota + I_ota.glif + Iotadieresis + I_otadieresis.glif + Iotatonos + I_otatonos.glif + Ishort + I_short.glif + Itilde + I_tilde.glif + Iukran + I_ukran.glif + Izhitsa + I_zhitsa.glif + Jcircumflex + J_circumflex.glif + Je + J_e.glif + Ka + K_a.glif + Kabashkir + K_abashkir.glif + Kadescender + K_adescender.glif + Kappa + K_appa.glif + Kcommaaccent + K_commaaccent.glif + Kje + K_je.glif + Lacute + L_acute.glif + Lambda + L_ambda.glif + Lcaron + L_caron.glif + Lcommaaccent + L_commaaccent.glif + Ldot + L_dot.glif + Ldotbelow + L_dotbelow.glif + Ldotbelowmacron + L_dotbelowmacron.glif + Lje + L_je.glif + Llinebelow + L_linebelow.glif + Lslash + L_slash.glif + Macute + M_acute.glif + Mdotbelow + M_dotbelow.glif + Mu + M_u.glif + Nacute + N_acute.glif + Ncaron + N_caron.glif + Ncommaaccent + N_commaaccent.glif + Ndotaccent + N_dotaccent.glif + Ndotbelow + N_dotbelow.glif + Ngrave + N_grave.glif + Nje + N_je.glif + Nlinebelow + N_linebelow.glif + Ntilde + N_tilde.glif + Nu + N_u.glif + OE + O_E_.glif + Oacute + O_acute.glif + Obarcyr + O_barcyr.glif + Obreve + O_breve.glif + Ocaron + O_caron.glif + Ocircumflex + O_circumflex.glif + Ocircumflexacute + O_circumflexacute.glif + Ocircumflexdotbelow + O_circumflexdotbelow.glif + Ocircumflexgrave + O_circumflexgrave.glif + Ocircumflexhoi + O_circumflexhoi.glif + Ocircumflextilde + O_circumflextilde.glif + Ocyr + O_cyr.glif + Odieresis + O_dieresis.glif + Odieresiscyr + O_dieresiscyr.glif + Odotbelow + O_dotbelow.glif + Ograve + O_grave.glif + Ohoi + O_hoi.glif + Ohorn + O_horn.glif + Ohornacute + O_hornacute.glif + Ohorndotbelow + O_horndotbelow.glif + Ohorngrave + O_horngrave.glif + Ohornhoi + O_hornhoi.glif + Ohorntilde + O_horntilde.glif + Ohungarumlaut + O_hungarumlaut.glif + Omacron + O_macron.glif + Omega + O_mega.glif + Omegatonos + O_megatonos.glif + Omicron + O_micron.glif + Omicrontonos + O_microntonos.glif + Oslash + O_slash.glif + Otilde + O_tilde.glif + Palochka + P_alochka.glif + Pe + P_e.glif + Phi + P_hi.glif + Pi + P_i.glif + Psi + P_si.glif + Racute + R_acute.glif + Rcaron + R_caron.glif + Rcommaaccent + R_commaaccent.glif + Rdotbelow + R_dotbelow.glif + Rdotbelowmacron + R_dotbelowmacron.glif + Rho + R_ho.glif + Rlinebelow + R_linebelow.glif + Sacute + S_acute.glif + Scaron + S_caron.glif + Scedilla + S_cedilla.glif + Schwa + S_chwa.glif + Schwacyr + S_chwacyr.glif + Scircumflex + S_circumflex.glif + Scommaaccent + S_commaaccent.glif + Sdotaccent + S_dotaccent.glif + Sdotbelow + S_dotbelow.glif + Sha + S_ha.glif + Shcha + S_hcha.glif + Shha + S_hha.glif + Sigma + S_igma.glif + Soft + S_oft.glif + Tau + T_au.glif + Tbar + T_bar.glif + Tcaron + T_caron.glif + Tcedilla + T_cedilla.glif + Tcommaaccent + T_commaaccent.glif + Tdotbelow + T_dotbelow.glif + Te + T_e.glif + Theta + T_heta.glif + Thorn + T_horn.glif + Tlinebelow + T_linebelow.glif + Tse + T_se.glif + Tshe + T_she.glif + Uacute + U_acute.glif + Uacutedblcyr + U_acutedblcyr.glif + Ubreve + U_breve.glif + Ucaron + U_caron.glif + Ucircumflex + U_circumflex.glif + Ucyr + U_cyr.glif + Udieresis + U_dieresis.glif + Udieresisacute + U_dieresisacute.glif + Udieresiscaron + U_dieresiscaron.glif + Udieresisgrave + U_dieresisgrave.glif + Udieresismacron + U_dieresismacron.glif + Udotbelow + U_dotbelow.glif + Ugrave + U_grave.glif + Uhoi + U_hoi.glif + Uhorn + U_horn.glif + Uhornacute + U_hornacute.glif + Uhorndotbelow + U_horndotbelow.glif + Uhorngrave + U_horngrave.glif + Uhornhoi + U_hornhoi.glif + Uhorntilde + U_horntilde.glif + Uhungarumlaut + U_hungarumlaut.glif + Umacron + U_macron.glif + Umacroncyr + U_macroncyr.glif + Uogonek + U_ogonek.glif + Upsilon + U_psilon.glif + Upsilondieresis + U_psilondieresis.glif + Upsilontonos + U_psilontonos.glif + Uring + U_ring.glif + Ushort + U_short.glif + Ustraight + U_straight.glif + Ustraightstroke + U_straightstroke.glif + Utilde + U_tilde.glif + Ve + V_e.glif + Wacute + W_acute.glif + Wcircumflex + W_circumflex.glif + Wdieresis + W_dieresis.glif + Wgrave + W_grave.glif + Xi + X_i.glif + Ya + Y_a.glif + Yacute + Y_acute.glif + Yat + Y_at.glif + Ycircumflex + Y_circumflex.glif + Ydieresis + Y_dieresis.glif + Ydotaccent + Y_dotaccent.glif + Ydotbelow + Y_dotbelow.glif + Yeru + Y_eru.glif + Ygrave + Y_grave.glif + Yhoi + Y_hoi.glif + Yi + Y_i.glif + Ytilde + Y_tilde.glif + Yu + Y_u.glif + Zacute + Z_acute.glif + Zcaron + Z_caron.glif + Zdotaccent + Z_dotaccent.glif + Zdotbelow + Z_dotbelow.glif + Ze + Z_e.glif + Zedescender + Z_edescender.glif + Zeta + Z_eta.glif + Zhe + Z_he.glif + Zhebreve + Z_hebreve.glif + Zhedescender + Z_hedescender.glif + a.sups + a.sups.glif + aacute + aacute.glif + abreve + abreve.glif + abreveacute + abreveacute.glif + abrevecyr + abrevecyr.glif + abrevedotbelow + abrevedotbelow.glif + abrevegrave + abrevegrave.glif + abrevehoi + abrevehoi.glif + abrevetilde + abrevetilde.glif + acaron + acaron.glif + acircumflex + acircumflex.glif + acircumflexacute + acircumflexacute.glif + acircumflexdotbelow + acircumflexdotbelow.glif + acircumflexgrave + acircumflexgrave.glif + acircumflexhoi + acircumflexhoi.glif + acircumflextilde + acircumflextilde.glif + acute + acute.glif + acutecmb + acutecmb.glif + acyr + acyr.glif + adieresis + adieresis.glif + adotbelow + adotbelow.glif + ae + ae.glif + agrave + agrave.glif + ahoi + ahoi.glif + aie + aie.glif + alpha + alpha.glif + alphalatin + alphalatin.glif + alphatonos + alphatonos.glif + amacron + amacron.glif + anoteleia + anoteleia.glif + aogonek + aogonek.glif + approxequal + approxequal.glif + aring + aring.glif + arrowdown + arrowdown.glif + arrowdownleft + arrowdownleft.glif + arrowdownright + arrowdownright.glif + arrowleft + arrowleft.glif + arrowright + arrowright.glif + arrowup + arrowup.glif + arrowupleft + arrowupleft.glif + arrowupright + arrowupright.glif + atilde + atilde.glif + b.sups + b.sups.glif + be + be.glif + beta + beta.glif + bitcoin + bitcoin.glif + breve + breve.glif + brevebelowcmb + brevebelowcmb.glif + brevecmb + brevecmb.glif + brokenbar + brokenbar.glif + bullet + bullet.glif + bulletoperator + bulletoperator.glif + c.sups + c.sups.glif + cacute + cacute.glif + caron + caron.glif + caroncmb + caroncmb.glif + ccaron + ccaron.glif + ccedilla + ccedilla.glif + ccircumflex + ccircumflex.glif + cdotaccent + cdotaccent.glif + cedi + cedi.glif + cedilla + cedilla.glif + cedillacmb + cedillacmb.glif + cent + cent.glif + che + che.glif + check + check.glif + checkbox + checkbox.glif + checkedbox + checkedbox.glif + chedescender + chedescender.glif + chi + chi.glif + circumflex + circumflex.glif + circumflexcmb + circumflexcmb.glif + colonmonetary + colonmonetary.glif + colontriangularmod + colontriangularmod.glif + commabelowcmb + commabelowcmb.glif + commercemark + commercemark.glif + copyleft + copyleft.glif + copyright + copyright.glif + currency + currency.glif + d.sups + d.sups.glif + dagger + dagger.glif + daggerdbl + daggerdbl.glif + dblprime + dblprime.glif + dcaron + dcaron.glif + dcroat + dcroat.glif + ddotbelow + ddotbelow.glif + de + de.glif + degree + degree.glif + delta + delta.glif + deposeemark + deposeemark.glif + diamondblack + diamondblack.glif + dieresis + dieresis.glif + dieresisbelowcmb + dieresisbelowcmb.glif + dieresiscmb + dieresiscmb.glif + dieresistonos + dieresistonos.glif + digamma + digamma.glif + divide + divide.glif + divisionslash + divisionslash.glif + dje + dje.glif + dlinebelow + dlinebelow.glif + dngb:cross + dngb_cross.glif + dong + dong.glif + dotaccent + dotaccent.glif + dotaccentcmb + dotaccentcmb.glif + dotbelowcmb + dotbelowcmb.glif + dotlessi + dotlessi.glif + dotlessj + dotlessj.glif + dze + dze.glif + dzhe + dzhe.glif + e.sups + e.sups.glif + eacute + eacute.glif + ebreve + ebreve.glif + ecaron + ecaron.glif + ecircumflex + ecircumflex.glif + ecircumflexacute + ecircumflexacute.glif + ecircumflexdotbelow + ecircumflexdotbelow.glif + ecircumflexgrave + ecircumflexgrave.glif + ecircumflexhoi + ecircumflexhoi.glif + ecircumflextilde + ecircumflextilde.glif + ecyr + ecyr.glif + edieresis + edieresis.glif + edotaccent + edotaccent.glif + edotbelow + edotbelow.glif + ef + ef.glif + egrave + egrave.glif + ehoi + ehoi.glif + eight.subs + eight.subs.glif + eight.sups + eight.sups.glif + eighthnote + eighthnote.glif + el + el.glif + ellipsis + ellipsis.glif + em + em.glif + emacron + emacron.glif + emdash + emdash.glif + en + en.glif + endash + endash.glif + endescender + endescender.glif + eng + eng.glif + eogonek + eogonek.glif + epsilon + epsilon.glif + epsilontonos + epsilontonos.glif + er + er.glif + es + es.glif + esdescender + esdescender.glif + estimated + estimated.glif + eta + eta.glif + etatonos + etatonos.glif + eth + eth.glif + etilde + etilde.glif + exclamdbl + exclamdbl.glif + exclamdown + exclamdown.glif + exclamquestion + exclamquestion.glif + f.sups + f.sups.glif + f_f + f_f.glif + f_f_i + f_f_i.glif + f_f_l + f_f_l.glif + f_i + f_i.glif + f_l + f_l.glif + figuredash + figuredash.glif + figurespace + figurespace.glif + fisheye + fisheye.glif + fita + fita.glif + five.subs + five.subs.glif + five.sups + five.sups.glif + fiveeighths + fiveeighths.glif + florin + florin.glif + four.subs + four.subs.glif + four.sups + four.sups.glif + fraction + fraction.glif + g.sups + g.sups.glif + gamma + gamma.glif + gbreve + gbreve.glif + gcaron + gcaron.glif + gcircumflex + gcircumflex.glif + gcommaaccent + gcommaaccent.glif + gdotaccent + gdotaccent.glif + germandbls + germandbls.glif + ghe + ghe.glif + ghestroke + ghestroke.glif + gheup + gheup.glif + gje + gje.glif + gmacron + gmacron.glif + gravecmb + gravecmb.glif + greaterequal + greaterequal.glif + gscript + gscript.glif + guarani + guarani.glif + guillemotleft + guillemotleft.glif + guillemotright + guillemotright.glif + guilsinglleft + guilsinglleft.glif + guilsinglright + guilsinglright.glif + h.sups + h.sups.glif + ha + ha.glif + hadescender + hadescender.glif + hard + hard.glif + hbar + hbar.glif + hbrevebelow + hbrevebelow.glif + hcircumflex + hcircumflex.glif + hdotbelow + hdotbelow.glif + hoicmb + hoicmb.glif + horizontalbar + horizontalbar.glif + horncmb + horncmb.glif + hryvnia + hryvnia.glif + hungarumlaut + hungarumlaut.glif + hungarumlautcmb + hungarumlautcmb.glif + i.sups + i.sups.glif + iacute + iacute.glif + icaron + icaron.glif + icircumflex + icircumflex.glif + icyr + icyr.glif + idieresis + idieresis.glif + idotbelow + idotbelow.glif + ie + ie.glif + iebreve + iebreve.glif + iegrave + iegrave.glif + ieukran + ieukran.glif + igrave + igrave.glif + igravecyr + igravecyr.glif + ihoi + ihoi.glif + ij + ij.glif + imacron + imacron.glif + imacroncyr + imacroncyr.glif + infinity + infinity.glif + integral + integral.glif + io + io.glif + iogonek + iogonek.glif + iota + iota.glif + iotadieresis + iotadieresis.glif + iotadieresistonos + iotadieresistonos.glif + iotatonos + iotatonos.glif + ishort + ishort.glif + itilde + itilde.glif + iukran + iukran.glif + izhitsa + izhitsa.glif + j.sups + j.sups.glif + jcircumflex + jcircumflex.glif + je + je.glif + k.sups + k.sups.glif + ka + ka.glif + kabashkir + kabashkir.glif + kadescender + kadescender.glif + kai + kai.glif + kappa + kappa.glif + kcommaaccent + kcommaaccent.glif + kgreenlandic + kgreenlandic.glif + kje + kje.glif + koppa + koppa.glif + l.sups + l.sups.glif + lacute + lacute.glif + lambda + lambda.glif + lcaron + lcaron.glif + lcommaaccent + lcommaaccent.glif + ldot + ldot.glif + ldotbelow + ldotbelow.glif + ldotbelowmacron + ldotbelowmacron.glif + lessequal + lessequal.glif + lira + lira.glif + liraturkish + liraturkish.glif + litre + litre.glif + lje + lje.glif + llinebelow + llinebelow.glif + logicalnot + logicalnot.glif + longs + longs.glif + lownumeralsign + lownumeralsign.glif + lozenge + lozenge.glif + lslash + lslash.glif + m.sups + m.sups.glif + macronbelowcmb + macronbelowcmb.glif + macroncmb + macroncmb.glif + macronmod + macronmod.glif + macute + macute.glif + mdotbelow + mdotbelow.glif + minus + minus.glif + mu + mu.glif + multiply + multiply.glif + n.sups + n.sups.glif + nacute + nacute.glif + naira + naira.glif + napostrophe + napostrophe.glif + ncaron + ncaron.glif + ncommaaccent + ncommaaccent.glif + ndotaccent + ndotaccent.glif + ndotbelow + ndotbelow.glif + ngrave + ngrave.glif + nine.subs + nine.subs.glif + nine.sups + nine.sups.glif + nje + nje.glif + nlinebelow + nlinebelow.glif + notequal + notequal.glif + ntilde + ntilde.glif + nu + nu.glif + numeralsign + numeralsign.glif + numero + numero.glif + o.sups + o.sups.glif + oacute + oacute.glif + obarcyr + obarcyr.glif + obreve + obreve.glif + ocaron + ocaron.glif + ocircumflex + ocircumflex.glif + ocircumflexacute + ocircumflexacute.glif + ocircumflexdotbelow + ocircumflexdotbelow.glif + ocircumflexgrave + ocircumflexgrave.glif + ocircumflexhoi + ocircumflexhoi.glif + ocircumflextilde + ocircumflextilde.glif + ocyr + ocyr.glif + odieresis + odieresis.glif + odieresiscyr + odieresiscyr.glif + odotbelow + odotbelow.glif + oe + oe.glif + ogonek + ogonek.glif + ogonekcmb + ogonekcmb.glif + ograve + ograve.glif + ohoi + ohoi.glif + ohorn + ohorn.glif + ohornacute + ohornacute.glif + ohorndotbelow + ohorndotbelow.glif + ohorngrave + ohorngrave.glif + ohornhoi + ohornhoi.glif + ohorntilde + ohorntilde.glif + ohungarumlaut + ohungarumlaut.glif + omacron + omacron.glif + omega + omega.glif + omegatonos + omegatonos.glif + omicron + omicron.glif + omicrontonos + omicrontonos.glif + one.subs + one.subs.glif + one.sups + one.sups.glif + oneeighth + oneeighth.glif + onehalf + onehalf.glif + onequarter + onequarter.glif + onethird + onethird.glif + ordfeminine + ordfeminine.glif + ordmasculine + ordmasculine.glif + oslash + oslash.glif + otilde + otilde.glif + overline + overline.glif + p.sups + p.sups.glif + palochka + palochka.glif + paragraph + paragraph.glif + parenleft.subs + parenleft.subs.glif + parenleft.sups + parenleft.sups.glif + parenright.subs + parenright.subs.glif + parenright.sups + parenright.sups.glif + partialdiff + partialdiff.glif + pe + pe.glif + periodcentered + periodcentered.glif + perthousand + perthousand.glif + peseta + peseta.glif + peso + peso.glif + phi + phi.glif + pi + pi.glif + plusminus + plusminus.glif + prime + prime.glif + product + product.glif + psi + psi.glif + questiondbl + questiondbl.glif + questiondown + questiondown.glif + questionexclam + questionexclam.glif + questiongreek + questiongreek.glif + quotedblbase + quotedblbase.glif + quotedblleft + quotedblleft.glif + quotedblright + quotedblright.glif + quoteleft + quoteleft.glif + quoteright + quoteright.glif + quotesinglbase + quotesinglbase.glif + r.sups + r.sups.glif + racute + racute.glif + radical + radical.glif + rcaron + rcaron.glif + rcommaaccent + rcommaaccent.glif + rdotbelow + rdotbelow.glif + rdotbelowmacron + rdotbelowmacron.glif + registered + registered.glif + rho + rho.glif + ring + ring.glif + ringcmb + ringcmb.glif + ringhalfleftmod + ringhalfleftmod.glif + ringhalfrightmod + ringhalfrightmod.glif + rlinebelow + rlinebelow.glif + ruble + ruble.glif + rupeeindian + rupeeindian.glif + s.sups + s.sups.glif + sacute + sacute.glif + sampi + sampi.glif + scaron + scaron.glif + scedilla + scedilla.glif + schwa + schwa.glif + schwacyr + schwacyr.glif + scircumflex + scircumflex.glif + scommaaccent + scommaaccent.glif + sdotaccent + sdotaccent.glif + sdotbelow + sdotbelow.glif + section + section.glif + servicemark + servicemark.glif + seven.subs + seven.subs.glif + seven.sups + seven.sups.glif + seveneighths + seveneighths.glif + sha + sha.glif + shcha + shcha.glif + shha + shha.glif + sigma + sigma.glif + sigma.end + sigma.end.glif + similar + similar.glif + six.subs + six.subs.glif + six.sups + six.sups.glif + soft + soft.glif + soundcopyright + soundcopyright.glif + squareblack + squareblack.glif + squareshadow + squareshadow.glif + sterling + sterling.glif + stigma + stigma.glif + summation + summation.glif + t.sups + t.sups.glif + tau + tau.glif + tbar + tbar.glif + tcaron + tcaron.glif + tcedilla + tcedilla.glif + tcommaaccent + tcommaaccent.glif + tdieresis + tdieresis.glif + tdotbelow + tdotbelow.glif + te + te.glif + tenge + tenge.glif + theta + theta.glif + thorn + thorn.glif + three.subs + three.subs.glif + three.sups + three.sups.glif + threeeighths + threeeighths.glif + threeemdash + threeemdash.glif + threequarters + threequarters.glif + tilde + tilde.glif + tildecmb + tildecmb.glif + tlinebelow + tlinebelow.glif + tonos + tonos.glif + trademark + trademark.glif + triangleblackdown + triangleblackdown.glif + triangleblackleft + triangleblackleft.glif + triangleblackright + triangleblackright.glif + triangleblackup + triangleblackup.glif + trianglewhitedown + trianglewhitedown.glif + trianglewhiteleft + trianglewhiteleft.glif + trianglewhiteright + trianglewhiteright.glif + trianglewhiteup + trianglewhiteup.glif + triangularbullet + triangularbullet.glif + tse + tse.glif + tshe + tshe.glif + tugrik + tugrik.glif + two.subs + two.subs.glif + two.sups + two.sups.glif + twodotenleader + twodotenleader.glif + twoemdash + twoemdash.glif + twothirds + twothirds.glif + u.sups + u.sups.glif + uacute + uacute.glif + uacutedblcyr + uacutedblcyr.glif + ubreve + ubreve.glif + ucaron + ucaron.glif + ucircumflex + ucircumflex.glif + ucyr + ucyr.glif + udieresis + udieresis.glif + udieresisacute + udieresisacute.glif + udieresiscaron + udieresiscaron.glif + udieresisgrave + udieresisgrave.glif + udieresismacron + udieresismacron.glif + udotbelow + udotbelow.glif + ugrave + ugrave.glif + uhoi + uhoi.glif + uhorn + uhorn.glif + uhornacute + uhornacute.glif + uhorndotbelow + uhorndotbelow.glif + uhorngrave + uhorngrave.glif + uhornhoi + uhornhoi.glif + uhorntilde + uhorntilde.glif + uhungarumlaut + uhungarumlaut.glif + umacron + umacron.glif + umacroncyr + umacroncyr.glif + uogonek + uogonek.glif + upsilon + upsilon.glif + upsilondieresis + upsilondieresis.glif + upsilondieresistonos + upsilondieresistonos.glif + upsilontonos + upsilontonos.glif + uring + uring.glif + ushort + ushort.glif + ustraight + ustraight.glif + ustraightstroke + ustraightstroke.glif + utilde + utilde.glif + v.sups + v.sups.glif + ve + ve.glif + verticallinebelowcmb + verticallinebelowcmb.glif + verticallinelowmod + verticallinelowmod.glif + verticallinemod + verticallinemod.glif + w.sups + w.sups.glif + wacute + wacute.glif + wcircumflex + wcircumflex.glif + wdieresis + wdieresis.glif + wgrave + wgrave.glif + won + won.glif + x.sups + x.sups.glif + xi + xi.glif + y.sups + y.sups.glif + ya + ya.glif + yacute + yacute.glif + yat + yat.glif + ycircumflex + ycircumflex.glif + ydieresis + ydieresis.glif + ydotaccent + ydotaccent.glif + ydotbelow + ydotbelow.glif + yen + yen.glif + yeru + yeru.glif + ygrave + ygrave.glif + yhoi + yhoi.glif + yi + yi.glif + ytilde + ytilde.glif + yu + yu.glif + z.sups + z.sups.glif + zacute + zacute.glif + zcaron + zcaron.glif + zdotaccent + zdotaccent.glif + zdotbelow + zdotbelow.glif + ze + ze.glif + zedescender + zedescender.glif + zero.subs + zero.subs.glif + zero.sups + zero.sups.glif + zeta + zeta.glif + zhe + zhe.glif + zhebreve + zhebreve.glif + zhedescender + zhedescender.glif + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/copyleft.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/copyleft.glif new file mode 100644 index 000000000..e22789b36 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/copyleft.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/copyright.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/copyright.glif new file mode 100644 index 000000000..4f77528ed --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/copyright.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/currency.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/currency.glif new file mode 100644 index 000000000..956657cd0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/currency.glif @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/d.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/d.sups.glif new file mode 100644 index 000000000..23721313e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/d.sups.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dagger.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dagger.glif new file mode 100644 index 000000000..a7151d4e0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dagger.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/daggerdbl.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/daggerdbl.glif new file mode 100644 index 000000000..d46081730 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/daggerdbl.glif @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dblprime.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dblprime.glif new file mode 100644 index 000000000..0354ad1ef --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dblprime.glif @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dcaron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dcaron.glif new file mode 100644 index 000000000..bfa92a771 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dcaron.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dcroat.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dcroat.glif new file mode 100644 index 000000000..a18967462 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dcroat.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ddotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ddotbelow.glif new file mode 100644 index 000000000..15a578afe --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ddotbelow.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/de.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/de.glif new file mode 100644 index 000000000..b5768b73c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/de.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/degree.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/degree.glif new file mode 100644 index 000000000..c83f03143 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/degree.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/delta.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/delta.glif new file mode 100644 index 000000000..a86227d2f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/delta.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/deposeemark.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/deposeemark.glif new file mode 100644 index 000000000..d61f03f68 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/deposeemark.glif @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/diamondblack.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/diamondblack.glif new file mode 100644 index 000000000..fc56073cb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/diamondblack.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dieresis.glif new file mode 100644 index 000000000..2e25f7098 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dieresis.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dieresisbelowcmb.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dieresisbelowcmb.glif new file mode 100644 index 000000000..1d03e04ed --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dieresisbelowcmb.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dieresiscmb.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dieresiscmb.glif new file mode 100644 index 000000000..f13d24538 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dieresiscmb.glif @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dieresistonos.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dieresistonos.glif new file mode 100644 index 000000000..fb1649c13 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dieresistonos.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/digamma.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/digamma.glif new file mode 100644 index 000000000..e34d1ca42 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/digamma.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/divide.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/divide.glif new file mode 100644 index 000000000..ede58ba47 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/divide.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/divisionslash.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/divisionslash.glif new file mode 100644 index 000000000..f2ed9a2af --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/divisionslash.glif @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dje.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dje.glif new file mode 100644 index 000000000..1969f731f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dje.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dlinebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dlinebelow.glif new file mode 100644 index 000000000..ad4b611c0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dlinebelow.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dngb_cross.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dngb_cross.glif new file mode 100644 index 000000000..aeabf0669 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dngb_cross.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dong.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dong.glif new file mode 100644 index 000000000..924e94116 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dong.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dotaccent.glif new file mode 100644 index 000000000..de42e7a39 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dotaccent.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dotaccentcmb.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dotaccentcmb.glif new file mode 100644 index 000000000..6194947fb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dotaccentcmb.glif @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dotbelowcmb.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dotbelowcmb.glif new file mode 100644 index 000000000..2d14f476c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dotbelowcmb.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dotlessi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dotlessi.glif new file mode 100644 index 000000000..e1e6bbc08 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dotlessi.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dotlessj.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dotlessj.glif new file mode 100644 index 000000000..7a19d65d5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dotlessj.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dze.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dze.glif new file mode 100644 index 000000000..a29ced1f5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dze.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dzhe.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dzhe.glif new file mode 100644 index 000000000..f2d53e6b2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/dzhe.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/e.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/e.sups.glif new file mode 100644 index 000000000..5c3719f47 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/e.sups.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/eacute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/eacute.glif new file mode 100644 index 000000000..8590b4aeb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/eacute.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ebreve.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ebreve.glif new file mode 100644 index 000000000..51741336f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ebreve.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ecaron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ecaron.glif new file mode 100644 index 000000000..148da8aaa --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ecaron.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ecircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ecircumflex.glif new file mode 100644 index 000000000..dafe7553c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ecircumflex.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ecircumflexacute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ecircumflexacute.glif new file mode 100644 index 000000000..09b010530 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ecircumflexacute.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ecircumflexdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ecircumflexdotbelow.glif new file mode 100644 index 000000000..06e023caf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ecircumflexdotbelow.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ecircumflexgrave.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ecircumflexgrave.glif new file mode 100644 index 000000000..8b083c064 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ecircumflexgrave.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ecircumflexhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ecircumflexhoi.glif new file mode 100644 index 000000000..d400d9375 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ecircumflexhoi.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ecircumflextilde.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ecircumflextilde.glif new file mode 100644 index 000000000..0757049c4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ecircumflextilde.glif @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ecyr.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ecyr.glif new file mode 100644 index 000000000..2dd1e5116 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ecyr.glif @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/edieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/edieresis.glif new file mode 100644 index 000000000..b43ddfd9f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/edieresis.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/edotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/edotaccent.glif new file mode 100644 index 000000000..edcb6e756 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/edotaccent.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/edotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/edotbelow.glif new file mode 100644 index 000000000..10c9ba807 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/edotbelow.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ef.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ef.glif new file mode 100644 index 000000000..e0e273fc3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ef.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/egrave.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/egrave.glif new file mode 100644 index 000000000..afc403fd0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/egrave.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ehoi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ehoi.glif new file mode 100644 index 000000000..8b8021fe4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ehoi.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/eight.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/eight.subs.glif new file mode 100644 index 000000000..d6fa023bf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/eight.subs.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/eight.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/eight.sups.glif new file mode 100644 index 000000000..e647deb2f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/eight.sups.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/eighthnote.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/eighthnote.glif new file mode 100644 index 000000000..09525afe0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/eighthnote.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/el.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/el.glif new file mode 100644 index 000000000..4e2bb9ce2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/el.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ellipsis.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ellipsis.glif new file mode 100644 index 000000000..9325422cf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ellipsis.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/em.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/em.glif new file mode 100644 index 000000000..21015d61c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/em.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/emacron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/emacron.glif new file mode 100644 index 000000000..fb6dac1b2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/emacron.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/emdash.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/emdash.glif new file mode 100644 index 000000000..c4f9f36d1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/emdash.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/en.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/en.glif new file mode 100644 index 000000000..dc7fe81de --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/en.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/endash.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/endash.glif new file mode 100644 index 000000000..d1ac007ad --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/endash.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/endescender.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/endescender.glif new file mode 100644 index 000000000..5a769e70d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/endescender.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/eng.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/eng.glif new file mode 100644 index 000000000..17423f0ec --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/eng.glif @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/eogonek.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/eogonek.glif new file mode 100644 index 000000000..3c2e514b0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/eogonek.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/epsilon.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/epsilon.glif new file mode 100644 index 000000000..7103677c9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/epsilon.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/epsilontonos.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/epsilontonos.glif new file mode 100644 index 000000000..ed09ffb89 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/epsilontonos.glif @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/er.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/er.glif new file mode 100644 index 000000000..a326ebc8a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/er.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/es.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/es.glif new file mode 100644 index 000000000..fbf069538 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/es.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/esdescender.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/esdescender.glif new file mode 100644 index 000000000..fe64a34a1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/esdescender.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/estimated.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/estimated.glif new file mode 100644 index 000000000..539c6c77e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/estimated.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/eta.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/eta.glif new file mode 100644 index 000000000..0768f67f4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/eta.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/etatonos.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/etatonos.glif new file mode 100644 index 000000000..73da9ae6d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/etatonos.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/eth.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/eth.glif new file mode 100644 index 000000000..34188038a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/eth.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/etilde.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/etilde.glif new file mode 100644 index 000000000..b1b98e986 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/etilde.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/exclamdbl.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/exclamdbl.glif new file mode 100644 index 000000000..ef740e791 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/exclamdbl.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/exclamdown.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/exclamdown.glif new file mode 100644 index 000000000..d4c1568af --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/exclamdown.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/exclamquestion.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/exclamquestion.glif new file mode 100644 index 000000000..06fa274a1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/exclamquestion.glif @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/f.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/f.sups.glif new file mode 100644 index 000000000..eaf7ad1c2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/f.sups.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/f_f.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/f_f.glif new file mode 100644 index 000000000..e9da2ef12 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/f_f.glif @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/f_f_i.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/f_f_i.glif new file mode 100644 index 000000000..eff1f2bee --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/f_f_i.glif @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/f_f_l.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/f_f_l.glif new file mode 100644 index 000000000..e2013e9db --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/f_f_l.glif @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/f_i.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/f_i.glif new file mode 100644 index 000000000..b00439d62 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/f_i.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/f_l.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/f_l.glif new file mode 100644 index 000000000..11a099a0d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/f_l.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/figuredash.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/figuredash.glif new file mode 100644 index 000000000..59738715f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/figuredash.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/figurespace.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/figurespace.glif new file mode 100644 index 000000000..41809ef7a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/figurespace.glif @@ -0,0 +1,5 @@ + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/fisheye.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/fisheye.glif new file mode 100644 index 000000000..fcec83053 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/fisheye.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/fita.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/fita.glif new file mode 100644 index 000000000..cee1277d0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/fita.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/five.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/five.subs.glif new file mode 100644 index 000000000..eb6fce7e7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/five.subs.glif @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/five.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/five.sups.glif new file mode 100644 index 000000000..17a6f9d2e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/five.sups.glif @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/fiveeighths.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/fiveeighths.glif new file mode 100644 index 000000000..76d659fa2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/fiveeighths.glif @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/florin.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/florin.glif new file mode 100644 index 000000000..efeb94b58 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/florin.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/four.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/four.subs.glif new file mode 100644 index 000000000..1f343e8a1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/four.subs.glif @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/four.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/four.sups.glif new file mode 100644 index 000000000..df49f1966 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/four.sups.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/fraction.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/fraction.glif new file mode 100644 index 000000000..09f03171b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/fraction.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/g.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/g.sups.glif new file mode 100644 index 000000000..6f9494db0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/g.sups.glif @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gamma.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gamma.glif new file mode 100644 index 000000000..f8f0fc967 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gamma.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gbreve.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gbreve.glif new file mode 100644 index 000000000..053de70a8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gbreve.glif @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gcaron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gcaron.glif new file mode 100644 index 000000000..4cb0079fb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gcaron.glif @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gcircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gcircumflex.glif new file mode 100644 index 000000000..82b160461 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gcircumflex.glif @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gcommaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gcommaaccent.glif new file mode 100644 index 000000000..c51cfbab6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gcommaaccent.glif @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gdotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gdotaccent.glif new file mode 100644 index 000000000..27d344308 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gdotaccent.glif @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/germandbls.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/germandbls.glif new file mode 100644 index 000000000..e800c16b8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/germandbls.glif @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ghe.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ghe.glif new file mode 100644 index 000000000..fcc03e66a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ghe.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ghestroke.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ghestroke.glif new file mode 100644 index 000000000..21037076b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ghestroke.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gheup.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gheup.glif new file mode 100644 index 000000000..d2f04fd13 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gheup.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gje.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gje.glif new file mode 100644 index 000000000..f3673f82a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gje.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gmacron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gmacron.glif new file mode 100644 index 000000000..4189abc65 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gmacron.glif @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gravecmb.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gravecmb.glif new file mode 100644 index 000000000..31f87ef9f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gravecmb.glif @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/greaterequal.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/greaterequal.glif new file mode 100644 index 000000000..457a65319 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/greaterequal.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gscript.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gscript.glif new file mode 100644 index 000000000..d1c32004f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/gscript.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/guarani.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/guarani.glif new file mode 100644 index 000000000..01fc2d22a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/guarani.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/guillemotleft.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/guillemotleft.glif new file mode 100644 index 000000000..f5a6d05b7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/guillemotleft.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/guillemotright.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/guillemotright.glif new file mode 100644 index 000000000..12846b633 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/guillemotright.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/guilsinglleft.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/guilsinglleft.glif new file mode 100644 index 000000000..b86bf83ce --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/guilsinglleft.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/guilsinglright.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/guilsinglright.glif new file mode 100644 index 000000000..4aad6db5d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/guilsinglright.glif @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/h.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/h.sups.glif new file mode 100644 index 000000000..77f73846d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/h.sups.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ha.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ha.glif new file mode 100644 index 000000000..2484e4e54 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ha.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hadescender.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hadescender.glif new file mode 100644 index 000000000..34db6b33a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hadescender.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hard.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hard.glif new file mode 100644 index 000000000..aed1646c1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hard.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hbar.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hbar.glif new file mode 100644 index 000000000..fbd114c92 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hbar.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hbrevebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hbrevebelow.glif new file mode 100644 index 000000000..4495fec64 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hbrevebelow.glif @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hcircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hcircumflex.glif new file mode 100644 index 000000000..45fae2fc4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hcircumflex.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hdotbelow.glif new file mode 100644 index 000000000..e89cae96e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hdotbelow.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hoicmb.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hoicmb.glif new file mode 100644 index 000000000..d1884a348 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hoicmb.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/horizontalbar.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/horizontalbar.glif new file mode 100644 index 000000000..e0b2a889c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/horizontalbar.glif @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/horncmb.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/horncmb.glif new file mode 100644 index 000000000..6ad8fe424 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/horncmb.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hryvnia.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hryvnia.glif new file mode 100644 index 000000000..df80b5a30 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hryvnia.glif @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hungarumlaut.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hungarumlaut.glif new file mode 100644 index 000000000..aa26f07ef --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hungarumlaut.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hungarumlautcmb.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hungarumlautcmb.glif new file mode 100644 index 000000000..e1cb6ca8c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/hungarumlautcmb.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/i.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/i.sups.glif new file mode 100644 index 000000000..8147a681c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/i.sups.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iacute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iacute.glif new file mode 100644 index 000000000..919a4e7af --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iacute.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/icaron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/icaron.glif new file mode 100644 index 000000000..27077c996 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/icaron.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/icircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/icircumflex.glif new file mode 100644 index 000000000..795be0b54 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/icircumflex.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/icyr.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/icyr.glif new file mode 100644 index 000000000..24f9c8b4a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/icyr.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/idieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/idieresis.glif new file mode 100644 index 000000000..1332b2ce6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/idieresis.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/idotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/idotbelow.glif new file mode 100644 index 000000000..67cfc46a1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/idotbelow.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ie.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ie.glif new file mode 100644 index 000000000..f7f01883d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ie.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iebreve.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iebreve.glif new file mode 100644 index 000000000..3048842ac --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iebreve.glif @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iegrave.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iegrave.glif new file mode 100644 index 000000000..d5cfa7a7e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iegrave.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ieukran.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ieukran.glif new file mode 100644 index 000000000..fcdec3361 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ieukran.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/igrave.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/igrave.glif new file mode 100644 index 000000000..c7d71c3a0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/igrave.glif @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/igravecyr.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/igravecyr.glif new file mode 100644 index 000000000..cb7f568f5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/igravecyr.glif @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ihoi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ihoi.glif new file mode 100644 index 000000000..b917c501b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ihoi.glif @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ij.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ij.glif new file mode 100644 index 000000000..264c6abdc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ij.glif @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/imacron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/imacron.glif new file mode 100644 index 000000000..0cd9bc646 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/imacron.glif @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/imacroncyr.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/imacroncyr.glif new file mode 100644 index 000000000..3891a6978 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/imacroncyr.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/infinity.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/infinity.glif new file mode 100644 index 000000000..b57c5a3d5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/infinity.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/integral.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/integral.glif new file mode 100644 index 000000000..2f5f16088 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/integral.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/io.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/io.glif new file mode 100644 index 000000000..91a415e64 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/io.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iogonek.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iogonek.glif new file mode 100644 index 000000000..5222ece60 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iogonek.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iota.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iota.glif new file mode 100644 index 000000000..b2b9d735d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iota.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iotadieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iotadieresis.glif new file mode 100644 index 000000000..125c0831d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iotadieresis.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iotadieresistonos.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iotadieresistonos.glif new file mode 100644 index 000000000..43c2b73f6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iotadieresistonos.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iotatonos.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iotatonos.glif new file mode 100644 index 000000000..551bddfef --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iotatonos.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ishort.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ishort.glif new file mode 100644 index 000000000..364f2a6b7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ishort.glif @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/itilde.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/itilde.glif new file mode 100644 index 000000000..7905b035c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/itilde.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iukran.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iukran.glif new file mode 100644 index 000000000..64402471a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/iukran.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/izhitsa.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/izhitsa.glif new file mode 100644 index 000000000..f14e8e170 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/izhitsa.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/j.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/j.sups.glif new file mode 100644 index 000000000..f7e199e84 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/j.sups.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/jcircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/jcircumflex.glif new file mode 100644 index 000000000..66122b350 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/jcircumflex.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/je.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/je.glif new file mode 100644 index 000000000..501aaccfd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/je.glif @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/k.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/k.sups.glif new file mode 100644 index 000000000..0289df898 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/k.sups.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ka.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ka.glif new file mode 100644 index 000000000..91f322170 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ka.glif @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/kabashkir.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/kabashkir.glif new file mode 100644 index 000000000..c91f68be2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/kabashkir.glif @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/kadescender.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/kadescender.glif new file mode 100644 index 000000000..0af3eb49b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/kadescender.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/kai.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/kai.glif new file mode 100644 index 000000000..2fa8a6007 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/kai.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/kappa.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/kappa.glif new file mode 100644 index 000000000..6c9872351 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/kappa.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/kcommaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/kcommaaccent.glif new file mode 100644 index 000000000..d04b3a638 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/kcommaaccent.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/kgreenlandic.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/kgreenlandic.glif new file mode 100644 index 000000000..b59676cf5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/kgreenlandic.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/kje.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/kje.glif new file mode 100644 index 000000000..80d2527f5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/kje.glif @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/koppa.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/koppa.glif new file mode 100644 index 000000000..78d4c908c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/koppa.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/l.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/l.sups.glif new file mode 100644 index 000000000..2e6dd57bf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/l.sups.glif @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lacute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lacute.glif new file mode 100644 index 000000000..7b0271ce7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lacute.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lambda.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lambda.glif new file mode 100644 index 000000000..697a26188 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lambda.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lcaron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lcaron.glif new file mode 100644 index 000000000..71bdf084d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lcaron.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lcommaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lcommaaccent.glif new file mode 100644 index 000000000..61458a87e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lcommaaccent.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ldot.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ldot.glif new file mode 100644 index 000000000..51682b5f8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ldot.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ldotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ldotbelow.glif new file mode 100644 index 000000000..1de280a84 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ldotbelow.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ldotbelowmacron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ldotbelowmacron.glif new file mode 100644 index 000000000..b2ad8ffb3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ldotbelowmacron.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lessequal.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lessequal.glif new file mode 100644 index 000000000..7c5aa0d74 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lessequal.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lira.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lira.glif new file mode 100644 index 000000000..e780758c5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lira.glif @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/liraturkish.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/liraturkish.glif new file mode 100644 index 000000000..f8a6f3966 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/liraturkish.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/litre.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/litre.glif new file mode 100644 index 000000000..7a6ff2a36 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/litre.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lje.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lje.glif new file mode 100644 index 000000000..f9cd11347 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lje.glif @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/llinebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/llinebelow.glif new file mode 100644 index 000000000..50ce3c89e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/llinebelow.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/logicalnot.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/logicalnot.glif new file mode 100644 index 000000000..3264a66fc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/logicalnot.glif @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/longs.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/longs.glif new file mode 100644 index 000000000..9320631b3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/longs.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lownumeralsign.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lownumeralsign.glif new file mode 100644 index 000000000..f559c1129 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lownumeralsign.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lozenge.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lozenge.glif new file mode 100644 index 000000000..a69aba9a1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lozenge.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lslash.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lslash.glif new file mode 100644 index 000000000..6f83a7d53 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/lslash.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/m.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/m.sups.glif new file mode 100644 index 000000000..2676a4a35 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/m.sups.glif @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/macronbelowcmb.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/macronbelowcmb.glif new file mode 100644 index 000000000..4de21641e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/macronbelowcmb.glif @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/macroncmb.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/macroncmb.glif new file mode 100644 index 000000000..8d5bc46be --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/macroncmb.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/macronmod.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/macronmod.glif new file mode 100644 index 000000000..4061ee9c8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/macronmod.glif @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/macute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/macute.glif new file mode 100644 index 000000000..dea0e8005 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/macute.glif @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/mdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/mdotbelow.glif new file mode 100644 index 000000000..91b79afe6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/mdotbelow.glif @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/minus.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/minus.glif new file mode 100644 index 000000000..6a1be7eec --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/minus.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/mu.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/mu.glif new file mode 100644 index 000000000..929c66ac2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/mu.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/multiply.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/multiply.glif new file mode 100644 index 000000000..8814a30ed --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/multiply.glif @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/n.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/n.sups.glif new file mode 100644 index 000000000..4a113e91a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/n.sups.glif @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/nacute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/nacute.glif new file mode 100644 index 000000000..7e1885f84 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/nacute.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/naira.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/naira.glif new file mode 100644 index 000000000..1da2ff1ad --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/naira.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/napostrophe.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/napostrophe.glif new file mode 100644 index 000000000..b47011e17 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/napostrophe.glif @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ncaron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ncaron.glif new file mode 100644 index 000000000..bf5dc4d7b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ncaron.glif @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ncommaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ncommaaccent.glif new file mode 100644 index 000000000..852c2363a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ncommaaccent.glif @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ndotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ndotaccent.glif new file mode 100644 index 000000000..f1ec68767 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ndotaccent.glif @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ndotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ndotbelow.glif new file mode 100644 index 000000000..58f4ef8c6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ndotbelow.glif @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ngrave.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ngrave.glif new file mode 100644 index 000000000..b24d88236 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ngrave.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/nine.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/nine.subs.glif new file mode 100644 index 000000000..bb2ba6661 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/nine.subs.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/nine.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/nine.sups.glif new file mode 100644 index 000000000..e836d6d41 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/nine.sups.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/nje.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/nje.glif new file mode 100644 index 000000000..6cc18eee4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/nje.glif @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/nlinebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/nlinebelow.glif new file mode 100644 index 000000000..8faa1be59 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/nlinebelow.glif @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/notequal.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/notequal.glif new file mode 100644 index 000000000..7aa86e223 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/notequal.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ntilde.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ntilde.glif new file mode 100644 index 000000000..d34f120d3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ntilde.glif @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/nu.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/nu.glif new file mode 100644 index 000000000..923f61665 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/nu.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/numeralsign.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/numeralsign.glif new file mode 100644 index 000000000..045503033 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/numeralsign.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/numero.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/numero.glif new file mode 100644 index 000000000..1ac3ac686 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/numero.glif @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/o.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/o.sups.glif new file mode 100644 index 000000000..d7296e226 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/o.sups.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/oacute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/oacute.glif new file mode 100644 index 000000000..d67ba00c2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/oacute.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/obarcyr.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/obarcyr.glif new file mode 100644 index 000000000..7b100a40f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/obarcyr.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/obreve.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/obreve.glif new file mode 100644 index 000000000..e8801445d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/obreve.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ocaron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ocaron.glif new file mode 100644 index 000000000..f0e7b9ec6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ocaron.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ocircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ocircumflex.glif new file mode 100644 index 000000000..a763c6fc4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ocircumflex.glif @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ocircumflexacute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ocircumflexacute.glif new file mode 100644 index 000000000..195ecd954 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ocircumflexacute.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ocircumflexdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ocircumflexdotbelow.glif new file mode 100644 index 000000000..81aac8d11 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ocircumflexdotbelow.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ocircumflexgrave.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ocircumflexgrave.glif new file mode 100644 index 000000000..16fca98ff --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ocircumflexgrave.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ocircumflexhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ocircumflexhoi.glif new file mode 100644 index 000000000..40b8af01c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ocircumflexhoi.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ocircumflextilde.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ocircumflextilde.glif new file mode 100644 index 000000000..0ee024df2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ocircumflextilde.glif @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ocyr.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ocyr.glif new file mode 100644 index 000000000..0820299ef --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ocyr.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/odieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/odieresis.glif new file mode 100644 index 000000000..990e2e265 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/odieresis.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/odieresiscyr.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/odieresiscyr.glif new file mode 100644 index 000000000..abfd2ebcb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/odieresiscyr.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/odotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/odotbelow.glif new file mode 100644 index 000000000..7ce0eb994 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/odotbelow.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/oe.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/oe.glif new file mode 100644 index 000000000..ee4746215 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/oe.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ogonek.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ogonek.glif new file mode 100644 index 000000000..662f8a307 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ogonek.glif @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ogonekcmb.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ogonekcmb.glif new file mode 100644 index 000000000..00c573041 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ogonekcmb.glif @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ograve.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ograve.glif new file mode 100644 index 000000000..870dd2565 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ograve.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ohoi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ohoi.glif new file mode 100644 index 000000000..913041354 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ohoi.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ohorn.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ohorn.glif new file mode 100644 index 000000000..ebe785d91 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ohorn.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ohornacute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ohornacute.glif new file mode 100644 index 000000000..426dba6a0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ohornacute.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ohorndotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ohorndotbelow.glif new file mode 100644 index 000000000..571453756 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ohorndotbelow.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ohorngrave.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ohorngrave.glif new file mode 100644 index 000000000..c243e4f7f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ohorngrave.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ohornhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ohornhoi.glif new file mode 100644 index 000000000..112fccc2b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ohornhoi.glif @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ohorntilde.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ohorntilde.glif new file mode 100644 index 000000000..ebfe9330b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ohorntilde.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ohungarumlaut.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ohungarumlaut.glif new file mode 100644 index 000000000..8fd471261 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ohungarumlaut.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/omacron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/omacron.glif new file mode 100644 index 000000000..ea8bf8a6e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/omacron.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/omega.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/omega.glif new file mode 100644 index 000000000..60adc5da4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/omega.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/omegatonos.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/omegatonos.glif new file mode 100644 index 000000000..74e011001 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/omegatonos.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/omicron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/omicron.glif new file mode 100644 index 000000000..4b774f002 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/omicron.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/omicrontonos.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/omicrontonos.glif new file mode 100644 index 000000000..7aec24cf7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/omicrontonos.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/one.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/one.subs.glif new file mode 100644 index 000000000..821e2f37c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/one.subs.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/one.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/one.sups.glif new file mode 100644 index 000000000..bf129572c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/one.sups.glif @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/oneeighth.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/oneeighth.glif new file mode 100644 index 000000000..dedc15eba --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/oneeighth.glif @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/onehalf.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/onehalf.glif new file mode 100644 index 000000000..23d5277a8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/onehalf.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/onequarter.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/onequarter.glif new file mode 100644 index 000000000..974ead155 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/onequarter.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/onethird.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/onethird.glif new file mode 100644 index 000000000..334ef2549 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/onethird.glif @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ordfeminine.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ordfeminine.glif new file mode 100644 index 000000000..c7450321e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ordfeminine.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ordmasculine.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ordmasculine.glif new file mode 100644 index 000000000..130b61a77 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ordmasculine.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/oslash.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/oslash.glif new file mode 100644 index 000000000..558d9256b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/oslash.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/otilde.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/otilde.glif new file mode 100644 index 000000000..b1c34549c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/otilde.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/overline.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/overline.glif new file mode 100644 index 000000000..2108265c3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/overline.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/p.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/p.sups.glif new file mode 100644 index 000000000..ace0e8b6b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/p.sups.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/palochka.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/palochka.glif new file mode 100644 index 000000000..a7fa6d91c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/palochka.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/paragraph.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/paragraph.glif new file mode 100644 index 000000000..4b68ff927 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/paragraph.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/parenleft.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/parenleft.subs.glif new file mode 100644 index 000000000..c81be4dc8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/parenleft.subs.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/parenleft.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/parenleft.sups.glif new file mode 100644 index 000000000..ec7c3b3dd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/parenleft.sups.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/parenright.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/parenright.subs.glif new file mode 100644 index 000000000..38b4b4199 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/parenright.subs.glif @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/parenright.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/parenright.sups.glif new file mode 100644 index 000000000..2b4e14e5a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/parenright.sups.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/partialdiff.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/partialdiff.glif new file mode 100644 index 000000000..f1d965e61 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/partialdiff.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/pe.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/pe.glif new file mode 100644 index 000000000..c5ca79790 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/pe.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/periodcentered.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/periodcentered.glif new file mode 100644 index 000000000..215f6821d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/periodcentered.glif @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/perthousand.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/perthousand.glif new file mode 100644 index 000000000..0c73d620a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/perthousand.glif @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/peseta.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/peseta.glif new file mode 100644 index 000000000..39a59a789 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/peseta.glif @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/peso.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/peso.glif new file mode 100644 index 000000000..385536369 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/peso.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/phi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/phi.glif new file mode 100644 index 000000000..6b60e57a5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/phi.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/pi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/pi.glif new file mode 100644 index 000000000..eaf0adf82 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/pi.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/plusminus.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/plusminus.glif new file mode 100644 index 000000000..945ad8242 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/plusminus.glif @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/prime.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/prime.glif new file mode 100644 index 000000000..93cdae522 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/prime.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/product.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/product.glif new file mode 100644 index 000000000..7de4814e4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/product.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/psi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/psi.glif new file mode 100644 index 000000000..088dcf696 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/psi.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/questiondbl.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/questiondbl.glif new file mode 100644 index 000000000..07c49c3b9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/questiondbl.glif @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/questiondown.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/questiondown.glif new file mode 100644 index 000000000..1d64830a8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/questiondown.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/questionexclam.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/questionexclam.glif new file mode 100644 index 000000000..ca42f4fdd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/questionexclam.glif @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/questiongreek.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/questiongreek.glif new file mode 100644 index 000000000..541d353e6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/questiongreek.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/quotedblbase.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/quotedblbase.glif new file mode 100644 index 000000000..16a851251 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/quotedblbase.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/quotedblleft.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/quotedblleft.glif new file mode 100644 index 000000000..b59f0758d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/quotedblleft.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/quotedblright.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/quotedblright.glif new file mode 100644 index 000000000..61495999e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/quotedblright.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/quoteleft.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/quoteleft.glif new file mode 100644 index 000000000..e03a740ec --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/quoteleft.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/quoteright.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/quoteright.glif new file mode 100644 index 000000000..e904fe71a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/quoteright.glif @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/quotesinglbase.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/quotesinglbase.glif new file mode 100644 index 000000000..5edd93a44 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/quotesinglbase.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/r.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/r.sups.glif new file mode 100644 index 000000000..1b2bd9088 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/r.sups.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/racute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/racute.glif new file mode 100644 index 000000000..614782883 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/racute.glif @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/radical.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/radical.glif new file mode 100644 index 000000000..a6f3baf6b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/radical.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/rcaron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/rcaron.glif new file mode 100644 index 000000000..2e6b99bdb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/rcaron.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/rcommaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/rcommaaccent.glif new file mode 100644 index 000000000..6c3382492 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/rcommaaccent.glif @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/rdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/rdotbelow.glif new file mode 100644 index 000000000..d316c9651 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/rdotbelow.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/rdotbelowmacron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/rdotbelowmacron.glif new file mode 100644 index 000000000..26dfe5228 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/rdotbelowmacron.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/registered.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/registered.glif new file mode 100644 index 000000000..3670576a8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/registered.glif @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/rho.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/rho.glif new file mode 100644 index 000000000..e62da9677 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/rho.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ring.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ring.glif new file mode 100644 index 000000000..93c2d66d4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ring.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ringcmb.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ringcmb.glif new file mode 100644 index 000000000..9fbc0d1a3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ringcmb.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ringhalfleftmod.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ringhalfleftmod.glif new file mode 100644 index 000000000..039515221 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ringhalfleftmod.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ringhalfrightmod.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ringhalfrightmod.glif new file mode 100644 index 000000000..ab2faf59f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ringhalfrightmod.glif @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/rlinebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/rlinebelow.glif new file mode 100644 index 000000000..8469f3ee6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/rlinebelow.glif @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ruble.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ruble.glif new file mode 100644 index 000000000..fda767ed1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ruble.glif @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/rupeeindian.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/rupeeindian.glif new file mode 100644 index 000000000..0857b48cf --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/rupeeindian.glif @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/s.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/s.sups.glif new file mode 100644 index 000000000..687abc7dd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/s.sups.glif @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/sacute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/sacute.glif new file mode 100644 index 000000000..d180c4787 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/sacute.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/sampi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/sampi.glif new file mode 100644 index 000000000..1e808c87e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/sampi.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/scaron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/scaron.glif new file mode 100644 index 000000000..68550ba67 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/scaron.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/scedilla.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/scedilla.glif new file mode 100644 index 000000000..d5b532afb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/scedilla.glif @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/schwa.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/schwa.glif new file mode 100644 index 000000000..373f2c6f7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/schwa.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/schwacyr.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/schwacyr.glif new file mode 100644 index 000000000..8ce55135b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/schwacyr.glif @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/scircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/scircumflex.glif new file mode 100644 index 000000000..865e767da --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/scircumflex.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/scommaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/scommaaccent.glif new file mode 100644 index 000000000..aa21ec91b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/scommaaccent.glif @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/sdotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/sdotaccent.glif new file mode 100644 index 000000000..e5912b86a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/sdotaccent.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/sdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/sdotbelow.glif new file mode 100644 index 000000000..2b6cc057b --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/sdotbelow.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/section.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/section.glif new file mode 100644 index 000000000..feaf72eb6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/section.glif @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/servicemark.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/servicemark.glif new file mode 100644 index 000000000..d6ceb4cf7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/servicemark.glif @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/seven.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/seven.subs.glif new file mode 100644 index 000000000..6890578fe --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/seven.subs.glif @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/seven.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/seven.sups.glif new file mode 100644 index 000000000..0c4845501 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/seven.sups.glif @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/seveneighths.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/seveneighths.glif new file mode 100644 index 000000000..00007b7b9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/seveneighths.glif @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/sha.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/sha.glif new file mode 100644 index 000000000..239a1c811 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/sha.glif @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/shcha.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/shcha.glif new file mode 100644 index 000000000..ec10a7ff6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/shcha.glif @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/shha.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/shha.glif new file mode 100644 index 000000000..9c32d0d4a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/shha.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/sigma.end.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/sigma.end.glif new file mode 100644 index 000000000..64ec53ecc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/sigma.end.glif @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/sigma.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/sigma.glif new file mode 100644 index 000000000..5b8537c00 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/sigma.glif @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/similar.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/similar.glif new file mode 100644 index 000000000..baad65c13 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/similar.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/six.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/six.subs.glif new file mode 100644 index 000000000..0b71db140 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/six.subs.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/six.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/six.sups.glif new file mode 100644 index 000000000..6b55bb634 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/six.sups.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/soft.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/soft.glif new file mode 100644 index 000000000..0287ed2b2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/soft.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/soundcopyright.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/soundcopyright.glif new file mode 100644 index 000000000..9a1402013 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/soundcopyright.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/squareblack.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/squareblack.glif new file mode 100644 index 000000000..0c2a4c5a2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/squareblack.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/squareshadow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/squareshadow.glif new file mode 100644 index 000000000..ed95fe44c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/squareshadow.glif @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/sterling.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/sterling.glif new file mode 100644 index 000000000..847d2a9f3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/sterling.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/stigma.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/stigma.glif new file mode 100644 index 000000000..0ed98c6cc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/stigma.glif @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/summation.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/summation.glif new file mode 100644 index 000000000..ea51a9639 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/summation.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/t.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/t.sups.glif new file mode 100644 index 000000000..3eb636cfa --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/t.sups.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tau.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tau.glif new file mode 100644 index 000000000..3991b3759 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tau.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tbar.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tbar.glif new file mode 100644 index 000000000..15e43e5ca --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tbar.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tcaron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tcaron.glif new file mode 100644 index 000000000..ab07ac5b3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tcaron.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tcedilla.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tcedilla.glif new file mode 100644 index 000000000..1a0da2818 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tcedilla.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tcommaaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tcommaaccent.glif new file mode 100644 index 000000000..a0e8a5195 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tcommaaccent.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tdieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tdieresis.glif new file mode 100644 index 000000000..4d9aea9e1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tdieresis.glif @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tdotbelow.glif new file mode 100644 index 000000000..ea88e4ab4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tdotbelow.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/te.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/te.glif new file mode 100644 index 000000000..810d60845 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/te.glif @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tenge.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tenge.glif new file mode 100644 index 000000000..808af9790 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tenge.glif @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/theta.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/theta.glif new file mode 100644 index 000000000..49a7d9520 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/theta.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/thorn.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/thorn.glif new file mode 100644 index 000000000..85a448ff1 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/thorn.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/three.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/three.subs.glif new file mode 100644 index 000000000..1108efc27 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/three.subs.glif @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/three.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/three.sups.glif new file mode 100644 index 000000000..e9b737dde --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/three.sups.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/threeeighths.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/threeeighths.glif new file mode 100644 index 000000000..49eaee01c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/threeeighths.glif @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/threeemdash.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/threeemdash.glif new file mode 100644 index 000000000..6dc7d0114 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/threeemdash.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/threequarters.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/threequarters.glif new file mode 100644 index 000000000..59f9f1183 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/threequarters.glif @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tilde.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tilde.glif new file mode 100644 index 000000000..fdf881a4c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tilde.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tildecmb.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tildecmb.glif new file mode 100644 index 000000000..5f88313a3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tildecmb.glif @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tlinebelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tlinebelow.glif new file mode 100644 index 000000000..e9f93a782 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tlinebelow.glif @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tonos.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tonos.glif new file mode 100644 index 000000000..65555c945 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tonos.glif @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/trademark.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/trademark.glif new file mode 100644 index 000000000..d58d7ff95 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/trademark.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/triangleblackdown.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/triangleblackdown.glif new file mode 100644 index 000000000..17d261c3e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/triangleblackdown.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/triangleblackleft.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/triangleblackleft.glif new file mode 100644 index 000000000..c01556066 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/triangleblackleft.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/triangleblackright.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/triangleblackright.glif new file mode 100644 index 000000000..a845b5d08 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/triangleblackright.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/triangleblackup.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/triangleblackup.glif new file mode 100644 index 000000000..02b08a1f4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/triangleblackup.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/trianglewhitedown.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/trianglewhitedown.glif new file mode 100644 index 000000000..6836118c6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/trianglewhitedown.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/trianglewhiteleft.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/trianglewhiteleft.glif new file mode 100644 index 000000000..342205d81 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/trianglewhiteleft.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/trianglewhiteright.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/trianglewhiteright.glif new file mode 100644 index 000000000..8600ef027 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/trianglewhiteright.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/trianglewhiteup.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/trianglewhiteup.glif new file mode 100644 index 000000000..ef3a518ba --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/trianglewhiteup.glif @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/triangularbullet.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/triangularbullet.glif new file mode 100644 index 000000000..6e2260b4c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/triangularbullet.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tse.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tse.glif new file mode 100644 index 000000000..f0925f2b5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tse.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tshe.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tshe.glif new file mode 100644 index 000000000..e6e79fff0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tshe.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tugrik.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tugrik.glif new file mode 100644 index 000000000..e1ff84fa9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/tugrik.glif @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/two.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/two.subs.glif new file mode 100644 index 000000000..022cb005e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/two.subs.glif @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/two.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/two.sups.glif new file mode 100644 index 000000000..b614390d5 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/two.sups.glif @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/twodotenleader.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/twodotenleader.glif new file mode 100644 index 000000000..d4d43b132 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/twodotenleader.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/twoemdash.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/twoemdash.glif new file mode 100644 index 000000000..c5298d692 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/twoemdash.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/twothirds.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/twothirds.glif new file mode 100644 index 000000000..056d6a1be --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/twothirds.glif @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/u.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/u.sups.glif new file mode 100644 index 000000000..233852f23 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/u.sups.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uacute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uacute.glif new file mode 100644 index 000000000..424a202b7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uacute.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uacutedblcyr.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uacutedblcyr.glif new file mode 100644 index 000000000..9f40a74a8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uacutedblcyr.glif @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ubreve.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ubreve.glif new file mode 100644 index 000000000..369175ad7 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ubreve.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ucaron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ucaron.glif new file mode 100644 index 000000000..c799eda25 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ucaron.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ucircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ucircumflex.glif new file mode 100644 index 000000000..34335104d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ucircumflex.glif @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ucyr.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ucyr.glif new file mode 100644 index 000000000..80fea94e3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ucyr.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/udieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/udieresis.glif new file mode 100644 index 000000000..b16e2c1e3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/udieresis.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/udieresisacute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/udieresisacute.glif new file mode 100644 index 000000000..9a9241f0a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/udieresisacute.glif @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/udieresiscaron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/udieresiscaron.glif new file mode 100644 index 000000000..eff28f699 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/udieresiscaron.glif @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/udieresisgrave.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/udieresisgrave.glif new file mode 100644 index 000000000..aa0ff9d38 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/udieresisgrave.glif @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/udieresismacron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/udieresismacron.glif new file mode 100644 index 000000000..c816f0f2f --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/udieresismacron.glif @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/udotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/udotbelow.glif new file mode 100644 index 000000000..0bbc09cea --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/udotbelow.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ugrave.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ugrave.glif new file mode 100644 index 000000000..a0d3e7008 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ugrave.glif @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uhoi.glif new file mode 100644 index 000000000..5fbd4dc43 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uhoi.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uhorn.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uhorn.glif new file mode 100644 index 000000000..b64601d53 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uhorn.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uhornacute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uhornacute.glif new file mode 100644 index 000000000..f380fdd54 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uhornacute.glif @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uhorndotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uhorndotbelow.glif new file mode 100644 index 000000000..e13d040d6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uhorndotbelow.glif @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uhorngrave.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uhorngrave.glif new file mode 100644 index 000000000..f23101b23 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uhorngrave.glif @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uhornhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uhornhoi.glif new file mode 100644 index 000000000..eef178124 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uhornhoi.glif @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uhorntilde.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uhorntilde.glif new file mode 100644 index 000000000..89d69f12c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uhorntilde.glif @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uhungarumlaut.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uhungarumlaut.glif new file mode 100644 index 000000000..e7230cceb --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uhungarumlaut.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/umacron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/umacron.glif new file mode 100644 index 000000000..5484970fe --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/umacron.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/umacroncyr.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/umacroncyr.glif new file mode 100644 index 000000000..8ccf16b0e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/umacroncyr.glif @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uogonek.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uogonek.glif new file mode 100644 index 000000000..ba66863da --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uogonek.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/upsilon.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/upsilon.glif new file mode 100644 index 000000000..b101feeda --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/upsilon.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/upsilondieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/upsilondieresis.glif new file mode 100644 index 000000000..65ea3aa45 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/upsilondieresis.glif @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/upsilondieresistonos.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/upsilondieresistonos.glif new file mode 100644 index 000000000..c76b16605 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/upsilondieresistonos.glif @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/upsilontonos.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/upsilontonos.glif new file mode 100644 index 000000000..337908c07 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/upsilontonos.glif @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uring.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uring.glif new file mode 100644 index 000000000..77e97b7c3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/uring.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ushort.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ushort.glif new file mode 100644 index 000000000..da9935768 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ushort.glif @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ustraight.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ustraight.glif new file mode 100644 index 000000000..dea446407 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ustraight.glif @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ustraightstroke.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ustraightstroke.glif new file mode 100644 index 000000000..6cf714846 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ustraightstroke.glif @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/utilde.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/utilde.glif new file mode 100644 index 000000000..0102c5096 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/utilde.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/v.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/v.sups.glif new file mode 100644 index 000000000..75f1035f4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/v.sups.glif @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ve.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ve.glif new file mode 100644 index 000000000..08caef633 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ve.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/verticallinebelowcmb.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/verticallinebelowcmb.glif new file mode 100644 index 000000000..bb7532801 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/verticallinebelowcmb.glif @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/verticallinelowmod.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/verticallinelowmod.glif new file mode 100644 index 000000000..f9da6e656 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/verticallinelowmod.glif @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/verticallinemod.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/verticallinemod.glif new file mode 100644 index 000000000..f005b1f90 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/verticallinemod.glif @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/w.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/w.sups.glif new file mode 100644 index 000000000..825c4aba6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/w.sups.glif @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/wacute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/wacute.glif new file mode 100644 index 000000000..fc10fcae8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/wacute.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/wcircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/wcircumflex.glif new file mode 100644 index 000000000..0201ac48d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/wcircumflex.glif @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/wdieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/wdieresis.glif new file mode 100644 index 000000000..817696d1c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/wdieresis.glif @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/wgrave.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/wgrave.glif new file mode 100644 index 000000000..12645b587 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/wgrave.glif @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/won.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/won.glif new file mode 100644 index 000000000..3a97d7976 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/won.glif @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/x.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/x.sups.glif new file mode 100644 index 000000000..8600545c0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/x.sups.glif @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/xi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/xi.glif new file mode 100644 index 000000000..9223a2fc2 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/xi.glif @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/y.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/y.sups.glif new file mode 100644 index 000000000..44f2959fd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/y.sups.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ya.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ya.glif new file mode 100644 index 000000000..f65375454 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ya.glif @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/yacute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/yacute.glif new file mode 100644 index 000000000..3545b7569 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/yacute.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/yat.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/yat.glif new file mode 100644 index 000000000..5d47ee9d3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/yat.glif @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ycircumflex.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ycircumflex.glif new file mode 100644 index 000000000..3dfe827bd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ycircumflex.glif @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ydieresis.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ydieresis.glif new file mode 100644 index 000000000..0532fa691 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ydieresis.glif @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ydotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ydotaccent.glif new file mode 100644 index 000000000..6c18be672 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ydotaccent.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ydotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ydotbelow.glif new file mode 100644 index 000000000..7dff905bc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ydotbelow.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/yen.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/yen.glif new file mode 100644 index 000000000..8bd16f5bc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/yen.glif @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/yeru.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/yeru.glif new file mode 100644 index 000000000..402b67584 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/yeru.glif @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ygrave.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ygrave.glif new file mode 100644 index 000000000..61b5071c8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ygrave.glif @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/yhoi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/yhoi.glif new file mode 100644 index 000000000..5cc528c39 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/yhoi.glif @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/yi.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/yi.glif new file mode 100644 index 000000000..a90c0f729 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/yi.glif @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ytilde.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ytilde.glif new file mode 100644 index 000000000..02671acb8 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ytilde.glif @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/yu.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/yu.glif new file mode 100644 index 000000000..bc2a1affc --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/yu.glif @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/z.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/z.sups.glif new file mode 100644 index 000000000..adae3027a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/z.sups.glif @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zacute.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zacute.glif new file mode 100644 index 000000000..40d3d49c0 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zacute.glif @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zcaron.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zcaron.glif new file mode 100644 index 000000000..67ad63e69 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zcaron.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zdotaccent.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zdotaccent.glif new file mode 100644 index 000000000..e103baf42 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zdotaccent.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zdotbelow.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zdotbelow.glif new file mode 100644 index 000000000..58f19a47d --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zdotbelow.glif @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ze.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ze.glif new file mode 100644 index 000000000..fb4243a36 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/ze.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zedescender.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zedescender.glif new file mode 100644 index 000000000..b30ce017a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zedescender.glif @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zero.subs.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zero.subs.glif new file mode 100644 index 000000000..476d52ec9 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zero.subs.glif @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zero.sups.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zero.sups.glif new file mode 100644 index 000000000..2b3a285bd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zero.sups.glif @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zeta.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zeta.glif new file mode 100644 index 000000000..4c43b30ac --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zeta.glif @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zhe.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zhe.glif new file mode 100644 index 000000000..56ca7ec65 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zhe.glif @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zhebreve.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zhebreve.glif new file mode 100644 index 000000000..f1fdafad4 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zhebreve.glif @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.typemytype.robofont.mark + + 0 + 0.5 + 1 + 1 + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zhedescender.glif b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zhedescender.glif new file mode 100644 index 000000000..b77b39b87 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/glyphs/zhedescender.glif @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/groups.plist b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/groups.plist new file mode 100644 index 000000000..27395a37e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/groups.plist @@ -0,0 +1,5997 @@ + + + + + @MMK_L_CYR_Acyr + + Abrevecyr + Acyr + + @MMK_L_CYR_Acyr.sc + + Abrevecyr.sc + Acyr.sc + + @MMK_L_CYR_De + + Chedescender + De + Endescender + Shcha + Tse + + @MMK_L_CYR_De.sc + + Chedescender.sc + De.sc + Endescender.sc + Shcha.sc + Tse.sc + + @MMK_L_CYR_En + + Dzhe + El + Em + En + Icyr + Igravecyr + Imacroncyr + Ishort + Iukran + Palochka + Pe + Sha + Yeru + Yi + Che + Ya + + @MMK_L_CYR_En.sc + + Dzhe.sc + El.sc + Em.sc + En.sc + Icyr.sc + Igravecyr.sc + Imacroncyr.sc + Ishort.sc + Iukran.sc + Palochka.sc + Pe.sc + Sha.sc + Yeru.sc + Yi.sc + Che.sc + Ya.sc + + @MMK_L_CYR_Es + + Es + Esdescender + Ieukran + + @MMK_L_CYR_Es.sc + + Es.sc + Esdescender.sc + Ieukran.sc + + @MMK_L_CYR_Ghe + + Ghe + Ghestroke + Gje + Te + Gheup + + @MMK_L_CYR_Ghe.sc + + Ghe.sc + Ghestroke.sc + Gje.sc + Te.sc + Gheup.sc + + @MMK_L_CYR_Ie + + Aie + Ie + Iebreve + Iegrave + Io + + @MMK_L_CYR_Ie.sc + + Aie.sc + Ie.sc + Iebreve.sc + Iegrave.sc + Io.sc + + @MMK_L_CYR_Ka + + Ha + Hadescender + Ka + Kabashkir + Kadescender + Kje + Zhe + Zhebreve + Zhedescender + + @MMK_L_CYR_Ka.sc + + Ha.sc + Hadescender.sc + Ka.sc + Kabashkir.sc + Kadescender.sc + Kje.sc + Zhe.sc + Zhebreve.sc + Zhedescender.sc + + @MMK_L_CYR_Ocyr + + Fita + Obarcyr + Ocyr + Odieresiscyr + Schwacyr + Yu + Ecyr + + @MMK_L_CYR_Ocyr.sc + + Fita.sc + Obarcyr.sc + Ocyr.sc + Odieresiscyr.sc + Schwacyr.sc + Yu.sc + Ecyr.sc + + @MMK_L_CYR_Soft + + Hard + Lje + Nje + Soft + + @MMK_L_CYR_Soft.sc + + Hard.sc + Lje.sc + Nje.sc + Soft.sc + + @MMK_L_CYR_Ucyr + + Izhitsa + Uacutedblcyr + Ucyr + Umacroncyr + Ushort + + @MMK_L_CYR_Ucyr.sc + + Izhitsa.sc + Uacutedblcyr.sc + Ucyr.sc + Umacroncyr.sc + Ushort.sc + + @MMK_L_CYR_Ustraight + + Ustraight + Ustraightstroke + + @MMK_L_CYR_Ustraight.sc + + Ustraight.sc + Ustraightstroke.sc + + @MMK_L_CYR_Ve + + Be + Ve + Ze + Zedescender + + @MMK_L_CYR_Ve.sc + + Be.sc + Ve.sc + Ze.sc + Zedescender.sc + + @MMK_L_CYR_acyr + + abrevecyr + acyr + + @MMK_L_CYR_be + + be + be.srb + + @MMK_L_CYR_de + + che + chedescender + de + el + em + en + endescender + icyr + igravecyr + imacroncyr + ishort + pe + sha + shcha + tse + ya + yeru + dzhe + + @MMK_L_CYR_es + + es + ieukran + esdescender + + @MMK_L_CYR_ghe + + ghe + ghestroke + gheup + gje + te + + @MMK_L_CYR_hard + + hard + lje + nje + soft + + @MMK_L_CYR_ie + + ecyr + ef + er + fita + ie + iebreve + iegrave + io + obarcyr + ocyr + odieresiscyr + schwacyr + yu + aie + + @MMK_L_CYR_iukran + + iukran + yi + + @MMK_L_CYR_tshe + + shha + tshe + + @MMK_L_CYR_ucyr + + uacutedblcyr + ucyr + umacroncyr + ushort + + @MMK_L_CYR_ustraight + + ustraight + ustraightstroke + + @MMK_L_CYR_ve + + ve + ze + zedescender + + @MMK_L_CYR_zhe + + ha + hadescender + ka + kabashkir + kadescender + kje + zhe + zhebreve + zhedescender + + @MMK_L_GRK_Alpha + + Alpha + Alphatonos + Lambda + Delta + + @MMK_L_GRK_Alpha.sc + + Alpha.sc + Lambda.sc + Delta.sc + + @MMK_L_GRK_Epsilon + + Epsilon + Epsilontonos + Sigma + Xi + + @MMK_L_GRK_Epsilon.sc + + Epsilon.sc + Sigma.sc + Xi.sc + + @MMK_L_GRK_Eta + + Eta + Etatonos + Iota + Iotadieresis + Iotatonos + Mu + Pi + Nu + + @MMK_L_GRK_Eta.sc + + Eta.sc + Iota.sc + Iotadieresis.sc + Mu.sc + Pi.sc + Nu.sc + + @MMK_L_GRK_Gamma + + Gamma + Tau + + @MMK_L_GRK_Gamma.sc + + Gamma.sc + Tau.sc + + @MMK_L_GRK_Omega + + Omega + Omegatonos + + @MMK_L_GRK_Omicron + + Omicron + Omicrontonos + Theta + + @MMK_L_GRK_Omicron.sc + + Omicron.sc + Theta.sc + + @MMK_L_GRK_Upsilon + + Upsilon + Upsilondieresis + Upsilontonos + + @MMK_L_GRK_Upsilon.sc + + Upsilon.sc + Upsilondieresis.sc + + @MMK_L_GRK_alpha + + alpha + alphatonos + iota + iotadieresis + iotadieresistonos + iotatonos + mu + + @MMK_L_GRK_epsilon + + epsilon + epsilontonos + + @MMK_L_GRK_eta + + eta + etatonos + + @MMK_L_GRK_gamma + + gamma + nu + + @MMK_L_GRK_omicron + + omicron + omicrontonos + phi + rho + koppa + omega + omegatonos + + @MMK_L_GRK_pi + + pi + tau + + @MMK_L_GRK_upsilon + + psi + upsilon + upsilondieresis + upsilondieresistonos + upsilontonos + + @MMK_L_LAT_A + + A + Aacute + Abreve + Acircumflex + Adieresis + Agrave + Amacron + Aogonek + Aring + Atilde + Abreveacute + Abrevedotbelow + Abrevegrave + Abrevehoi + Abrevetilde + Acaron + Acircumflexacute + Acircumflexdotbelow + Acircumflexgrave + Acircumflexhoi + Acircumflextilde + Adotbelow + Ahoi + + @MMK_L_LAT_A.sc + + A.sc + Aacute.sc + Abreve.sc + Acircumflex.sc + Adieresis.sc + Agrave.sc + Amacron.sc + Aogonek.sc + Aring.sc + Atilde.sc + Abreveacute.sc + Abrevedotbelow.sc + Abrevegrave.sc + Abrevehoi.sc + Abrevetilde.sc + Acaron.sc + Acircumflexacute.sc + Acircumflexdotbelow.sc + Acircumflexgrave.sc + Acircumflexhoi.sc + Acircumflextilde.sc + Adotbelow.sc + Ahoi.sc + + @MMK_L_LAT_C + + C + Cacute + Ccaron + Ccedilla + Ccircumflex + Cdotaccent + + @MMK_L_LAT_C.sc + + C.sc + Cacute.sc + Ccaron.sc + Ccedilla.sc + Ccircumflex.sc + Cdotaccent.sc + + @MMK_L_LAT_D + + D + Dcaron + Dcroat + Eth + Ddotbelow + Dlinebelow + + @MMK_L_LAT_D.sc + + D.sc + Dcaron.sc + Dcroat.sc + Eth.sc + Ddotbelow.sc + Dlinebelow.sc + + @MMK_L_LAT_E + + AE + E + Eacute + Ecaron + Ecircumflex + Edieresis + Edotaccent + Egrave + Emacron + Eogonek + OE + Ebreve + Ecircumflexacute + Ecircumflexdotbelow + Ecircumflexgrave + Ecircumflexhoi + Ecircumflextilde + Edotbelow + Ehoi + Etilde + + @MMK_L_LAT_E.sc + + AE.sc + E.sc + Eacute.sc + Ecaron.sc + Ecircumflex.sc + Edieresis.sc + Edotaccent.sc + Egrave.sc + Emacron.sc + Eogonek.sc + OE.sc + Ebreve.sc + Ecircumflexacute.sc + Ecircumflexdotbelow.sc + Ecircumflexgrave.sc + Ecircumflexhoi.sc + Ecircumflextilde.sc + Edotbelow.sc + Ehoi.sc + Etilde.sc + + @MMK_L_LAT_G + + G + Gbreve + Gdotaccent + Gcommaaccent + Gcaron + Gcircumflex + Gmacron + Gtilde + + @MMK_L_LAT_G.sc + + G.sc + Gbreve.sc + Gdotaccent.sc + Gcommaaccent.sc + Gcaron.sc + Gcircumflex.sc + Gmacron.sc + Gtilde.sc + + @MMK_L_LAT_H + + H + I + Iacute + Icircumflex + Idieresis + Idotaccent + Igrave + Imacron + Iogonek + M + Icaron + Idotbelow + Ihoi + Itilde + Macute + Mdotbelow + Hbrevebelow + Hcircumflex + Hdotbelow + Hbar + f_i.sc + + @MMK_L_LAT_H.sc + + H.sc + I.sc + Iacute.sc + Icircumflex.sc + Idieresis.sc + Idotaccent.sc + Igrave.sc + Imacron.sc + Iogonek.sc + M.sc + Icaron.sc + Idotbelow.sc + Ihoi.sc + Itilde.sc + Macute.sc + Mdotbelow.sc + Hbrevebelow.sc + Hcircumflex.sc + Hdotbelow.sc + Hbar.sc + + @MMK_L_LAT_J + + J + Jcircumflex + + @MMK_L_LAT_J.sc + + J.sc + Jcircumflex.sc + + @MMK_L_LAT_K + + K + Kcommaaccent + + @MMK_L_LAT_K.sc + + K.sc + Kcommaaccent.sc + + @MMK_L_LAT_L + + L + Lacute + Lcaron + Lslash + Lcommaaccent + Ldotbelow + Ldotbelowmacron + Llinebelow + + @MMK_L_LAT_L.sc + + L.sc + Lacute.sc + Lcaron.sc + Lslash.sc + Lcommaaccent.sc + Ldotbelow.sc + Ldotbelowmacron.sc + Llinebelow.sc + f_l.sc + + @MMK_L_LAT_N + + N + Nacute + Ncaron + Ntilde + Ndotaccent + Ncommaaccent + Ndotbelow + Ngrave + Nlinebelow + + @MMK_L_LAT_N.sc + + N.sc + Nacute.sc + Ncaron.sc + Ntilde.sc + Ndotaccent.sc + Ncommaaccent.sc + Ndotbelow.sc + Ngrave.sc + Nlinebelow.sc + + @MMK_L_LAT_O + + O + Oacute + Ocircumflex + Odieresis + Ograve + Ohungarumlaut + Omacron + Oslash + Otilde + Q + Obreve + Ocaron + Ocircumflexacute + Ocircumflexdotbelow + Ocircumflexgrave + Ocircumflexhoi + Ocircumflextilde + Odotbelow + Ohoi + Ohorn + Ohornacute + Ohorndotbelow + Ohorngrave + Ohornhoi + Ohorntilde + Schwa + + @MMK_L_LAT_O.sc + + O.sc + Oacute.sc + Ocircumflex.sc + Odieresis.sc + Ograve.sc + Ohungarumlaut.sc + Omacron.sc + Oslash.sc + Otilde.sc + Q.sc + Obreve.sc + Ocaron.sc + Ocircumflexacute.sc + Ocircumflexdotbelow.sc + Ocircumflexgrave.sc + Ocircumflexhoi.sc + Ocircumflextilde.sc + Odotbelow.sc + Ohoi.sc + Ohorn.sc + Ohornacute.sc + Ohorndotbelow.sc + Ohorngrave.sc + Ohornhoi.sc + Ohorntilde.sc + Schwa.sc + + @MMK_L_LAT_R + + R + Racute + Rcaron + Rcommaaccent + Rdotbelow + Rdotbelowmacron + Rlinebelow + + @MMK_L_LAT_R.sc + + R.sc + Racute.sc + Rcaron.sc + Rcommaaccent.sc + Rdotbelow.sc + Rdotbelowmacron.sc + Rlinebelow.sc + + @MMK_L_LAT_S + + S + Sacute + Scaron + Scedilla + Scommaaccent + Scircumflex + Sdotaccent + Sdotbelow + + @MMK_L_LAT_S.sc + + S.sc + Sacute.sc + Scaron.sc + Scedilla.sc + Scommaaccent.sc + Scircumflex.sc + Sdotaccent.sc + Sdotbelow.sc + germandbls.sc + + @MMK_L_LAT_T + + T + Tcaron + Tcommaaccent + Tcedilla + Tdotbelow + Tlinebelow + + @MMK_L_LAT_T.sc + + T.sc + Tcaron.sc + Tcommaaccent.sc + Tcedilla.sc + Tdotbelow.sc + Tlinebelow.sc + tdieresis.sc + + @MMK_L_LAT_U + + U + Uacute + Ucircumflex + Udieresis + Ugrave + Uhungarumlaut + Umacron + Uogonek + Uring + Ubreve + Ucaron + Udieresisacute + Udieresiscaron + Udieresisgrave + Udieresismacron + Udotbelow + Uhoi + Uhorn + Uhornacute + Uhorndotbelow + Uhorngrave + Uhornhoi + Uhorntilde + Utilde + + @MMK_L_LAT_U.sc + + U.sc + Uacute.sc + Ucircumflex.sc + Udieresis.sc + Ugrave.sc + Uhungarumlaut.sc + Umacron.sc + Uogonek.sc + Uring.sc + Ubreve.sc + Ucaron.sc + Udieresisacute.sc + Udieresiscaron.sc + Udieresisgrave.sc + Udieresismacron.sc + Udotbelow.sc + Uhoi.sc + Uhorn.sc + Uhornacute.sc + Uhorndotbelow.sc + Uhorngrave.sc + Uhornhoi.sc + Uhorntilde.sc + Utilde.sc + + @MMK_L_LAT_W + + W + Wacute + Wcircumflex + Wdieresis + Wgrave + + @MMK_L_LAT_W.sc + + W.sc + Wacute.sc + Wcircumflex.sc + Wdieresis.sc + Wgrave.sc + + @MMK_L_LAT_Y + + Y + Yacute + Ydieresis + Ycircumflex + Ydotaccent + Ydotbelow + Ygrave + Yhoi + Ytilde + + @MMK_L_LAT_Y.sc + + Y.sc + Yacute.sc + Ydieresis.sc + Ycircumflex.sc + Ydotaccent.sc + Ydotbelow.sc + Ygrave.sc + Yhoi.sc + Ytilde.sc + + @MMK_L_LAT_Z + + Z + Zacute + Zcaron + Zdotaccent + Zdotbelow + + @MMK_L_LAT_Z.sc + + Z.sc + Zacute.sc + Zcaron.sc + Zdotaccent.sc + Zdotbelow.sc + + @MMK_L_LAT_a + + a + aacute + abreve + acircumflex + adieresis + agrave + amacron + aogonek + aring + atilde + abreveacute + abrevedotbelow + abrevegrave + abrevehoi + abrevetilde + acaron + acircumflexacute + acircumflexdotbelow + acircumflexgrave + acircumflexhoi + acircumflextilde + adotbelow + ahoi + + @MMK_L_LAT_b + + b + p + thorn + o + oacute + ocircumflex + odieresis + ograve + ohungarumlaut + omacron + oslash + otilde + obreve + ocaron + ocircumflexacute + ocircumflexdotbelow + ocircumflexgrave + ocircumflexhoi + ocircumflextilde + odotbelow + ohoi + schwa + + @MMK_L_LAT_c + + c + cacute + ccaron + ccedilla + ccircumflex + cdotaccent + + @MMK_L_LAT_dcaron + + dcaron + lcaron + + @MMK_L_LAT_e + + ae + e + eacute + ecaron + ecircumflex + edieresis + edotaccent + egrave + emacron + eogonek + oe + ebreve + ecircumflexacute + ecircumflexdotbelow + ecircumflexgrave + ecircumflexhoi + ecircumflextilde + edotbelow + ehoi + etilde + + @MMK_L_LAT_f + + f + longs + f_f + + @MMK_L_LAT_g + + g + gbreve + gdotaccent + gcommaaccent + gcaron + gcircumflex + gmacron + gtilde + + @MMK_L_LAT_h + + h + m + n + nacute + ncaron + ntilde + ndotaccent + ncommaaccent + hbrevebelow + hcircumflex + hdotbelow + macute + mdotbelow + ndotbelow + ngrave + nlinebelow + hbar + + @MMK_L_LAT_i + + dotlessi + i + iacute + igrave + iogonek + f_i + i.trk + idotbelow + ihoi + f_f_i + + @MMK_L_LAT_icircumflex + + icircumflex + idieresis + imacron + icaron + itilde + + @MMK_L_LAT_j + + j + jcircumflex + dotlessj + + @MMK_L_LAT_k + + k + kcommaaccent + kgreenlandic + + @MMK_L_LAT_l + + d + dcroat + l + lacute + lslash + f_l + lcommaaccent + ldotbelow + ldotbelowmacron + llinebelow + ddotbelow + dlinebelow + f_f_l + + @MMK_L_LAT_ohorn + + ohorn + ohornacute + ohorndotbelow + ohorngrave + ohornhoi + ohorntilde + + @MMK_L_LAT_r + + r + racute + rcaron + rcommaaccent + rdotbelow + rdotbelowmacron + rlinebelow + + @MMK_L_LAT_s + + s + sacute + scaron + scedilla + scommaaccent + scircumflex + sdotaccent + sdotbelow + + @MMK_L_LAT_t + + t + tcaron + tcommaaccent + tcedilla + f_t + tdieresis + tdotbelow + tlinebelow + + @MMK_L_LAT_u + + u + uacute + ucircumflex + udieresis + ugrave + uhungarumlaut + umacron + uogonek + uring + ubreve + ucaron + udieresisacute + udieresiscaron + udieresisgrave + udieresismacron + udotbelow + uhoi + utilde + + @MMK_L_LAT_uhorn + + uhorn + uhornacute + uhorndotbelow + uhorngrave + uhornhoi + uhorntilde + + @MMK_L_LAT_v + + v + w + y + yacute + ydieresis + wacute + wcircumflex + wdieresis + wgrave + ycircumflex + ydotaccent + ydotbelow + ygrave + yhoi + ytilde + + @MMK_L_LAT_z + + z + zacute + zcaron + zdotaccent + zdotbelow + + @MMK_L_colon + + colon + semicolon + + @MMK_L_comma + + comma + ellipsis + period + + @MMK_L_comma.sups + + comma.sups + period.sups + + @MMK_L_copyright + + copyright + soundcopyright + copyleft + + @MMK_L_eight.lf + + eight.lf + eight.osf + three.lf + + @MMK_L_equal + + equal + notequal + approxequal + logicalnot + + @MMK_L_fractions + + onehalf + onequarter + percent + threequarters + perthousand + fiveeighths + oneeighth + onethird + seveneighths + threeeighths + twothirds + + @MMK_L_guilsinglleft + + guillemotleft + guillemotleft.cap + guilsinglleft + guilsinglleft.cap + + @MMK_L_guilsinglright + + guillemotright + guillemotright.cap + guilsinglright + guilsinglright.cap + + @MMK_L_hyphen + + emdash + endash + hyphen + horizontalbar + emdash.cap + endash.cap + horizontalbar.cap + hyphen.cap + figuredash + threeemdash + twoemdash + + @MMK_L_hyphen.sc + + emdash.sc + endash.sc + hyphen.sc + + @MMK_L_hyphen.sups + + emdash.sups + endash.sups + hyphen.sups + + @MMK_L_less + + less + multiply + + @MMK_L_parenleft + + braceleft + braceleft.cap + bracketleft + bracketleft.cap + parenleft + parenleft.cap + + @MMK_L_parenleft.sc + + braceleft.sc + bracketleft.sc + parenleft.sc + + @MMK_L_parenright + + braceright + braceright.cap + bracketright + bracketright.cap + parenright + parenright.cap + + @MMK_L_parenright.sc + + braceright.sc + bracketright.sc + parenright.sc + + @MMK_L_periodcentered + + bulletoperator + periodcentered + + @MMK_L_plus + + asciitilde + divide + greater + minus + plus + + @MMK_L_quotedbl + + quotedbl + quotesingle + + @MMK_L_quotedbl.sc + + quotedbl.sc + quotesingle.sc + + @MMK_L_quoteleft + + quotedblleft + quoteleft + + @MMK_L_quoteleft.sc + + quotedblleft.sc + quoteleft.sc + + @MMK_L_quoteright + + quotedblright + quoteright + + @MMK_L_quoteright.sc + + quotedblright.sc + quoteright.sc + + @MMK_L_quotesinglbase + + quotedblbase + quotesinglbase + + @MMK_L_registered + + asterisk + registered + + @MMK_L_six.lf + + six.lf + six.osf + + @MMK_L_subs_figures + + eight.subs + five.subs + four.subs + nine.subs + one.subs + seven.subs + six.subs + three.subs + two.subs + zero.subs + + @MMK_L_sups_corner + + H.sups + I.sups + K.sups + L.sups + M.sups + N.sups + u.sups + A.sups + E.sups + R.sups + X.sups + Z.sups + d.sups + f.sups + h.sups + i.sups + k.sups + l.sups + m.sups + n.sups + t.sups + x.sups + a.sups + z.sups + ordfeminine + + @MMK_L_sups_figures + + eight.sups + five.sups + four.sups + nine.sups + one.sups + seven.sups + six.sups + three.sups + two.sups + zero.sups + + @MMK_L_sups_low + + g.sups + j.sups + q.sups + J.sups + Q.sups + + @MMK_L_sups_round + + b.sups + c.sups + e.sups + eacute.sups + egrave.sups + o.sups + p.sups + s.sups + ordmasculine + G.sups + O.sups + S.sups + U.sups + D.sups + B.sups + C.sups + + @MMK_L_sups_v + + r.sups + v.sups + w.sups + y.sups + T.sups + V.sups + W.sups + Y.sups + F.sups + P.sups + + @MMK_L_trademark + + servicemark + trademark + commercemark + deposeemark + + @MMK_L_zero.lf + + zero.lf + zero.lfslash + + @MMK_R_CYR_Acyr + + Abrevecyr + Acyr + + @MMK_R_CYR_Acyr.sc + + Abrevecyr.sc + Acyr.sc + + @MMK_R_CYR_Che + + Che + Chedescender + + @MMK_R_CYR_Che.sc + + Che.sc + Chedescender.sc + + @MMK_R_CYR_De + + De + El + Lje + + @MMK_R_CYR_De.sc + + De.sc + El.sc + Lje.sc + + @MMK_R_CYR_Dje + + Dje + Te + Tshe + Hard + Kabashkir + + @MMK_R_CYR_Dje.sc + + Dje.sc + Te.sc + Tshe.sc + Hard.sc + Kabashkir.sc + + @MMK_R_CYR_En + + Be + Dzhe + En + Endescender + Er + Ghe + Ghestroke + Gheup + Gje + Icyr + Ie + Iebreve + Iegrave + Igravecyr + Imacroncyr + Io + Ishort + Iukran + Kadescender + Nje + Palochka + Pe + Sha + Shcha + Shha + Soft + Tse + Ve + Yeru + Yi + Yu + Ka + Kje + Em + + @MMK_R_CYR_En.sc + + Be.sc + Dzhe.sc + En.sc + Endescender.sc + Er.sc + Ghe.sc + Ghestroke.sc + Gheup.sc + Gje.sc + Icyr.sc + Ie.sc + Iebreve.sc + Iegrave.sc + Igravecyr.sc + Imacroncyr.sc + Io.sc + Ishort.sc + Iukran.sc + Kadescender.sc + Nje.sc + Palochka.sc + Pe.sc + Sha.sc + Shcha.sc + Shha.sc + Soft.sc + Tse.sc + Ve.sc + Yeru.sc + Yi.sc + Yu.sc + Ka.sc + Kje.sc + Em.sc + + @MMK_R_CYR_Ocyr + + Es + Esdescender + Fita + Ieukran + Obarcyr + Ocyr + Odieresiscyr + Schwacyr + + @MMK_R_CYR_Ocyr.sc + + Es.sc + Esdescender.sc + Fita.sc + Ieukran.sc + Obarcyr.sc + Ocyr.sc + Odieresiscyr.sc + Schwacyr.sc + + @MMK_R_CYR_Ucyr + + Uacutedblcyr + Ucyr + Umacroncyr + Ushort + + @MMK_R_CYR_Ucyr.sc + + Uacutedblcyr.sc + Ucyr.sc + Umacroncyr.sc + Ushort.sc + + @MMK_R_CYR_Ustraight + + Ustraight + Ustraightstroke + + @MMK_R_CYR_Ustraight.sc + + Ustraight.sc + Ustraightstroke.sc + + @MMK_R_CYR_Ze + + Ecyr + Ze + Zedescender + + @MMK_R_CYR_Ze.sc + + Ecyr.sc + Ze.sc + Zedescender.sc + + @MMK_R_CYR_Zhe + + Zhe + Zhebreve + Zhedescender + Ha + Hadescender + + @MMK_R_CYR_Zhe.sc + + Zhe.sc + Zhebreve.sc + Zhedescender.sc + Ha.sc + Hadescender.sc + + @MMK_R_CYR_acyr + + abrevecyr + acyr + aie + + @MMK_R_CYR_che + + che + chedescender + + @MMK_R_CYR_el + + el + lje + + @MMK_R_CYR_ie + + ef + es + esdescender + fita + ie + iebreve + iegrave + ieukran + io + obarcyr + ocyr + odieresiscyr + schwacyr + + @MMK_R_CYR_iukran + + iukran + yi + + @MMK_R_CYR_shha + + palochka + shha + dje + tshe + + @MMK_R_CYR_te + + hard + kabashkir + te + + @MMK_R_CYR_ucyr + + uacutedblcyr + ucyr + umacroncyr + ushort + + @MMK_R_CYR_ustraight + + izhitsa + ustraight + ustraightstroke + + @MMK_R_CYR_ve + + dzhe + em + en + ghe + ghestroke + gheup + gje + icyr + igravecyr + imacroncyr + ishort + ka + kadescender + kje + nje + pe + sha + shcha + soft + tse + ve + yeru + endescender + yu + + @MMK_R_CYR_ze + + ecyr + ze + zedescender + + @MMK_R_CYR_zhe + + ha + zhe + zhebreve + zhedescender + hadescender + + @MMK_R_GRK_Alpha + + Alpha + Lambda + Delta + + @MMK_R_GRK_Alpha.sc + + Alpha.sc + Lambda.sc + Delta.sc + + @MMK_R_GRK_Beta + + Beta + Epsilon + Eta + Gamma + Iota + Iotadieresis + Kappa + Pi + Rho + + @MMK_R_GRK_Beta.sc + + Beta.sc + Epsilon.sc + Eta.sc + Gamma.sc + Iota.sc + Iotadieresis.sc + Kappa.sc + Pi.sc + Rho.sc + + @MMK_R_GRK_Epsilontonos + + Epsilontonos + Etatonos + Iotatonos + + @MMK_R_GRK_Mu + + Mu + Nu + + @MMK_R_GRK_Mu.sc + + Mu.sc + Nu.sc + + @MMK_R_GRK_Theta + + Omicron + Theta + + @MMK_R_GRK_Theta.sc + + Omicron.sc + Theta.sc + + @MMK_R_GRK_Upsilon + + Upsilon + Upsilondieresis + + @MMK_R_GRK_Upsilon.sc + + Upsilon.sc + Upsilondieresis.sc + + @MMK_R_GRK_alpha + + alpha + alphatonos + omicron + omicrontonos + phi + sigma + koppa + sigma.end + stigma + omega + omegatonos + + @MMK_R_GRK_epsilon + + epsilon + epsilontonos + + @MMK_R_GRK_eta + + eta + etatonos + kappa + + @MMK_R_GRK_gamma + + gamma + nu + + @MMK_R_GRK_iota + + iota + iotatonos + + @MMK_R_GRK_iotadieresis + + iotadieresis + iotadieresistonos + + @MMK_R_GRK_mu + + digamma + mu + + @MMK_R_GRK_upsilon + + psi + upsilon + upsilondieresis + upsilondieresistonos + upsilontonos + + @MMK_R_LAT_A + + A + Aacute + Abreve + Acircumflex + Adieresis + Agrave + Amacron + Aogonek + Aring + Atilde + Abreveacute + Abrevedotbelow + Abrevegrave + Abrevehoi + Abrevetilde + Acaron + Acircumflexacute + Acircumflexdotbelow + Acircumflexgrave + Acircumflexhoi + Acircumflextilde + Adotbelow + Ahoi + + @MMK_R_LAT_A.sc + + A.sc + Aacute.sc + Abreve.sc + Acircumflex.sc + Adieresis.sc + Agrave.sc + Amacron.sc + Aogonek.sc + Aring.sc + Atilde.sc + Abreveacute.sc + Abrevedotbelow.sc + Abrevegrave.sc + Abrevehoi.sc + Abrevetilde.sc + Acaron.sc + Acircumflexacute.sc + Acircumflexdotbelow.sc + Acircumflexgrave.sc + Acircumflexhoi.sc + Acircumflextilde.sc + Adotbelow.sc + Ahoi.sc + + @MMK_R_LAT_E + + B + D + Dcaron + Dcroat + E + Eacute + Ecaron + Ecircumflex + Edieresis + Edotaccent + Egrave + Emacron + Eogonek + Eth + F + H + I + Iacute + Icircumflex + Idieresis + Idotaccent + Igrave + Imacron + Iogonek + K + Kcommaaccent + L + Lacute + Lcaron + Ldot + Lslash + P + R + Racute + Rcaron + Rcommaaccent + Thorn + Lcommaaccent + Ddotbelow + Dlinebelow + Ebreve + Ecircumflexacute + Ecircumflexdotbelow + Ecircumflexgrave + Ecircumflexhoi + Ecircumflextilde + Edotbelow + Ehoi + Etilde + Hbrevebelow + Hcircumflex + Hdotbelow + Icaron + Idotbelow + Ihoi + Itilde + Ldotbelow + Ldotbelowmacron + Llinebelow + Rdotbelow + Rdotbelowmacron + Rlinebelow + Hbar + + @MMK_R_LAT_E.sc + + B.sc + D.sc + Dcaron.sc + Dcroat.sc + E.sc + Eacute.sc + Ecaron.sc + Ecircumflex.sc + Edieresis.sc + Edotaccent.sc + Egrave.sc + Emacron.sc + Eogonek.sc + Eth.sc + F.sc + H.sc + I.sc + Iacute.sc + Icircumflex.sc + Idieresis.sc + Idotaccent.sc + Igrave.sc + Imacron.sc + Iogonek.sc + K.sc + Kcommaaccent.sc + L.sc + Lacute.sc + Lcaron.sc + Ldot.sc + Lslash.sc + P.sc + R.sc + Racute.sc + Rcaron.sc + Rcommaaccent.sc + Thorn.sc + Lcommaaccent.sc + Ddotbelow.sc + Dlinebelow.sc + Ebreve.sc + Ecircumflexacute.sc + Ecircumflexdotbelow.sc + Ecircumflexgrave.sc + Ecircumflexhoi.sc + Ecircumflextilde.sc + Edotbelow.sc + Ehoi.sc + Etilde.sc + Hbrevebelow.sc + Hcircumflex.sc + Hdotbelow.sc + Icaron.sc + Idotbelow.sc + Ihoi.sc + Itilde.sc + Ldotbelow.sc + Ldotbelowmacron.sc + Llinebelow.sc + Rdotbelow.sc + Rdotbelowmacron.sc + Rlinebelow.sc + Hbar.sc + + @MMK_R_LAT_J + + J + Jcircumflex + + @MMK_R_LAT_J.sc + + J.sc + Jcircumflex.sc + + @MMK_R_LAT_M + + M + N + Nacute + Ncaron + Ntilde + Ndotaccent + Ncommaaccent + Macute + Mdotbelow + Ndotbelow + Ngrave + Nlinebelow + + @MMK_R_LAT_M.sc + + M.sc + N.sc + Nacute.sc + Ncaron.sc + Ntilde.sc + Ndotaccent.sc + Ncommaaccent.sc + Macute.sc + Mdotbelow.sc + Ndotbelow.sc + Ngrave.sc + Nlinebelow.sc + + @MMK_R_LAT_O + + C + Cacute + Ccaron + Ccedilla + G + Gbreve + Gdotaccent + O + OE + Oacute + Ocircumflex + Odieresis + Ograve + Ohungarumlaut + Omacron + Oslash + Otilde + Q + Gcommaaccent + Ccircumflex + Cdotaccent + Obreve + Ocaron + Ocircumflexacute + Ocircumflexdotbelow + Ocircumflexgrave + Ocircumflexhoi + Ocircumflextilde + Odotbelow + Ohoi + Ohorn + Ohornacute + Ohorndotbelow + Ohorngrave + Ohornhoi + Ohorntilde + Gcaron + Gcircumflex + Gmacron + Gtilde + Schwa + + @MMK_R_LAT_O.sc + + C.sc + Cacute.sc + Ccaron.sc + Ccedilla.sc + G.sc + Gbreve.sc + Gdotaccent.sc + O.sc + OE.sc + Oacute.sc + Ocircumflex.sc + Odieresis.sc + Ograve.sc + Ohungarumlaut.sc + Omacron.sc + Oslash.sc + Otilde.sc + Q.sc + Gcommaaccent.sc + Ccircumflex.sc + Cdotaccent.sc + Obreve.sc + Ocaron.sc + Ocircumflexacute.sc + Ocircumflexdotbelow.sc + Ocircumflexgrave.sc + Ocircumflexhoi.sc + Ocircumflextilde.sc + Odotbelow.sc + Ohoi.sc + Ohorn.sc + Ohornacute.sc + Ohorndotbelow.sc + Ohorngrave.sc + Ohornhoi.sc + Ohorntilde.sc + Gcaron.sc + Gcircumflex.sc + Gmacron.sc + Gtilde.sc + Schwa.sc + + @MMK_R_LAT_S + + S + Sacute + Scaron + Scedilla + Scommaaccent + Scircumflex + Sdotaccent + Sdotbelow + + @MMK_R_LAT_S.sc + + S.sc + Sacute.sc + Scaron.sc + Scedilla.sc + Scommaaccent.sc + Scircumflex.sc + Sdotaccent.sc + Sdotbelow.sc + germandbls.sc + + @MMK_R_LAT_T + + T + Tcaron + Tcommaaccent + Tcedilla + Tdotbelow + Tlinebelow + + @MMK_R_LAT_T.sc + + T.sc + Tcaron.sc + Tcommaaccent.sc + Tcedilla.sc + Tdotbelow.sc + Tlinebelow.sc + tdieresis.sc + + @MMK_R_LAT_U + + U + Uacute + Ucircumflex + Udieresis + Ugrave + Uhungarumlaut + Umacron + Uogonek + Uring + Ubreve + Ucaron + Udieresisacute + Udieresiscaron + Udieresisgrave + Udieresismacron + Udotbelow + Uhoi + Uhorn + Uhornacute + Uhorndotbelow + Uhorngrave + Uhornhoi + Uhorntilde + Utilde + + @MMK_R_LAT_U.sc + + U.sc + Uacute.sc + Ucircumflex.sc + Udieresis.sc + Ugrave.sc + Uhungarumlaut.sc + Umacron.sc + Uogonek.sc + Uring.sc + Ubreve.sc + Ucaron.sc + Udieresisacute.sc + Udieresiscaron.sc + Udieresisgrave.sc + Udieresismacron.sc + Udotbelow.sc + Uhoi.sc + Uhorn.sc + Uhornacute.sc + Uhorndotbelow.sc + Uhorngrave.sc + Uhornhoi.sc + Uhorntilde.sc + Utilde.sc + + @MMK_R_LAT_W + + W + Wacute + Wcircumflex + Wdieresis + Wgrave + + @MMK_R_LAT_W.sc + + W.sc + Wacute.sc + Wcircumflex.sc + Wdieresis.sc + Wgrave.sc + + @MMK_R_LAT_Y + + Y + Yacute + Ydieresis + Ycircumflex + Ydotaccent + Ydotbelow + Ygrave + Yhoi + Ytilde + + @MMK_R_LAT_Y.sc + + Y.sc + Yacute.sc + Ydieresis.sc + Ycircumflex.sc + Ydotaccent.sc + Ydotbelow.sc + Ygrave.sc + Yhoi.sc + Ytilde.sc + + @MMK_R_LAT_Z + + Z + Zacute + Zcaron + Zdotaccent + Zdotbelow + + @MMK_R_LAT_Z.sc + + Z.sc + Zacute.sc + Zcaron.sc + Zdotaccent.sc + Zdotbelow.sc + + @MMK_R_LAT_a + + a + aacute + abreve + acircumflex + adieresis + ae + agrave + amacron + aogonek + aring + atilde + abreveacute + abrevedotbelow + abrevegrave + abrevehoi + abrevetilde + acaron + acircumflexacute + acircumflexdotbelow + acircumflexgrave + acircumflexhoi + acircumflextilde + adotbelow + ahoi + + @MMK_R_LAT_f + + f + germandbls + longs + f_i + f_l + f_t + f_f + f_f_i + f_f_l + + @MMK_R_LAT_f.sc + + f_i.sc + f_l.sc + + @MMK_R_LAT_g + + g + gbreve + gdotaccent + gcommaaccent + gcaron + gcircumflex + gmacron + gtilde + + @MMK_R_LAT_h + + h + k + kcommaaccent + l + lacute + lcaron + ldot + lslash + b + lcommaaccent + ldotbelow + ldotbelowmacron + llinebelow + hbrevebelow + hcircumflex + hdotbelow + hbar + + @MMK_R_LAT_i + + i + iacute + igrave + iogonek + i.trk + idotbelow + ihoi + + @MMK_R_LAT_icircumflex + + icircumflex + idieresis + imacron + icaron + itilde + + @MMK_R_LAT_j + + j + jcircumflex + dotlessj + + @MMK_R_LAT_m + + m + n + nacute + ncaron + ntilde + r + racute + rcaron + rcommaaccent + ndotaccent + ncommaaccent + dotlessi + macute + mdotbelow + ndotbelow + ngrave + nlinebelow + rdotbelow + rdotbelowmacron + rlinebelow + kgreenlandic + + @MMK_R_LAT_o + + c + cacute + ccaron + ccedilla + d + dcaron + dcroat + e + eacute + ecaron + ecircumflex + edieresis + edotaccent + egrave + emacron + eogonek + eth + o + oacute + ocircumflex + odieresis + oe + ograve + ohungarumlaut + omacron + oslash + otilde + q + ccircumflex + cdotaccent + ddotbelow + dlinebelow + ebreve + ecircumflexacute + ecircumflexdotbelow + ecircumflexgrave + ecircumflexhoi + ecircumflextilde + edotbelow + ehoi + etilde + ocaron + ocircumflexacute + ocircumflexdotbelow + ocircumflexgrave + ocircumflexhoi + ocircumflextilde + odotbelow + ohoi + ohorn + ohornacute + ohorndotbelow + ohorngrave + ohornhoi + ohorntilde + obreve + schwa + + @MMK_R_LAT_s + + s + sacute + scaron + scedilla + scommaaccent + scircumflex + sdotaccent + sdotbelow + + @MMK_R_LAT_t + + t + tcaron + tcommaaccent + tcedilla + tdieresis + tdotbelow + tlinebelow + + @MMK_R_LAT_u + + u + uacute + ucircumflex + udieresis + ugrave + uhungarumlaut + umacron + uogonek + uring + ubreve + ucaron + udieresisacute + udieresiscaron + udieresisgrave + udieresismacron + udotbelow + uhoi + uhorn + uhornacute + uhorndotbelow + uhorngrave + uhornhoi + uhorntilde + utilde + + @MMK_R_LAT_v + + v + w + wacute + wcircumflex + wdieresis + wgrave + + @MMK_R_LAT_y + + y + yacute + ydieresis + ycircumflex + ydotaccent + ydotbelow + ygrave + yhoi + ytilde + + @MMK_R_LAT_z + + z + zacute + zcaron + zdotaccent + zdotbelow + + @MMK_R_colon + + colon + semicolon + + @MMK_R_comma + + comma + ellipsis + period + + @MMK_R_comma.sups + + comma.sups + period.sups + + @MMK_R_copyright + + copyright + soundcopyright + copyleft + + @MMK_R_eight.lf + + eight.lf + eight.osf + + @MMK_R_equal + + equal + notequal + approxequal + + @MMK_R_fractions + + onehalf + onequarter + percent + perthousand + threequarters + fiveeighths + oneeighth + onethird + seveneighths + threeeighths + twothirds + + @MMK_R_greater + + greater + multiply + + @MMK_R_guilsinglleft + + guillemotleft + guillemotleft.cap + guilsinglleft + guilsinglleft.cap + + @MMK_R_guilsinglright + + guillemotright + guillemotright.cap + guilsinglright + guilsinglright.cap + + @MMK_R_hyphen + + emdash + endash + hyphen + horizontalbar + emdash.cap + endash.cap + horizontalbar.cap + hyphen.cap + figuredash + threeemdash + twoemdash + + @MMK_R_hyphen.sc + + emdash.sc + endash.sc + hyphen.sc + + @MMK_R_hyphen.sups + + emdash.sups + endash.sups + hyphen.sups + + @MMK_R_parenleft + + braceleft + braceleft.cap + bracketleft + bracketleft.cap + parenleft + parenleft.cap + + @MMK_R_parenleft.sc + + braceleft.sc + bracketleft.sc + parenleft.sc + + @MMK_R_parenright + + braceright + braceright.cap + bracketright + bracketright.cap + parenright + parenright.cap + + @MMK_R_parenright.sc + + braceright.sc + bracketright.sc + parenright.sc + + @MMK_R_periodcentered + + bulletoperator + periodcentered + + @MMK_R_plus + + asciitilde + divide + less + logicalnot + minus + plus + + @MMK_R_quotedbl + + quotedbl + quotesingle + + @MMK_R_quotedbl.sc + + quotedbl.sc + quotesingle.sc + + @MMK_R_quoteleft + + quotedblleft + quoteleft + + @MMK_R_quoteleft.sc + + quotedblleft.sc + quoteleft.sc + + @MMK_R_quoteright + + quotedblright + quoteright + + @MMK_R_quoteright.sc + + quotedblright.sc + quoteright.sc + + @MMK_R_quotesinglbase + + quotedblbase + quotesinglbase + + @MMK_R_registered + + asterisk + registered + + @MMK_R_six.lf + + six.lf + six.osf + + @MMK_R_subs_figures + + eight.subs + five.subs + four.subs + nine.subs + one.subs + seven.subs + six.subs + three.subs + two.subs + zero.subs + + @MMK_R_sups_corner + + b.sups + f.sups + h.sups + i.sups + k.sups + l.sups + m.sups + n.sups + r.sups + x.sups + z.sups + A.sups + B.sups + D.sups + E.sups + F.sups + H.sups + I.sups + K.sups + L.sups + M.sups + N.sups + P.sups + R.sups + X.sups + Z.sups + + @MMK_R_sups_desc + + g.sups + p.sups + y.sups + + @MMK_R_sups_diag + + v.sups + w.sups + V.sups + W.sups + T.sups + Y.sups + + @MMK_R_sups_figures + + eight.sups + five.sups + four.sups + nine.sups + one.sups + seven.sups + six.sups + three.sups + two.sups + zero.sups + + @MMK_R_sups_j + + J.sups + j.sups + + @MMK_R_sups_round + + a.sups + c.sups + d.sups + e.sups + eacute.sups + egrave.sups + o.sups + q.sups + s.sups + ordfeminine + ordmasculine + u.sups + t.sups + C.sups + G.sups + O.sups + Q.sups + S.sups + U.sups + + @MMK_R_trademark + + servicemark + trademark + commercemark + deposeemark + + @MMK_R_zero.lf + + zero.lf + zero.lfslash + + ADDL_AL3_AL4 + + Abreveacute + Abrevedotbelow + Abrevegrave + Abrevehoi + Abrevetilde + Acaron + Acircumflexacute + Acircumflexdotbelow + Acircumflexgrave + Acircumflexhoi + Acircumflextilde + Adotbelow + Ahoi + Ccircumflex + Cdotaccent + Ddotbelow + Dlinebelow + Ebreve + Ecircumflexacute + Ecircumflexdotbelow + Ecircumflexgrave + Ecircumflexhoi + Ecircumflextilde + Edotbelow + Ehoi + Etilde + Gcaron + Gcircumflex + Gmacron + Gtilde + Hbar + Hbrevebelow + Hcircumflex + Hdotbelow + Icaron + Idotbelow + Ihoi + Itilde + Jcircumflex + Ldotbelow + Ldotbelowmacron + Llinebelow + Mdotbelow + Ndotbelow + Nlinebelow + Ocaron + Ocircumflexacute + Ocircumflexdotbelow + Ocircumflexgrave + Ocircumflexhoi + Ocircumflextilde + Odotbelow + Ohoi + Ohorn + Ohornacute + Ohorndotbelow + Ohorngrave + Ohornhoi + Ohorntilde + Rdotbelow + Rdotbelowmacron + Rlinebelow + Scircumflex + Sdotaccent + Sdotbelow + Germandbls + Tdotbelow + Tlinebelow + Ubreve + Ucaron + Udieresisacute + Udieresiscaron + Udieresisgrave + Udieresismacron + Udotbelow + Uhoi + Uhorn + Uhornacute + Uhorndotbelow + Uhorngrave + Uhornhoi + Uhorntilde + Utilde + Wacute + Wcircumflex + Wdieresis + Wgrave + Ycircumflex + Ydotaccent + Ydotbelow + Ygrave + Yhoi + Ytilde + Zdotbelow + Schwa + abreveacute + abrevedotbelow + abrevegrave + abrevehoi + abrevetilde + acaron + acircumflexacute + acircumflexdotbelow + acircumflexgrave + acircumflexhoi + acircumflextilde + adotbelow + ahoi + ccircumflex + cdotaccent + ddotbelow + dlinebelow + ebreve + ecircumflexacute + ecircumflexdotbelow + ecircumflexgrave + ecircumflexhoi + ecircumflextilde + edotbelow + ehoi + etilde + gcaron + gcircumflex + gmacron + gtilde + hbar + hbrevebelow + hcircumflex + hdotbelow + icaron + idotbelow + ihoi + itilde + dotlessj + jcircumflex + kgreenlandic + ldotbelow + ldotbelowmacron + llinebelow + mdotbelow + napostrophe + ndotbelow + nlinebelow + ocaron + ocircumflexacute + ocircumflexdotbelow + ocircumflexgrave + ocircumflexhoi + ocircumflextilde + odotbelow + ohoi + ohorn + ohornacute + ohorndotbelow + ohorngrave + ohornhoi + ohorntilde + rdotbelow + rdotbelowmacron + rlinebelow + scircumflex + sdotaccent + sdotbelow + tdieresis + tdotbelow + tlinebelow + ubreve + ucaron + udieresisacute + udieresiscaron + udieresisgrave + udieresismacron + udotbelow + uhoi + uhorn + uhornacute + uhorndotbelow + uhorngrave + uhornhoi + uhorntilde + utilde + wacute + wcircumflex + wdieresis + wgrave + ycircumflex + ydotaccent + ydotbelow + ygrave + yhoi + ytilde + zdotbelow + schwa + alphalatin + gscript + f_f + f_f_i + f_f_l + zero.cap + one.cap + two.cap + three.cap + four.cap + five.cap + six.cap + seven.cap + eight.cap + nine.cap + bracketleft.sups + bracketright.sups + bracketleft.subs + bracketright.subs + bracketleft.dnom + bracketright.dnom + bracketleft.numr + bracketright.numr + A.sups + B.sups + C.sups + D.sups + E.sups + F.sups + G.sups + H.sups + I.sups + J.sups + K.sups + L.sups + M.sups + N.sups + O.sups + P.sups + Q.sups + R.sups + S.sups + T.sups + U.sups + V.sups + W.sups + X.sups + Y.sups + Z.sups + colonmonetary + lira + naira + peseta + won + dong + peso + guarani + hryvnia + cedi + ruble + bitcoin + ringhalfleftmod + ringhalfrightmod + verticallinemod + verticallinelowmod + verticallinebelowcmb + brevebelowcmb + dieresisbelowcmb + dotbelowcmb + hoicmb + hoicmb.cap + horncmb + macronbelowcmb + dieresisacute + dieresisacute.cap + dieresisgrave + dieresisgrave.cap + dieresismacron + dieresismacron.cap + dieresiscaron + dieresiscaron.cap + circumflexacute + circumflexacute.cap + circumflexgrave + circumflexgrave.cap + circumflexhoi + circumflexhoi.cap + circumflextilde + circumflextilde.cap + breveacute + breveacute.cap + brevegrave + brevegrave.cap + brevehoi + brevehoi.cap + brevetilde + brevetilde.cap + Alpha + Beta + Gamma + Delta + Epsilon + Zeta + Eta + Theta + Iota + Kappa + Lambda + Mu + Nu + Xi + Omicron + Pi + Rho + Sigma + Tau + Upsilon + Phi + Chi + Psi + Omega + Alphatonos + Epsilontonos + Etatonos + Iotatonos + Iotadieresis + Omicrontonos + Upsilontonos + Upsilondieresis + Omegatonos + alpha + beta + gamma + delta + epsilon + zeta + eta + theta + iota + kappa + lambda + mu + nu + xi + omicron + rho + sigma + tau + upsilon + phi + chi + psi + omega + sigma.end + alphatonos + epsilontonos + etatonos + iotatonos + iotadieresis + omicrontonos + upsilontonos + upsilondieresis + omegatonos + iotadieresistonos + upsilondieresistonos + kai + koppa + stigma + digamma + sampi + questiongreek + anoteleia + anoteleia.cap + numeralsign + lownumeralsign + tonos + tonos.cap + dieresistonos + tonoscmb + dieresistonoscmb + Acyr + Be + Ve + Ghe + De + Ie + Zhe + Ze + Icyr + Ishort + Ka + El + Em + En + Ocyr + Pe + Er + Es + Te + Ucyr + Ef + Ha + Tse + Che + Sha + Shcha + Hard + Yeru + Soft + Ecyr + Yu + Ya + Iegrave + Io + Dje + Gje + Ieukran + Dze + Iukran + Yi + Je + Lje + Nje + Tshe + Kje + Igravecyr + Ushort + Dzhe + Yat + Fita + Izhitsa + Gheup + Ghestroke + Zhedescender + Zedescender + Kadescender + Kabashkir + Endescender + Esdescender + Ustraight + Ustraightstroke + Hadescender + Chedescender + Shha + Palochka + Zhebreve + Abrevecyr + Aie + Iebreve + Schwacyr + Imacroncyr + Odieresiscyr + Obarcyr + Umacroncyr + Uacutedblcyr + acyr + be + ve + ghe + de + ie + zhe + ze + icyr + ishort + ka + el + em + en + ocyr + pe + er + es + te + ucyr + ef + ha + tse + che + sha + shcha + hard + yeru + soft + ecyr + yu + ya + iegrave + io + dje + gje + ieukran + dze + iukran + yi + je + lje + nje + tshe + kje + igravecyr + ushort + dzhe + yat + fita + izhitsa + gheup + ghestroke + zhedescender + zedescender + kadescender + kabashkir + endescender + esdescender + ustraight + ustraightstroke + hadescender + chedescender + shha + zhebreve + palochka + abrevecyr + aie + iebreve + schwacyr + imacroncyr + odieresiscyr + obarcyr + umacroncyr + uacutedblcyr + be.srb + numero + brevecmb.cyr + brevecmb.cyrcap + twoemdash + threeemdash + commercemark + deposeemark + Macute + macute + Ngrave + ngrave + Obreve + obreve + twodotenleader + exclamdbl + questiondbl + questionexclam + exclamquestion + + ADDL_AL3_AL4.sc + + Abreveacute.sc + Abrevedotbelow.sc + Abrevegrave.sc + Abrevehoi.sc + Abrevetilde.sc + Acaron.sc + Acircumflexacute.sc + Acircumflexdotbelow.sc + Acircumflexgrave.sc + Acircumflexhoi.sc + Acircumflextilde.sc + Adotbelow.sc + Ahoi.sc + Ccircumflex.sc + Cdotaccent.sc + Ddotbelow.sc + Dlinebelow.sc + Ebreve.sc + Ecircumflexacute.sc + Ecircumflexdotbelow.sc + Ecircumflexgrave.sc + Ecircumflexhoi.sc + Ecircumflextilde.sc + Edotbelow.sc + Ehoi.sc + Etilde.sc + Gcaron.sc + Gcircumflex.sc + Gmacron.sc + Gtilde.sc + Hbar.sc + Hbrevebelow.sc + Hcircumflex.sc + Hdotbelow.sc + Icaron.sc + Idotbelow.sc + Ihoi.sc + Itilde.sc + Jcircumflex.sc + Ldotbelow.sc + Ldotbelowmacron.sc + Llinebelow.sc + Mdotbelow.sc + Ndotbelow.sc + Nlinebelow.sc + Ocaron.sc + Ocircumflexacute.sc + Ocircumflexdotbelow.sc + Ocircumflexgrave.sc + Ocircumflexhoi.sc + Ocircumflextilde.sc + Odotbelow.sc + Ohoi.sc + Ohorn.sc + Ohornacute.sc + Ohorndotbelow.sc + Ohorngrave.sc + Ohornhoi.sc + Ohorntilde.sc + Rdotbelow.sc + Rdotbelowmacron.sc + Rlinebelow.sc + Scircumflex.sc + Sdotaccent.sc + Sdotbelow.sc + Germandbls.sc + Tdotbelow.sc + Tlinebelow.sc + Ubreve.sc + Ucaron.sc + Udieresisacute.sc + Udieresiscaron.sc + Udieresisgrave.sc + Udieresismacron.sc + Udotbelow.sc + Uhoi.sc + Uhorn.sc + Uhornacute.sc + Uhorndotbelow.sc + Uhorngrave.sc + Uhornhoi.sc + Uhorntilde.sc + Utilde.sc + Wacute.sc + Wcircumflex.sc + Wdieresis.sc + Wgrave.sc + Ycircumflex.sc + Ydotaccent.sc + Ydotbelow.sc + Ygrave.sc + Yhoi.sc + Ytilde.sc + Zdotbelow.sc + Schwa.sc + tdieresis.sc + Alpha.sc + Beta.sc + Gamma.sc + Delta.sc + Epsilon.sc + Zeta.sc + Eta.sc + Theta.sc + Iota.sc + Kappa.sc + Lambda.sc + Mu.sc + Nu.sc + Xi.sc + Omicron.sc + Pi.sc + Rho.sc + Sigma.sc + Tau.sc + Upsilon.sc + Phi.sc + Chi.sc + Psi.sc + Omega.sc + Iotadieresis.sc + Upsilondieresis.sc + Acyr.sc + Be.sc + Ve.sc + Ghe.sc + De.sc + Ie.sc + Zhe.sc + Ze.sc + Icyr.sc + Ishort.sc + Ka.sc + El.sc + Em.sc + En.sc + Ocyr.sc + Pe.sc + Er.sc + Es.sc + Te.sc + Ucyr.sc + Ef.sc + Ha.sc + Tse.sc + Che.sc + Sha.sc + Shcha.sc + Hard.sc + Yeru.sc + Soft.sc + Ecyr.sc + Yu.sc + Ya.sc + Iegrave.sc + Io.sc + Dje.sc + Gje.sc + Ieukran.sc + Dze.sc + Iukran.sc + Yi.sc + Je.sc + Lje.sc + Nje.sc + Tshe.sc + Kje.sc + Igravecyr.sc + Ushort.sc + Dzhe.sc + Yat.sc + Fita.sc + Izhitsa.sc + Gheup.sc + Ghestroke.sc + Zhedescender.sc + Zedescender.sc + Kadescender.sc + Kabashkir.sc + Endescender.sc + Esdescender.sc + Ustraight.sc + Ustraightstroke.sc + Hadescender.sc + Chedescender.sc + Shha.sc + Palochka.sc + Zhebreve.sc + Abrevecyr.sc + Aie.sc + Iebreve.sc + Schwacyr.sc + Imacroncyr.sc + Odieresiscyr.sc + Obarcyr.sc + Umacroncyr.sc + Uacutedblcyr.sc + Macute.sc + Ngrave.sc + Obreve.sc + + COMBINING_MARKS + + commabelowcmb.alt + gravecmb + gravecmb.cap + acutecmb + acutecmb.cap + circumflexcmb + circumflexcmb.cap + tildecmb + tildecmb.cap + macroncmb + macroncmb.cap + brevecmb + brevecmb.cap + dotaccentcmb + dotaccentcmb.cap + dieresiscmb + dieresiscmb.cap + ringcmb + ringcmb.cap + hungarumlautcmb + hungarumlautcmb.cap + caroncmb + caroncmb.cap + commabelowcmb + cedillacmb + ogonekcmb + verticallinebelowcmb + brevebelowcmb + dieresisbelowcmb + dotbelowcmb + hoicmb + hoicmb.cap + horncmb + macronbelowcmb + dieresisacute + dieresisacute.cap + dieresisgrave + dieresisgrave.cap + dieresismacron + dieresismacron.cap + dieresiscaron + dieresiscaron.cap + circumflexacute + circumflexacute.cap + circumflexgrave + circumflexgrave.cap + circumflexhoi + circumflexhoi.cap + circumflextilde + circumflextilde.cap + breveacute + breveacute.cap + brevegrave + brevegrave.cap + brevehoi + brevehoi.cap + brevetilde + brevetilde.cap + tonoscmb + dieresistonoscmb + brevecmb.cyr + brevecmb.cyrcap + + CYRILLIC + + Acyr + Be + Ve + Ghe + De + Ie + Zhe + Ze + Icyr + Ishort + Ka + El + Em + En + Ocyr + Pe + Er + Es + Te + Ucyr + Ef + Ha + Tse + Che + Sha + Shcha + Hard + Yeru + Soft + Ecyr + Yu + Ya + Iegrave + Io + Dje + Gje + Ieukran + Dze + Iukran + Yi + Je + Lje + Nje + Tshe + Kje + Igravecyr + Ushort + Dzhe + Yat + Fita + Izhitsa + Gheup + Ghestroke + Zhedescender + Zedescender + Kadescender + Kabashkir + Endescender + Esdescender + Ustraight + Ustraightstroke + Hadescender + Chedescender + Shha + Palochka + Zhebreve + Abrevecyr + Aie + Iebreve + Schwacyr + Imacroncyr + Odieresiscyr + Obarcyr + Umacroncyr + Uacutedblcyr + acyr + be + ve + ghe + de + ie + zhe + ze + icyr + ishort + ka + el + em + en + ocyr + pe + er + es + te + ucyr + ef + ha + tse + che + sha + shcha + hard + yeru + soft + ecyr + yu + ya + iegrave + io + dje + gje + ieukran + dze + iukran + yi + je + lje + nje + tshe + kje + igravecyr + ushort + dzhe + yat + fita + izhitsa + gheup + ghestroke + zhedescender + zedescender + kadescender + kabashkir + endescender + esdescender + ustraight + ustraightstroke + hadescender + chedescender + shha + zhebreve + palochka + abrevecyr + aie + iebreve + schwacyr + imacroncyr + odieresiscyr + obarcyr + umacroncyr + uacutedblcyr + be.srb + numero + brevecmb.cyr + brevecmb.cyrcap + + CYRILLIC.sc + + Acyr.sc + Be.sc + Ve.sc + Ghe.sc + De.sc + Ie.sc + Zhe.sc + Ze.sc + Icyr.sc + Ishort.sc + Ka.sc + El.sc + Em.sc + En.sc + Ocyr.sc + Pe.sc + Er.sc + Es.sc + Te.sc + Ucyr.sc + Ef.sc + Ha.sc + Tse.sc + Che.sc + Sha.sc + Shcha.sc + Hard.sc + Yeru.sc + Soft.sc + Ecyr.sc + Yu.sc + Ya.sc + Iegrave.sc + Io.sc + Dje.sc + Gje.sc + Ieukran.sc + Dze.sc + Iukran.sc + Yi.sc + Je.sc + Lje.sc + Nje.sc + Tshe.sc + Kje.sc + Igravecyr.sc + Ushort.sc + Dzhe.sc + Yat.sc + Fita.sc + Izhitsa.sc + Gheup.sc + Ghestroke.sc + Zhedescender.sc + Zedescender.sc + Kadescender.sc + Kabashkir.sc + Endescender.sc + Esdescender.sc + Ustraight.sc + Ustraightstroke.sc + Hadescender.sc + Chedescender.sc + Shha.sc + Palochka.sc + Zhebreve.sc + Abrevecyr.sc + Aie.sc + Iebreve.sc + Schwacyr.sc + Imacroncyr.sc + Odieresiscyr.sc + Obarcyr.sc + Umacroncyr.sc + Uacutedblcyr.sc + + GREEK + + Alpha + Beta + Gamma + Delta + Epsilon + Zeta + Eta + Theta + Iota + Kappa + Lambda + Mu + Nu + Xi + Omicron + Pi + Rho + Sigma + Tau + Upsilon + Phi + Chi + Psi + Omega + Alphatonos + Epsilontonos + Etatonos + Iotatonos + Iotadieresis + Omicrontonos + Upsilontonos + Upsilondieresis + Omegatonos + alpha + beta + gamma + delta + epsilon + zeta + eta + theta + iota + kappa + lambda + mu + nu + xi + omicron + pi + rho + sigma + tau + upsilon + phi + chi + psi + omega + sigma.end + alphatonos + epsilontonos + etatonos + iotatonos + iotadieresis + omicrontonos + upsilontonos + upsilondieresis + omegatonos + iotadieresistonos + upsilondieresistonos + kai + koppa + stigma + digamma + sampi + questiongreek + anoteleia + anoteleia.cap + numeralsign + lownumeralsign + tonos + tonos.cap + dieresistonos + tonoscmb + dieresistonoscmb + + GREEK.sc + + Alpha.sc + Beta.sc + Gamma.sc + Delta.sc + Epsilon.sc + Zeta.sc + Eta.sc + Theta.sc + Iota.sc + Kappa.sc + Lambda.sc + Mu.sc + Nu.sc + Xi.sc + Omicron.sc + Pi.sc + Rho.sc + Sigma.sc + Tau.sc + Upsilon.sc + Phi.sc + Chi.sc + Psi.sc + Omega.sc + Iotadieresis.sc + Upsilondieresis.sc + + LATIN + + A + B + C + D + E + F + G + H + I + J + K + L + M + N + O + P + Q + R + S + T + U + V + W + X + Y + Z + a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + t + u + v + w + x + y + z + Agrave + Aacute + Acircumflex + Atilde + Adieresis + Amacron + Abreve + Abreveacute + Abrevedotbelow + Abrevegrave + Abrevehoi + Abrevetilde + Acaron + Acircumflexacute + Acircumflexdotbelow + Acircumflexgrave + Acircumflexhoi + Acircumflextilde + Adotbelow + Ahoi + Aring + Aogonek + AE + Ccedilla + Cacute + Ccaron + Ccircumflex + Cdotaccent + Dcaron + Dcroat + Ddotbelow + Dlinebelow + Egrave + Eacute + Ecircumflex + Ecaron + Edieresis + Emacron + Edotaccent + Eogonek + Ebreve + Ecircumflexacute + Ecircumflexdotbelow + Ecircumflexgrave + Ecircumflexhoi + Ecircumflextilde + Edotbelow + Ehoi + Etilde + Gbreve + Gdotaccent + Gcommaaccent + Gcaron + Gcircumflex + Gmacron + Gtilde + Hbar + Hbrevebelow + Hcircumflex + Hdotbelow + Igrave + Iacute + Icircumflex + Idieresis + Imacron + Idotaccent + Iogonek + Icaron + Idotbelow + Ihoi + Itilde + Jcircumflex + Kcommaaccent + Lacute + Lcaron + Lcommaaccent + Ldot + Ldotbelow + Ldotbelowmacron + Llinebelow + Lslash + Mdotbelow + Nacute + Ncaron + Ntilde + Ncommaaccent + Ndotaccent + Ndotbelow + Nlinebelow + Ograve + Oacute + Ocircumflex + Otilde + Odieresis + Omacron + Ohungarumlaut + Ocaron + Ocircumflexacute + Ocircumflexdotbelow + Ocircumflexgrave + Ocircumflexhoi + Ocircumflextilde + Odotbelow + Ohoi + Ohorn + Ohornacute + Ohorndotbelow + Ohorngrave + Ohornhoi + Ohorntilde + Oslash + OE + Racute + Rcaron + Rcommaaccent + Rdotbelow + Rdotbelowmacron + Rlinebelow + Sacute + Scaron + Scedilla + Scommaaccent + Scircumflex + Sdotaccent + Sdotbelow + Germandbls + Tcaron + Tcedilla + Tcommaaccent + Tdotbelow + Tlinebelow + Ugrave + Uacute + Ucircumflex + Udieresis + Umacron + Uring + Uhungarumlaut + Uogonek + Ubreve + Ucaron + Udieresisacute + Udieresiscaron + Udieresisgrave + Udieresismacron + Udotbelow + Uhoi + Uhorn + Uhornacute + Uhorndotbelow + Uhorngrave + Uhornhoi + Uhorntilde + Utilde + Wacute + Wcircumflex + Wdieresis + Wgrave + Yacute + Ydieresis + Ycircumflex + Ydotaccent + Ydotbelow + Ygrave + Yhoi + Ytilde + Zacute + Zcaron + Zdotaccent + Zdotbelow + Eth + Thorn + Schwa + agrave + aacute + acircumflex + atilde + adieresis + amacron + abreve + abreveacute + abrevedotbelow + abrevegrave + abrevehoi + abrevetilde + acaron + acircumflexacute + acircumflexdotbelow + acircumflexgrave + acircumflexhoi + acircumflextilde + adotbelow + ahoi + aring + aogonek + ae + ccedilla + cacute + ccaron + ccircumflex + cdotaccent + dcaron + dcroat + ddotbelow + dlinebelow + egrave + eacute + ecircumflex + ecaron + edieresis + emacron + edotaccent + eogonek + ebreve + ecircumflexacute + ecircumflexdotbelow + ecircumflexgrave + ecircumflexhoi + ecircumflextilde + edotbelow + ehoi + etilde + gbreve + gdotaccent + gcommaaccent + gcaron + gcircumflex + gmacron + gtilde + hbar + hbrevebelow + hcircumflex + hdotbelow + igrave + iacute + icircumflex + idieresis + imacron + iogonek + i.trk + icaron + idotbelow + ihoi + itilde + dotlessi + dotlessj + jcircumflex + kcommaaccent + kgreenlandic + lacute + lcaron + lcommaaccent + ldot + ldotbelow + ldotbelowmacron + llinebelow + lslash + mdotbelow + nacute + ncaron + ntilde + ncommaaccent + ndotaccent + napostrophe + ndotbelow + nlinebelow + ograve + oacute + ocircumflex + otilde + odieresis + omacron + ohungarumlaut + ocaron + ocircumflexacute + ocircumflexdotbelow + ocircumflexgrave + ocircumflexhoi + ocircumflextilde + odotbelow + ohoi + ohorn + ohornacute + ohorndotbelow + ohorngrave + ohornhoi + ohorntilde + oslash + oe + racute + rcommaaccent + rcaron + rdotbelow + rdotbelowmacron + rlinebelow + sacute + scaron + scedilla + scommaaccent + scircumflex + sdotaccent + sdotbelow + longs + germandbls + tcaron + tcedilla + tcommaaccent + tdieresis + tdotbelow + tlinebelow + ugrave + uacute + ucircumflex + udieresis + umacron + uring + uhungarumlaut + uogonek + ubreve + ucaron + udieresisacute + udieresiscaron + udieresisgrave + udieresismacron + udotbelow + uhoi + uhorn + uhornacute + uhorndotbelow + uhorngrave + uhornhoi + uhorntilde + utilde + wacute + wcircumflex + wdieresis + wgrave + yacute + ydieresis + ycircumflex + ydotaccent + ydotbelow + ygrave + yhoi + ytilde + zacute + zcaron + zdotaccent + zdotbelow + eth + thorn + schwa + alphalatin + gscript + f_i + f_l + f_t + f_f + f_f_i + f_f_l + Macute + macute + Ngrave + ngrave + Obreve + obreve + exclamdown + exclamdown.cap + questiondown + questiondown.cap + + LATIN.sc + + A.sc + B.sc + C.sc + D.sc + E.sc + F.sc + G.sc + H.sc + I.sc + J.sc + K.sc + L.sc + M.sc + N.sc + O.sc + P.sc + Q.sc + R.sc + S.sc + T.sc + U.sc + V.sc + W.sc + X.sc + Y.sc + Z.sc + Agrave.sc + Aacute.sc + Acircumflex.sc + Atilde.sc + Adieresis.sc + Amacron.sc + Abreve.sc + Abreveacute.sc + Abrevedotbelow.sc + Abrevegrave.sc + Abrevehoi.sc + Abrevetilde.sc + Acaron.sc + Acircumflexacute.sc + Acircumflexdotbelow.sc + Acircumflexgrave.sc + Acircumflexhoi.sc + Acircumflextilde.sc + Adotbelow.sc + Ahoi.sc + Aring.sc + Aogonek.sc + AE.sc + Ccedilla.sc + Cacute.sc + Ccaron.sc + Ccircumflex.sc + Cdotaccent.sc + Dcaron.sc + Dcroat.sc + Ddotbelow.sc + Dlinebelow.sc + Egrave.sc + Eacute.sc + Ecircumflex.sc + Ecaron.sc + Edieresis.sc + Emacron.sc + Edotaccent.sc + Eogonek.sc + Ebreve.sc + Ecircumflexacute.sc + Ecircumflexdotbelow.sc + Ecircumflexgrave.sc + Ecircumflexhoi.sc + Ecircumflextilde.sc + Edotbelow.sc + Ehoi.sc + Etilde.sc + Gbreve.sc + Gdotaccent.sc + Gcommaaccent.sc + Gcaron.sc + Gcircumflex.sc + Gmacron.sc + Gtilde.sc + Hbar.sc + Hbrevebelow.sc + Hcircumflex.sc + Hdotbelow.sc + Igrave.sc + Iacute.sc + Icircumflex.sc + Idieresis.sc + Imacron.sc + Idotaccent.sc + Iogonek.sc + Icaron.sc + Idotbelow.sc + Ihoi.sc + Itilde.sc + Jcircumflex.sc + Kcommaaccent.sc + Lacute.sc + Lcaron.sc + Lcommaaccent.sc + Ldot.sc + Ldotbelow.sc + Ldotbelowmacron.sc + Llinebelow.sc + Lslash.sc + Mdotbelow.sc + Nacute.sc + Ncaron.sc + Ntilde.sc + Ncommaaccent.sc + Ndotaccent.sc + Ndotbelow.sc + Nlinebelow.sc + Ograve.sc + Oacute.sc + Ocircumflex.sc + Otilde.sc + Odieresis.sc + Omacron.sc + Ohungarumlaut.sc + Ocaron.sc + Ocircumflexacute.sc + Ocircumflexdotbelow.sc + Ocircumflexgrave.sc + Ocircumflexhoi.sc + Ocircumflextilde.sc + Odotbelow.sc + Ohoi.sc + Ohorn.sc + Ohornacute.sc + Ohorndotbelow.sc + Ohorngrave.sc + Ohornhoi.sc + Ohorntilde.sc + Oslash.sc + OE.sc + Racute.sc + Rcaron.sc + Rcommaaccent.sc + Rdotbelow.sc + Rdotbelowmacron.sc + Rlinebelow.sc + Sacute.sc + Scaron.sc + Scedilla.sc + Scommaaccent.sc + Scircumflex.sc + Sdotaccent.sc + Sdotbelow.sc + Germandbls.sc + Tcaron.sc + Tcedilla.sc + Tcommaaccent.sc + Tdotbelow.sc + Tlinebelow.sc + Ugrave.sc + Uacute.sc + Ucircumflex.sc + Udieresis.sc + Umacron.sc + Uring.sc + Uhungarumlaut.sc + Uogonek.sc + Ubreve.sc + Ucaron.sc + Udieresisacute.sc + Udieresiscaron.sc + Udieresisgrave.sc + Udieresismacron.sc + Udotbelow.sc + Uhoi.sc + Uhorn.sc + Uhornacute.sc + Uhorndotbelow.sc + Uhorngrave.sc + Uhornhoi.sc + Uhorntilde.sc + Utilde.sc + Wacute.sc + Wcircumflex.sc + Wdieresis.sc + Wgrave.sc + Yacute.sc + Ydieresis.sc + Ycircumflex.sc + Ydotaccent.sc + Ydotbelow.sc + Ygrave.sc + Yhoi.sc + Ytilde.sc + Zacute.sc + Zcaron.sc + Zdotaccent.sc + Zdotbelow.sc + Eth.sc + Thorn.sc + Schwa.sc + germandbls.sc + tdieresis.sc + f_i.sc + f_l.sc + Macute.sc + Ngrave.sc + Obreve.sc + exclamdown.sc + questiondown.sc + + cap_punc + + hyphen.cap + endash.cap + emdash.cap + parenleft.cap + bracketleft.cap + braceleft.cap + parenright.cap + bracketright.cap + braceright.cap + guillemotleft.cap + guilsinglleft.cap + guillemotright.cap + guilsinglright.cap + at.cap + exclamdown.cap + questiondown.cap + horizontalbar.cap + + currency + + dollar + cent + sterling + yen + Euro + liraturkish + rupeeindian + florin + colonmonetary + lira + naira + peseta + won + dong + peso + guarani + hryvnia + cedi + ruble + bitcoin + + fig_lf + + zero.lf + one.lf + two.lf + three.lf + four.lf + five.lf + six.lf + seven.lf + eight.lf + nine.lf + zero + one + two + three + four + five + six + seven + eight + nine + + fig_lf.sc + + zero.sc + one.sc + two.sc + three.sc + four.sc + five.sc + six.sc + seven.sc + eight.sc + nine.sc + + fig_osf + + eight.osf + five.osf + four.osf + nine.osf + one.osf + seven.osf + six.osf + three.osf + two.osf + zero.osf + zero.tosf + one.tosf + two.tosf + three.tosf + four.tosf + five.tosf + six.tosf + seven.tosf + eight.tosf + nine.tosf + + fig_prop + + eight.osf + five.osf + four.osf + nine.osf + one.osf + seven.osf + six.osf + three.osf + two.osf + zero.osf + zero.lf + one.lf + two.lf + three.lf + four.lf + five.lf + six.lf + seven.lf + eight.lf + nine.lf + + lc + + a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + t + u + v + w + x + y + z + germandbls + agrave + aacute + acircumflex + atilde + adieresis + aring + ae + ccedilla + egrave + eacute + ecircumflex + edieresis + igrave + iacute + icircumflex + idieresis + eth + ntilde + ograve + oacute + ocircumflex + otilde + odieresis + oslash + ugrave + uacute + ucircumflex + udieresis + yacute + thorn + ydieresis + amacron + abreve + aogonek + cacute + ccircumflex + cdotaccent + ccaron + dcaron + dcroat + emacron + ebreve + edotaccent + eogonek + ecaron + gcircumflex + gbreve + gdotaccent + gcommaaccent + hcircumflex + hbar + itilde + imacron + iogonek + dotlessi + jcircumflex + kcommaaccent + kgreenlandic + lacute + lcommaaccent + lcaron + ldot + lslash + nacute + ncommaaccent + ncaron + napostrophe + omacron + obreve + ohungarumlaut + oe + racute + rcommaaccent + rcaron + sacute + scircumflex + scedilla + scaron + tcedilla + tcaron + utilde + umacron + ubreve + uring + uhungarumlaut + uogonek + wcircumflex + ycircumflex + zacute + zdotaccent + zcaron + longs + florin + ohorn + uhorn + acaron + icaron + ocaron + ucaron + udieresismacron + udieresisacute + udieresiscaron + udieresisgrave + gcaron + ngrave + scommaaccent + tcommaaccent + dotlessj + alphalatin + schwa + gscript + iotadieresistonos + alphatonos + epsilontonos + etatonos + iotatonos + upsilondieresistonos + alpha + beta + gamma + delta + epsilon + zeta + eta + theta + iota + kappa + lambda + mu + nu + xi + omicron + pi + rho + sigma.end + sigma + tau + upsilon + phi + chi + psi + omega + iotadieresis + upsilondieresis + omicrontonos + upsilontonos + omegatonos + kai + koppa + stigma + digamma + sampi + acyr + be + ve + ghe + de + ie + zhe + ze + icyr + ishort + ka + el + em + en + ocyr + pe + er + es + te + ucyr + ef + ha + tse + che + sha + shcha + hard + yeru + soft + ecyr + yu + ya + iegrave + io + dje + gje + ieukran + dze + iukran + yi + je + lje + nje + tshe + kje + igravecyr + ushort + dzhe + yat + fita + izhitsa + gheup + ghestroke + zhedescender + zedescender + kadescender + kabashkir + endescender + esdescender + ustraight + ustraightstroke + hadescender + chedescender + shha + zhebreve + palochka + abrevecyr + aie + iebreve + schwacyr + imacroncyr + odieresiscyr + obarcyr + umacroncyr + uacutedblcyr + ddotbelow + dlinebelow + gmacron + hdotbelow + hbrevebelow + ldotbelow + ldotbelowmacron + llinebelow + macute + mdotbelow + ndotaccent + ndotbelow + nlinebelow + rdotbelow + rdotbelowmacron + rlinebelow + sdotaccent + sdotbelow + tdotbelow + tlinebelow + wgrave + wacute + wdieresis + ydotaccent + zdotbelow + tdieresis + adotbelow + ahoi + acircumflexacute + acircumflexgrave + acircumflexhoi + acircumflextilde + acircumflexdotbelow + abreveacute + abrevegrave + abrevehoi + abrevetilde + abrevedotbelow + edotbelow + ehoi + etilde + ecircumflexacute + ecircumflexgrave + ecircumflexhoi + ecircumflextilde + ecircumflexdotbelow + ihoi + idotbelow + odotbelow + ohoi + ocircumflexacute + ocircumflexgrave + ocircumflexhoi + ocircumflextilde + ocircumflexdotbelow + ohornacute + ohorngrave + ohornhoi + ohorntilde + ohorndotbelow + udotbelow + uhoi + uhornacute + uhorngrave + uhornhoi + uhorntilde + uhorndotbelow + ygrave + ydotbelow + yhoi + ytilde + litre + f_f + f_i + f_l + f_f_i + f_f_l + be.srb + gtilde + i.trk + + lc.sc + + germandbls.sc + tdieresis.sc + f_i.sc + f_l.sc + + math + + plus + less + equal + greater + bar + asciitilde + logicalnot + plusminus + multiply + divide + minus + bulletoperator + approxequal + notequal + lessequal + greaterequal + + punc + + underscore + hyphen + figuredash + endash + emdash + parenleft + bracketleft + braceleft + quotesinglbase + quotedblbase + parenright + bracketright + braceright + guillemotleft + quoteleft + quotedblleft + guilsinglleft + guillemotright + quoteright + quotedblright + guilsinglright + exclam + quotedbl + numbersign + ampersand + quotesingle + asterisk + comma + period + slash + colon + semicolon + question + at + backslash + exclamdown + periodcentered + questiondown + dagger + daggerdbl + bullet + ellipsis + copyright + registered + trademark + servicemark + soundcopyright + horizontalbar + + punc.sc + + hyphen.sc + endash.sc + emdash.sc + parenleft.sc + bracketleft.sc + braceleft.sc + parenright.sc + bracketright.sc + braceright.sc + quoteleft.sc + quotedblleft.sc + quoteright.sc + quotedblright.sc + exclam.sc + quotedbl.sc + ampersand.sc + quotesingle.sc + question.sc + exclamdown.sc + questiondown.sc + + subs + + zero.subs + one.subs + two.subs + three.subs + four.subs + five.subs + six.subs + seven.subs + eight.subs + nine.subs + parenleft.subs + parenright.subs + comma.subs + period.subs + + sups + + a.sups + b.sups + c.sups + d.sups + e.sups + egrave.sups + eacute.sups + f.sups + g.sups + h.sups + i.sups + j.sups + k.sups + l.sups + m.sups + n.sups + o.sups + p.sups + q.sups + r.sups + s.sups + t.sups + u.sups + v.sups + w.sups + x.sups + y.sups + z.sups + zero.sups + one.sups + two.sups + three.sups + four.sups + five.sups + six.sups + seven.sups + eight.sups + nine.sups + hyphen.sups + endash.sups + emdash.sups + parenleft.sups + parenright.sups + comma.sups + period.sups + colon.sups + + uc + + A + B + C + D + E + F + G + H + I + J + K + L + M + N + O + P + Q + R + S + T + U + V + W + X + Y + Z + Agrave + Aacute + Acircumflex + Atilde + Adieresis + Aring + AE + Ccedilla + Egrave + Eacute + Ecircumflex + Edieresis + Igrave + Iacute + Icircumflex + Idieresis + Eth + Ntilde + Ograve + Oacute + Ocircumflex + Otilde + Odieresis + Oslash + Ugrave + Uacute + Ucircumflex + Udieresis + Yacute + Thorn + Amacron + Abreve + Aogonek + Cacute + Ccircumflex + Cdotaccent + Ccaron + Dcaron + Dcroat + Emacron + Ebreve + Edotaccent + Eogonek + Ecaron + Gcircumflex + Gbreve + Gdotaccent + Gcommaaccent + Hcircumflex + Hbar + Itilde + Imacron + Iogonek + Idotaccent + Jcircumflex + Kcommaaccent + Lacute + Lcommaaccent + Lcaron + Ldot + Lslash + Nacute + Ncommaaccent + Ncaron + Omacron + Obreve + Ohungarumlaut + OE + Racute + Rcommaaccent + Rcaron + Sacute + Scircumflex + Scedilla + Scaron + Tcedilla + Tcaron + Utilde + Umacron + Ubreve + Uring + Uhungarumlaut + Uogonek + Wcircumflex + Ycircumflex + Ydieresis + Zacute + Zdotaccent + Zcaron + Schwa + Ohorn + Uhorn + Acaron + Icaron + Ocaron + Ucaron + Udieresismacron + Udieresisacute + Udieresiscaron + Udieresisgrave + Gcaron + Ngrave + Scommaaccent + Tcommaaccent + Alphatonos + Epsilontonos + Etatonos + Iotatonos + Omicrontonos + Upsilontonos + Omegatonos + Alpha + Beta + Gamma + Delta + Epsilon + Zeta + Eta + Theta + Iota + Kappa + Lambda + Mu + Nu + Xi + Omicron + Pi + Rho + Sigma + Tau + Upsilon + Phi + Chi + Psi + Omega + Iotadieresis + Upsilondieresis + Iegrave + Io + Dje + Gje + Ieukran + Dze + Iukran + Yi + Je + Lje + Nje + Tshe + Kje + Igravecyr + Ushort + Dzhe + Acyr + Be + Ve + Ghe + De + Ie + Zhe + Ze + Icyr + Ishort + Ka + El + Em + En + Ocyr + Pe + Er + Es + Te + Ucyr + Ef + Ha + Tse + Che + Sha + Shcha + Hard + Yeru + Soft + Ecyr + Yu + Ya + Yat + Fita + Izhitsa + Gheup + Ghestroke + Zhedescender + Zedescender + Kadescender + Kabashkir + Endescender + Esdescender + Ustraight + Ustraightstroke + Hadescender + Chedescender + Shha + Palochka + Zhebreve + Abrevecyr + Aie + Iebreve + Schwacyr + Imacroncyr + Odieresiscyr + Obarcyr + Umacroncyr + Uacutedblcyr + Ddotbelow + Dlinebelow + Gmacron + Hdotbelow + Hbrevebelow + Ldotbelow + Ldotbelowmacron + Llinebelow + Macute + Mdotbelow + Ndotaccent + Ndotbelow + Nlinebelow + Rdotbelow + Rdotbelowmacron + Rlinebelow + Sdotaccent + Sdotbelow + Tdotbelow + Tlinebelow + Wgrave + Wacute + Wdieresis + Ydotaccent + Zdotbelow + Germandbls + Adotbelow + Ahoi + Acircumflexacute + Acircumflexgrave + Acircumflexhoi + Acircumflextilde + Acircumflexdotbelow + Abreveacute + Abrevegrave + Abrevehoi + Abrevetilde + Abrevedotbelow + Edotbelow + Ehoi + Etilde + Ecircumflexacute + Ecircumflexgrave + Ecircumflexhoi + Ecircumflextilde + Ecircumflexdotbelow + Ihoi + Idotbelow + Odotbelow + Ohoi + Ocircumflexacute + Ocircumflexgrave + Ocircumflexhoi + Ocircumflextilde + Ocircumflexdotbelow + Ohornacute + Ohorngrave + Ohornhoi + Ohorntilde + Ohorndotbelow + Udotbelow + Uhoi + Uhornacute + Uhorngrave + Uhornhoi + Uhorntilde + Uhorndotbelow + Ygrave + Ydotbelow + Yhoi + Ytilde + Gtilde + + uc.sc + + A.sc + B.sc + C.sc + D.sc + E.sc + F.sc + G.sc + H.sc + I.sc + J.sc + K.sc + L.sc + M.sc + N.sc + O.sc + P.sc + Q.sc + R.sc + S.sc + T.sc + U.sc + V.sc + W.sc + X.sc + Y.sc + Z.sc + Agrave.sc + Aacute.sc + Acircumflex.sc + Atilde.sc + Adieresis.sc + Aring.sc + AE.sc + Ccedilla.sc + Egrave.sc + Eacute.sc + Ecircumflex.sc + Edieresis.sc + Igrave.sc + Iacute.sc + Icircumflex.sc + Idieresis.sc + Eth.sc + Ntilde.sc + Ograve.sc + Oacute.sc + Ocircumflex.sc + Otilde.sc + Odieresis.sc + Oslash.sc + Ugrave.sc + Uacute.sc + Ucircumflex.sc + Udieresis.sc + Yacute.sc + Thorn.sc + Amacron.sc + Abreve.sc + Aogonek.sc + Cacute.sc + Ccircumflex.sc + Cdotaccent.sc + Ccaron.sc + Dcaron.sc + Dcroat.sc + Emacron.sc + Ebreve.sc + Edotaccent.sc + Eogonek.sc + Ecaron.sc + Gcircumflex.sc + Gbreve.sc + Gdotaccent.sc + Gcommaaccent.sc + Hcircumflex.sc + Hbar.sc + Itilde.sc + Imacron.sc + Iogonek.sc + Idotaccent.sc + Jcircumflex.sc + Kcommaaccent.sc + Lacute.sc + Lcommaaccent.sc + Lcaron.sc + Ldot.sc + Lslash.sc + Nacute.sc + Ncommaaccent.sc + Ncaron.sc + Omacron.sc + Obreve.sc + Ohungarumlaut.sc + OE.sc + Racute.sc + Rcommaaccent.sc + Rcaron.sc + Sacute.sc + Scircumflex.sc + Scedilla.sc + Scaron.sc + Tcedilla.sc + Tcaron.sc + Utilde.sc + Umacron.sc + Ubreve.sc + Uring.sc + Uhungarumlaut.sc + Uogonek.sc + Wcircumflex.sc + Ycircumflex.sc + Ydieresis.sc + Zacute.sc + Zdotaccent.sc + Zcaron.sc + Schwa.sc + Ohorn.sc + Uhorn.sc + Acaron.sc + Icaron.sc + Ocaron.sc + Ucaron.sc + Udieresismacron.sc + Udieresisacute.sc + Udieresiscaron.sc + Udieresisgrave.sc + Gcaron.sc + Ngrave.sc + Scommaaccent.sc + Tcommaaccent.sc + Alpha.sc + Beta.sc + Gamma.sc + Delta.sc + Epsilon.sc + Zeta.sc + Eta.sc + Theta.sc + Iota.sc + Kappa.sc + Lambda.sc + Mu.sc + Nu.sc + Xi.sc + Omicron.sc + Pi.sc + Rho.sc + Sigma.sc + Tau.sc + Upsilon.sc + Phi.sc + Chi.sc + Psi.sc + Omega.sc + Iotadieresis.sc + Upsilondieresis.sc + Iegrave.sc + Io.sc + Dje.sc + Gje.sc + Ieukran.sc + Dze.sc + Iukran.sc + Yi.sc + Je.sc + Lje.sc + Nje.sc + Tshe.sc + Kje.sc + Igravecyr.sc + Ushort.sc + Dzhe.sc + Acyr.sc + Be.sc + Ve.sc + Ghe.sc + De.sc + Ie.sc + Zhe.sc + Ze.sc + Icyr.sc + Ishort.sc + Ka.sc + El.sc + Em.sc + En.sc + Ocyr.sc + Pe.sc + Er.sc + Es.sc + Te.sc + Ucyr.sc + Ef.sc + Ha.sc + Tse.sc + Che.sc + Sha.sc + Shcha.sc + Hard.sc + Yeru.sc + Soft.sc + Ecyr.sc + Yu.sc + Ya.sc + Yat.sc + Fita.sc + Izhitsa.sc + Gheup.sc + Ghestroke.sc + Zhedescender.sc + Zedescender.sc + Kadescender.sc + Kabashkir.sc + Endescender.sc + Esdescender.sc + Ustraight.sc + Ustraightstroke.sc + Hadescender.sc + Chedescender.sc + Shha.sc + Palochka.sc + Zhebreve.sc + Abrevecyr.sc + Aie.sc + Iebreve.sc + Schwacyr.sc + Imacroncyr.sc + Odieresiscyr.sc + Obarcyr.sc + Umacroncyr.sc + Uacutedblcyr.sc + Ddotbelow.sc + Dlinebelow.sc + Gmacron.sc + Hdotbelow.sc + Hbrevebelow.sc + Ldotbelow.sc + Ldotbelowmacron.sc + Llinebelow.sc + Macute.sc + Mdotbelow.sc + Ndotaccent.sc + Ndotbelow.sc + Nlinebelow.sc + Rdotbelow.sc + Rdotbelowmacron.sc + Rlinebelow.sc + Sdotaccent.sc + Sdotbelow.sc + Tdotbelow.sc + Tlinebelow.sc + Wgrave.sc + Wacute.sc + Wdieresis.sc + Ydotaccent.sc + Zdotbelow.sc + Germandbls.sc + Adotbelow.sc + Ahoi.sc + Acircumflexacute.sc + Acircumflexgrave.sc + Acircumflexhoi.sc + Acircumflextilde.sc + Acircumflexdotbelow.sc + Abreveacute.sc + Abrevegrave.sc + Abrevehoi.sc + Abrevetilde.sc + Abrevedotbelow.sc + Edotbelow.sc + Ehoi.sc + Etilde.sc + Ecircumflexacute.sc + Ecircumflexgrave.sc + Ecircumflexhoi.sc + Ecircumflextilde.sc + Ecircumflexdotbelow.sc + Ihoi.sc + Idotbelow.sc + Odotbelow.sc + Ohoi.sc + Ocircumflexacute.sc + Ocircumflexgrave.sc + Ocircumflexhoi.sc + Ocircumflextilde.sc + Ocircumflexdotbelow.sc + Ohornacute.sc + Ohorngrave.sc + Ohornhoi.sc + Ohorntilde.sc + Ohorndotbelow.sc + Udotbelow.sc + Uhoi.sc + Uhornacute.sc + Uhorngrave.sc + Uhornhoi.sc + Uhorntilde.sc + Uhorndotbelow.sc + Ygrave.sc + Ydotbelow.sc + Yhoi.sc + Ytilde.sc + Gtilde.sc + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/layercontents.plist b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/layercontents.plist new file mode 100644 index 000000000..b07680883 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/layercontents.plist @@ -0,0 +1,14 @@ + + + + + + public.default + glyphs + + + com.adobe.type.processedglyphs + glyphs.com.adobe.type.processedglyphs + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/lib.plist b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/lib.plist new file mode 100644 index 000000000..638f48730 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/lib.plist @@ -0,0 +1,2070 @@ + + + + + public.glyphOrder + + Agrave + Aacute + Acircumflex + Atilde + Adieresis + Amacron + Abreve + Abreveacute + Abrevedotbelow + Abrevegrave + Abrevehoi + Abrevetilde + Acaron + Acircumflexacute + Acircumflexdotbelow + Acircumflexgrave + Acircumflexhoi + Acircumflextilde + Adotbelow + Ahoi + Aring + Aogonek + AE + Ccedilla + Cacute + Ccaron + Ccircumflex + Cdotaccent + Dcaron + Dcroat + Ddotbelow + Dlinebelow + Egrave + Eacute + Ecircumflex + Ecaron + Edieresis + Emacron + Edotaccent + Eogonek + Ebreve + Ecircumflexacute + Ecircumflexdotbelow + Ecircumflexgrave + Ecircumflexhoi + Ecircumflextilde + Edotbelow + Ehoi + Etilde + Gbreve + Gdotaccent + Gcommaaccent + Gcaron + Gcircumflex + Gmacron + Hbar + Hbrevebelow + Hcircumflex + Hdotbelow + Igrave + Iacute + Icircumflex + Idieresis + Imacron + Idotaccent + Iogonek + Icaron + Idotbelow + Ihoi + Itilde + Jcircumflex + Kcommaaccent + Lacute + Lcaron + Lcommaaccent + Ldot + Ldotbelow + Ldotbelowmacron + Llinebelow + Lslash + Macute + Mdotbelow + Nacute + Ncaron + Ngrave + Ntilde + Ncommaaccent + Ndotaccent + Ndotbelow + Nlinebelow + Ograve + Oacute + Obreve + Ocircumflex + Otilde + Odieresis + Omacron + Ohungarumlaut + Ocaron + Ocircumflexacute + Ocircumflexdotbelow + Ocircumflexgrave + Ocircumflexhoi + Ocircumflextilde + Odotbelow + Ohoi + Ohorn + Ohornacute + Ohorndotbelow + Ohorngrave + Ohornhoi + Ohorntilde + Oslash + OE + Racute + Rcaron + Rcommaaccent + Rdotbelow + Rdotbelowmacron + Rlinebelow + Sacute + Scaron + Scedilla + Scommaaccent + Scircumflex + Sdotaccent + Sdotbelow + Germandbls + Tcaron + Tcedilla + Tcommaaccent + Tdotbelow + Tlinebelow + Ugrave + Uacute + Ucircumflex + Udieresis + Umacron + Uring + Uhungarumlaut + Uogonek + Ubreve + Ucaron + Udieresisacute + Udieresiscaron + Udieresisgrave + Udieresismacron + Udotbelow + Uhoi + Uhorn + Uhornacute + Uhorndotbelow + Uhorngrave + Uhornhoi + Uhorntilde + Utilde + Wacute + Wcircumflex + Wdieresis + Wgrave + Yacute + Ydieresis + Ycircumflex + Ydotaccent + Ydotbelow + Ygrave + Yhoi + Ytilde + Zacute + Zcaron + Zdotaccent + Zdotbelow + Eth + Thorn + Schwa + agrave + aacute + acircumflex + atilde + adieresis + amacron + abreve + abreveacute + abrevedotbelow + abrevegrave + abrevehoi + abrevetilde + acaron + acircumflexacute + acircumflexdotbelow + acircumflexgrave + acircumflexhoi + acircumflextilde + adotbelow + ahoi + aring + aogonek + ae + ccedilla + cacute + ccaron + ccircumflex + cdotaccent + dcaron + dcroat + ddotbelow + dlinebelow + egrave + eacute + ecircumflex + ecaron + edieresis + emacron + edotaccent + eogonek + ebreve + ecircumflexacute + ecircumflexdotbelow + ecircumflexgrave + ecircumflexhoi + ecircumflextilde + edotbelow + ehoi + etilde + gbreve + gdotaccent + gcommaaccent + gcaron + gcircumflex + gmacron + hbar + hbrevebelow + hcircumflex + hdotbelow + igrave + iacute + icircumflex + idieresis + imacron + iogonek + icaron + idotbelow + ihoi + itilde + dotlessi + dotlessj + jcircumflex + kcommaaccent + kgreenlandic + lacute + lcaron + lcommaaccent + ldot + ldotbelow + ldotbelowmacron + llinebelow + lslash + macute + mdotbelow + nacute + ncaron + ngrave + ntilde + ncommaaccent + ndotaccent + napostrophe + ndotbelow + nlinebelow + ograve + oacute + obreve + ocircumflex + otilde + odieresis + omacron + ohungarumlaut + ocaron + ocircumflexacute + ocircumflexdotbelow + ocircumflexgrave + ocircumflexhoi + ocircumflextilde + odotbelow + ohoi + ohorn + ohornacute + ohorndotbelow + ohorngrave + ohornhoi + ohorntilde + oslash + oe + racute + rcommaaccent + rcaron + rdotbelow + rdotbelowmacron + rlinebelow + sacute + scaron + scedilla + scommaaccent + scircumflex + sdotaccent + sdotbelow + longs + germandbls + tcaron + tcedilla + tcommaaccent + tdieresis + tdotbelow + tlinebelow + ugrave + uacute + ucircumflex + udieresis + umacron + uring + uhungarumlaut + uogonek + ubreve + ucaron + udieresisacute + udieresiscaron + udieresisgrave + udieresismacron + udotbelow + uhoi + uhorn + uhornacute + uhorndotbelow + uhorngrave + uhornhoi + uhorntilde + utilde + wacute + wcircumflex + wdieresis + wgrave + yacute + ydieresis + ycircumflex + ydotaccent + ydotbelow + ygrave + yhoi + ytilde + zacute + zcaron + zdotaccent + zdotbelow + eth + thorn + schwa + alphalatin + gscript + f_i + f_l + f_f + f_f_i + f_f_l + ellipsis + exclamdown + questiondown + quoteleft + quoteright + quotedblleft + quotedblright + quotesinglbase + quotedblbase + guilsinglleft + guilsinglright + guillemotleft + guillemotright + endash + emdash + figuredash + horizontalbar + periodcentered + bullet + brokenbar + dagger + daggerdbl + section + paragraph + copyright + soundcopyright + registered + trademark + servicemark + zero.sups + one.sups + two.sups + three.sups + four.sups + five.sups + six.sups + seven.sups + eight.sups + nine.sups + parenleft.sups + parenright.sups + zero.subs + one.subs + two.subs + three.subs + four.subs + five.subs + six.subs + seven.subs + eight.subs + nine.subs + parenleft.subs + parenright.subs + ordfeminine + ordmasculine + a.sups + b.sups + c.sups + d.sups + e.sups + f.sups + g.sups + h.sups + i.sups + j.sups + k.sups + l.sups + m.sups + n.sups + o.sups + p.sups + r.sups + s.sups + t.sups + u.sups + v.sups + w.sups + x.sups + y.sups + z.sups + degree + currency + cent + sterling + yen + florin + colonmonetary + lira + naira + peseta + won + dong + Euro + tugrik + peso + guarani + hryvnia + cedi + rupeeindian + liraturkish + tenge + ruble + bitcoin + fraction + divisionslash + figurespace + perthousand + onequarter + onehalf + threequarters + onethird + twothirds + oneeighth + threeeighths + fiveeighths + seveneighths + minus + multiply + divide + bulletoperator + lessequal + greaterequal + plusminus + notequal + approxequal + logicalnot + infinity + partialdiff + integral + radical + summation + product + litre + estimated + arrowleft + arrowupleft + arrowup + arrowupright + arrowright + arrowdownright + arrowdown + arrowdownleft + squareblack + diamondblack + fisheye + squareshadow + triangleblackup + trianglewhiteup + triangleblackright + trianglewhiteright + triangleblackdown + trianglewhitedown + triangleblackleft + trianglewhiteleft + checkbox + checkedbox + check + eighthnote + lozenge + prime + dblprime + ringhalfleftmod + ringhalfrightmod + verticallinemod + macronmod + verticallinelowmod + acute + circumflex + caron + tilde + dieresis + breve + ring + hungarumlaut + dotaccent + cedilla + ogonek + gravecmb + acutecmb + circumflexcmb + tildecmb + macroncmb + brevecmb + dotaccentcmb + dieresiscmb + ringcmb + hungarumlautcmb + caroncmb + commabelowcmb + cedillacmb + ogonekcmb + verticallinebelowcmb + brevebelowcmb + dieresisbelowcmb + dotbelowcmb + hoicmb + horncmb + macronbelowcmb + Alpha + Beta + Gamma + Delta + Epsilon + Zeta + Eta + Theta + Iota + Kappa + Lambda + Mu + Nu + Xi + Omicron + Pi + Rho + Sigma + Tau + Upsilon + Phi + Chi + Psi + Omega + Alphatonos + Epsilontonos + Etatonos + Iotatonos + Iotadieresis + Omicrontonos + Upsilontonos + Upsilondieresis + Omegatonos + alpha + beta + gamma + delta + epsilon + zeta + eta + theta + iota + kappa + lambda + mu + nu + xi + omicron + pi + rho + sigma + tau + upsilon + phi + chi + psi + omega + sigma.end + alphatonos + epsilontonos + etatonos + iotatonos + iotadieresis + omicrontonos + upsilontonos + upsilondieresis + omegatonos + iotadieresistonos + upsilondieresistonos + kai + koppa + stigma + digamma + sampi + questiongreek + anoteleia + numeralsign + lownumeralsign + tonos + dieresistonos + Acyr + Be + Ve + Ghe + De + Ie + Zhe + Ze + Icyr + Ishort + Ka + El + Em + En + Ocyr + Pe + Er + Es + Te + Ucyr + Ef + Ha + Tse + Che + Sha + Shcha + Hard + Yeru + Soft + Ecyr + Yu + Ya + Iegrave + Io + Dje + Gje + Ieukran + Dze + Iukran + Yi + Je + Lje + Nje + Tshe + Kje + Igravecyr + Ushort + Dzhe + Yat + Fita + Izhitsa + Gheup + Ghestroke + Zhedescender + Zedescender + Kadescender + Kabashkir + Endescender + Esdescender + Ustraight + Ustraightstroke + Hadescender + Chedescender + Shha + Palochka + Zhebreve + Abrevecyr + Aie + Iebreve + Schwacyr + Imacroncyr + Odieresiscyr + Obarcyr + Umacroncyr + Uacutedblcyr + acyr + be + ve + ghe + de + ie + zhe + ze + icyr + ishort + ka + el + em + en + ocyr + pe + er + es + te + ucyr + ef + ha + tse + che + sha + shcha + hard + yeru + soft + ecyr + yu + ya + iegrave + io + dje + gje + ieukran + dze + iukran + yi + je + lje + nje + tshe + kje + igravecyr + ushort + dzhe + yat + fita + izhitsa + gheup + ghestroke + zhedescender + zedescender + kadescender + kabashkir + endescender + esdescender + ustraight + ustraightstroke + hadescender + chedescender + shha + zhebreve + palochka + abrevecyr + aie + iebreve + schwacyr + imacroncyr + odieresiscyr + obarcyr + umacroncyr + uacutedblcyr + numero + twoemdash + threeemdash + copyleft + commercemark + deposeemark + twodotenleader + exclamdbl + questiondbl + questionexclam + exclamquestion + IJ + ij + Eng + eng + Tbar + tbar + colontriangularmod + triangularbullet + overline + similar + dngb:cross + + public.postscriptNames + + Abreveacute + uni1EAE + Abreveacute.sc + uni1EAE.sc + Abrevecyr + uni04D0 + Abrevecyr.sc + uni04D0.sc + Abrevedotbelow + uni1EB6 + Abrevedotbelow.sc + uni1EB6.sc + Abrevegrave + uni1EB0 + Abrevegrave.sc + uni1EB0.sc + Abrevehoi + uni1EB2 + Abrevehoi.sc + uni1EB2.sc + Abrevetilde + uni1EB4 + Abrevetilde.sc + uni1EB4.sc + Acaron + uni01CD + Acaron.sc + uni01CD.sc + Acircumflexacute + uni1EA4 + Acircumflexacute.sc + uni1EA4.sc + Acircumflexdotbelow + uni1EAC + Acircumflexdotbelow.sc + uni1EAC.sc + Acircumflexgrave + uni1EA6 + Acircumflexgrave.sc + uni1EA6.sc + Acircumflexhoi + uni1EA8 + Acircumflexhoi.sc + uni1EA8.sc + Acircumflextilde + uni1EAA + Acircumflextilde.sc + uni1EAA.sc + Acyr + uni0410 + Acyr.sc + uni0410.sc + Adotbelow + uni1EA0 + Adotbelow.sc + uni1EA0.sc + Ahoi + uni1EA2 + Ahoi.sc + uni1EA2.sc + Aie + uni04D4 + Aie.sc + uni04D4.sc + Be + uni0411 + Be.sc + uni0411.sc + Che + uni0427 + Che.sc + uni0427.sc + Chedescender + uni04B6 + Chedescender.sc + uni04B6.sc + Ddotbelow + uni1E0C + Ddotbelow.sc + uni1E0C.sc + De + uni0414 + De.sc + uni0414.sc + Delta + uni0394 + Delta.math + uni2206 + Dje + uni0402 + Dje.sc + uni0402.sc + Dlinebelow + uni1E0E + Dlinebelow.sc + uni1E0E.sc + Dze + uni0405 + Dze.sc + uni0405.sc + Dzhe + uni040F + Dzhe.sc + uni040F.sc + Ecircumflexacute + uni1EBE + Ecircumflexacute.sc + uni1EBE.sc + Ecircumflexdotbelow + uni1EC6 + Ecircumflexdotbelow.sc + uni1EC6.sc + Ecircumflexgrave + uni1EC0 + Ecircumflexgrave.sc + uni1EC0.sc + Ecircumflexhoi + uni1EC2 + Ecircumflexhoi.sc + uni1EC2.sc + Ecircumflextilde + uni1EC4 + Ecircumflextilde.sc + uni1EC4.sc + Ecyr + uni042D + Ecyr.sc + uni042D.sc + Edotbelow + uni1EB8 + Edotbelow.sc + uni1EB8.sc + Ef + uni0424 + Ef.sc + uni0424.sc + Ehoi + uni1EBA + Ehoi.sc + uni1EBA.sc + El + uni041B + El.sc + uni041B.sc + Em + uni041C + Em.sc + uni041C.sc + En + uni041D + En.sc + uni041D.sc + Endescender + uni04A2 + Endescender.sc + uni04A2.sc + Er + uni0420 + Er.sc + uni0420.sc + Es + uni0421 + Es.sc + uni0421.sc + Esdescender + uni04AA + Esdescender.sc + uni04AA.sc + Etilde + uni1EBC + Etilde.sc + uni1EBC.sc + Fita + uni0472 + Fita.sc + uni0472.sc + Gcommaaccent + uni0122 + Gcommaaccent.sc + uni0122.sc + Germandbls + uni1E9E + Germandbls.sc + uni1E9E.sc + Ghe + uni0413 + Ghe.sc + uni0413.sc + Ghestroke + uni0492 + Ghestroke.sc + uni0492.sc + Gheup + uni0490 + Gheup.sc + uni0490.sc + Gje + uni0403 + Gje.sc + uni0403.sc + Gmacron + uni1E20 + Gmacron.sc + uni1E20.sc + Gtilde + uni00470303 + Gtilde.sc + uni00470303.sc + Ha + uni0425 + Ha.sc + uni0425.sc + Hadescender + uni04B2 + Hadescender.sc + uni04B2.sc + Hard + uni042A + Hard.sc + uni042A.sc + Hbrevebelow + uni1E2A + Hbrevebelow.sc + uni1E2A.sc + Hdotbelow + uni1E24 + Hdotbelow.sc + uni1E24.sc + Icaron + uni01CF + Icaron.sc + uni01CF.sc + Icyr + uni0418 + Icyr.sc + uni0418.sc + Idotbelow + uni1ECA + Idotbelow.sc + uni1ECA.sc + Ie + uni0415 + Ie.sc + uni0415.sc + Iebreve + uni04D6 + Iebreve.sc + uni04D6.sc + Iegrave + uni0400 + Iegrave.sc + uni0400.sc + Ieukran + uni0404 + Ieukran.sc + uni0404.sc + Igravecyr + uni040D + Igravecyr.sc + uni040D.sc + Ihoi + uni1EC8 + Ihoi.sc + uni1EC8.sc + Imacroncyr + uni04E2 + Imacroncyr.sc + uni04E2.sc + Io + uni0401 + Io.sc + uni0401.sc + Ishort + uni0419 + Ishort.sc + uni0419.sc + Iukran + uni0406 + Iukran.sc + uni0406.sc + Izhitsa + uni0474 + Izhitsa.sc + uni0474.sc + Je + uni0408 + Je.sc + uni0408.sc + Ka + uni041A + Ka.sc + uni041A.sc + Kabashkir + uni04A0 + Kabashkir.sc + uni04A0.sc + Kadescender + uni049A + Kadescender.sc + uni049A.sc + Kcommaaccent + uni0136 + Kcommaaccent.sc + uni0136.sc + Kje + uni040C + Kje.sc + uni040C.sc + Lcommaaccent + uni013B + Lcommaaccent.sc + uni013B.sc + Ldotbelow + uni1E36 + Ldotbelow.sc + uni1E36.sc + Ldotbelowmacron + uni1E38 + Ldotbelowmacron.sc + uni1E38.sc + Lje + uni0409 + Lje.sc + uni0409.sc + Llinebelow + uni1E3A + Llinebelow.sc + uni1E3A.sc + Macute + uni1E3E + Macute.sc + uni1E3E.sc + Mdotbelow + uni1E42 + Mdotbelow.sc + uni1E42.sc + Ncommaaccent + uni0145 + Ncommaaccent.sc + uni0145.sc + Ndotaccent + uni1E44 + Ndotaccent.sc + uni1E44.sc + Ndotbelow + uni1E46 + Ndotbelow.sc + uni1E46.sc + Ngrave + uni01F8 + Ngrave.sc + uni01F8.sc + Nje + uni040A + Nje.sc + uni040A.sc + Nlinebelow + uni1E48 + Nlinebelow.sc + uni1E48.sc + Obarcyr + uni04E8 + Obarcyr.sc + uni04E8.sc + Obreve + uni014E + Obreve.sc + uni014E.sc + Ocaron + uni01D1 + Ocaron.sc + uni01D1.sc + Ocircumflexacute + uni1ED0 + Ocircumflexacute.sc + uni1ED0.sc + Ocircumflexdotbelow + uni1ED8 + Ocircumflexdotbelow.sc + uni1ED8.sc + Ocircumflexgrave + uni1ED2 + Ocircumflexgrave.sc + uni1ED2.sc + Ocircumflexhoi + uni1ED4 + Ocircumflexhoi.sc + uni1ED4.sc + Ocircumflextilde + uni1ED6 + Ocircumflextilde.sc + uni1ED6.sc + Ocyr + uni041E + Ocyr.sc + uni041E.sc + Odieresiscyr + uni04E6 + Odieresiscyr.sc + uni04E6.sc + Odotbelow + uni1ECC + Odotbelow.sc + uni1ECC.sc + Ohoi + uni1ECE + Ohoi.sc + uni1ECE.sc + Ohornacute + uni1EDA + Ohornacute.sc + uni1EDA.sc + Ohorndotbelow + uni1EE2 + Ohorndotbelow.sc + uni1EE2.sc + Ohorngrave + uni1EDC + Ohorngrave.sc + uni1EDC.sc + Ohornhoi + uni1EDE + Ohornhoi.sc + uni1EDE.sc + Ohorntilde + uni1EE0 + Ohorntilde.sc + uni1EE0.sc + Omega + uni03A9 + Omega.math + uni2126 + Palochka + uni04C0 + Palochka.sc + uni04C0.sc + Pe + uni041F + Pe.sc + uni041F.sc + Rcommaaccent + uni0156 + Rcommaaccent.sc + uni0156.sc + Rdotbelow + uni1E5A + Rdotbelow.sc + uni1E5A.sc + Rdotbelowmacron + uni1E5C + Rdotbelowmacron.sc + uni1E5C.sc + Rlinebelow + uni1E5E + Rlinebelow.sc + uni1E5E.sc + Scedilla + uni015E + Scedilla.sc + uni015E.sc + Schwa + uni018F + Schwa.sc + uni018F.sc + Schwacyr + uni04D8 + Schwacyr.sc + uni04D8.sc + Scommaaccent + uni0218 + Scommaaccent.sc + uni0218.sc + Sdotaccent + uni1E60 + Sdotaccent.sc + uni1E60.sc + Sdotbelow + uni1E62 + Sdotbelow.sc + uni1E62.sc + Sha + uni0428 + Sha.sc + uni0428.sc + Shcha + uni0429 + Shcha.sc + uni0429.sc + Shha + uni04BA + Shha.sc + uni04BA.sc + Soft + uni042C + Soft.sc + uni042C.sc + Tcedilla + uni0162 + Tcedilla.sc + uni0162.sc + Tcommaaccent + uni021A + Tcommaaccent.sc + uni021A.sc + Tdotbelow + uni1E6C + Tdotbelow.sc + uni1E6C.sc + Te + uni0422 + Te.sc + uni0422.sc + Tlinebelow + uni1E6E + Tlinebelow.sc + uni1E6E.sc + Tse + uni0426 + Tse.sc + uni0426.sc + Tshe + uni040B + Tshe.sc + uni040B.sc + Uacutedblcyr + uni04F2 + Uacutedblcyr.sc + uni04F2.sc + Ucaron + uni01D3 + Ucaron.sc + uni01D3.sc + Ucyr + uni0423 + Ucyr.sc + uni0423.sc + Udieresisacute + uni01D7 + Udieresisacute.sc + uni01D7.sc + Udieresiscaron + uni01D9 + Udieresiscaron.sc + uni01D9.sc + Udieresisgrave + uni01DB + Udieresisgrave.sc + uni01DB.sc + Udieresismacron + uni01D5 + Udieresismacron.sc + uni01D5.sc + Udotbelow + uni1EE4 + Udotbelow.sc + uni1EE4.sc + Uhoi + uni1EE6 + Uhoi.sc + uni1EE6.sc + Uhornacute + uni1EE8 + Uhornacute.sc + uni1EE8.sc + Uhorndotbelow + uni1EF0 + Uhorndotbelow.sc + uni1EF0.sc + Uhorngrave + uni1EEA + Uhorngrave.sc + uni1EEA.sc + Uhornhoi + uni1EEC + Uhornhoi.sc + uni1EEC.sc + Uhorntilde + uni1EEE + Uhorntilde.sc + uni1EEE.sc + Umacroncyr + uni04EE + Umacroncyr.sc + uni04EE.sc + Ushort + uni040E + Ushort.sc + uni040E.sc + Ustraight + uni04AE + Ustraight.sc + uni04AE.sc + Ustraightstroke + uni04B0 + Ustraightstroke.sc + uni04B0.sc + Ve + uni0412 + Ve.sc + uni0412.sc + Ya + uni042F + Ya.sc + uni042F.sc + Yat + uni0462 + Yat.sc + uni0462.sc + Ydotaccent + uni1E8E + Ydotaccent.sc + uni1E8E.sc + Ydotbelow + uni1EF4 + Ydotbelow.sc + uni1EF4.sc + Yeru + uni042B + Yeru.sc + uni042B.sc + Yhoi + uni1EF6 + Yhoi.sc + uni1EF6.sc + Yi + uni0407 + Yi.sc + uni0407.sc + Ytilde + uni1EF8 + Ytilde.sc + uni1EF8.sc + Yu + uni042E + Yu.sc + uni042E.sc + Zdotbelow + uni1E92 + Zdotbelow.sc + uni1E92.sc + Ze + uni0417 + Ze.sc + uni0417.sc + Zedescender + uni0498 + Zedescender.sc + uni0498.sc + Zhe + uni0416 + Zhe.sc + uni0416.sc + Zhebreve + uni04C1 + Zhebreve.sc + uni04C1.sc + Zhedescender + uni0496 + Zhedescender.sc + uni0496.sc + abreveacute + uni1EAF + abrevecyr + uni04D1 + abrevedotbelow + uni1EB7 + abrevegrave + uni1EB1 + abrevehoi + uni1EB3 + abrevetilde + uni1EB5 + acaron + uni01CE + acircumflexacute + uni1EA5 + acircumflexdotbelow + uni1EAD + acircumflexgrave + uni1EA7 + acircumflexhoi + uni1EA9 + acircumflextilde + uni1EAB + acutecmb + uni0301 + acutemod + uni02CA + acyr + uni0430 + adotbelow + uni1EA1 + ahoi + uni1EA3 + aie + uni04D5 + alphalatin + uni0251 + apostrophemod + uni02BC + arrowdownleft + uni2199 + arrowdownright + uni2198 + arrowleft + uni2190 + arrowright + uni2192 + arrowupleft + uni2196 + arrowupright + uni2197 + be + uni0431 + be.srb + uni0431.srb + bitcoin + uni20BF + breveacute + uni03060301 + breveacute.cap + uni03060301.cap + brevebelowcmb + uni032E + brevecmb + uni0306 + brevegrave + uni03060300 + brevegrave.cap + uni03060300.cap + brevehoi + uni03060309 + brevehoi.cap + uni03060309.cap + brevetilde + uni03060303 + brevetilde.cap + uni03060303.cap + bulletoperator + uni2219 + caroncmb + uni030C + cedi + uni20B5 + cedillacmb + uni0327 + che + uni0447 + check + uni2713 + checkbox + uni2610 + checkedbox + uni2611 + chedescender + uni04B7 + circumflexacute + uni03020301 + circumflexacute.cap + uni03020301.cap + circumflexcmb + uni0302 + circumflexgrave + uni03020300 + circumflexgrave.cap + uni03020300.cap + circumflexhoi + uni03020309 + circumflexhoi.cap + uni03020309.cap + circumflextilde + uni03020303 + circumflextilde.cap + uni03020303.cap + commabelowcmb + uni0326 + commaturnedmod + uni02BB + commercemark + u1F16A + copyleft + u1F12F + dblprime + uni2033 + ddotbelow + uni1E0D + de + uni0434 + deposeemark + u1F16B + diamondblack + uni25C6 + dieresisacute + uni03080301 + dieresisacute.cap + uni03080301.cap + dieresisbelowcmb + uni0324 + dieresiscaron + uni0308030C + dieresiscaron.cap + uni0308030C.cap + dieresiscmb + uni0308 + dieresisgrave + uni03080300 + dieresisgrave.cap + uni03080300.cap + dieresismacron + uni03080304 + dieresismacron.cap + uni03080304.cap + dieresistonoscmb + uni03080301.g + digamma + uni03DD + divisionslash + uni2215 + dje + uni0452 + dlinebelow + uni1E0F + dotaccentcmb + uni0307 + dotbelowcmb + uni0323 + dotlessj + uni0237 + dze + uni0455 + dzhe + uni045F + ecircumflexacute + uni1EBF + ecircumflexdotbelow + uni1EC7 + ecircumflexgrave + uni1EC1 + ecircumflexhoi + uni1EC3 + ecircumflextilde + uni1EC5 + ecyr + uni044D + edotbelow + uni1EB9 + ef + uni0444 + ehoi + uni1EBB + eighthnote + musicalnote + el + uni043B + em + uni043C + en + uni043D + endescender + uni04A3 + er + uni0440 + es + uni0441 + esdescender + uni04AB + etilde + uni1EBD + exclamquestion + uni2049 + figurespace + uni2007 + fisheye + uni25C9 + fita + uni0473 + florin + uni0192 + gcommaaccent + uni0123 + ghe + uni0433 + ghestroke + uni0493 + gheup + uni0491 + gje + uni0453 + gmacron + uni1E21 + gravecmb + uni0300 + gravemod + uni02CB + gscript + uni0261 + gtilde + uni00670303 + guarani + uni20B2 + ha + uni0445 + hadescender + uni04B3 + hard + uni044A + hbrevebelow + uni1E2B + hdotbelow + uni1E25 + hoicmb + uni0309 + hoicmb.cap + uni0309.cap + horizontalbar + uni2015 + horncmb + uni031B + hryvnia + uni20B4 + hungarumlautcmb + uni030B + hyphentwo + uni2010 + icaron + uni01D0 + icyr + uni0438 + idotbelow + uni1ECB + ie + uni0435 + iebreve + uni04D7 + iegrave + uni0450 + ieukran + uni0454 + igravecyr + uni045D + ihoi + uni1EC9 + imacroncyr + uni04E3 + io + uni0451 + ishort + uni0439 + iukran + uni0456 + izhitsa + uni0475 + je + uni0458 + ka + uni043A + kabashkir + uni04A1 + kadescender + uni049B + kai + uni03D7 + kcommaaccent + uni0137 + kje + uni045C + koppa + uni03D9 + lcommaaccent + uni013C + ldotbelow + uni1E37 + ldotbelowmacron + uni1E39 + liraturkish + uni20BA + litre + uni2113 + lje + uni0459 + llinebelow + uni1E3B + lownumeralsign + uni0375 + macronbelowcmb + uni0331 + macroncmb + uni0304 + macronmod + uni02C9 + macute + uni1E3F + mdotbelow + uni1E43 + mu + uni03BC + mu.math + uni00B5 + naira + uni20A6 + nbspace + uni00A0 + nbspace.frac + uni00A0.frac + ncommaaccent + uni0146 + ndotaccent + uni1E45 + ndotbelow + uni1E47 + ngrave + uni01F9 + nje + uni045A + nlinebelow + uni1E49 + numeralsign + uni0374 + numero + uni2116 + obarcyr + uni04E9 + obreve + uni014F + ocaron + uni01D2 + ocircumflexacute + uni1ED1 + ocircumflexdotbelow + uni1ED9 + ocircumflexgrave + uni1ED3 + ocircumflexhoi + uni1ED5 + ocircumflextilde + uni1ED7 + ocyr + uni043E + odieresiscyr + uni04E7 + odotbelow + uni1ECD + ogonekcmb + uni0328 + ohoi + uni1ECF + ohornacute + uni1EDB + ohorndotbelow + uni1EE3 + ohorngrave + uni1EDD + ohornhoi + uni1EDF + ohorntilde + uni1EE1 + palochka + uni04CF + pe + uni043F + peso + uni20B1 + prime + uni2032 + questiondbl + uni2047 + questionexclam + uni2048 + questiongreek + uni037E + rcommaaccent + uni0157 + rdotbelow + uni1E5B + rdotbelowmacron + uni1E5D + ringcmb + uni030A + ringhalfleftmod + uni02BF + ringhalfrightmod + uni02BE + rlinebelow + uni1E5F + ruble + uni20BD + rupeeindian + uni20B9 + sampi + uni03E1 + scedilla + uni015F + schwa + uni0259 + schwacyr + uni04D9 + scommaaccent + uni0219 + sdotaccent + uni1E61 + sdotbelow + uni1E63 + servicemark + uni2120 + sfthyphen + uni00AD + sha + uni0448 + shcha + uni0449 + shha + uni04BB + sigma.end + uni03C2 + soft + uni044C + soundcopyright + uni2117 + squareblack + uni25A0 + squareshadow + uni2752 + stigma + uni03DB + tcedilla + uni0163 + tcommaaccent + uni021B + tdieresis + uni1E97 + tdieresis.sc + uni1E97.sc + tdotbelow + uni1E6D + te + uni0442 + tenge + uni20B8 + threeemdash + uni2E3B + tildecmb + uni0303 + tlinebelow + uni1E6F + tonoscmb + uni0301.g + triangleblackdown + triagdn + triangleblackleft + uni25C0 + triangleblackright + uni25B6 + triangleblackup + triagup + trianglewhitedown + uni25BD + trianglewhiteleft + uni25C1 + trianglewhiteright + uni25B7 + trianglewhiteup + uni25B3 + tse + uni0446 + tshe + uni045B + tugrik + uni20AE + twoemdash + uni2E3A + uacutedblcyr + uni04F3 + ucaron + uni01D4 + ucyr + uni0443 + udieresisacute + uni01D8 + udieresiscaron + uni01DA + udieresisgrave + uni01DC + udieresismacron + uni01D6 + udotbelow + uni1EE5 + uhoi + uni1EE7 + uhornacute + uni1EE9 + uhorndotbelow + uni1EF1 + uhorngrave + uni1EEB + uhornhoi + uni1EED + uhorntilde + uni1EEF + umacroncyr + uni04EF + ushort + uni045E + ustraight + uni04AF + ustraightstroke + uni04B1 + ve + uni0432 + verticallinebelowcmb + uni0329 + verticallinelowmod + uni02CC + verticallinemod + uni02C8 + won + uni20A9 + ya + uni044F + yat + uni0463 + ydotaccent + uni1E8F + ydotbelow + uni1EF5 + yeru + uni044B + yhoi + uni1EF7 + yi + uni0457 + ytilde + uni1EF9 + yu + uni044E + zdotbelow + uni1E93 + ze + uni0437 + zedescender + uni0499 + zhe + uni0436 + zhebreve + uni04C2 + zhedescender + uni0497 + + + diff --git a/tests/otfautohint_data/input/dummy/mm0/font2.ufo/metainfo.plist b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/metainfo.plist new file mode 100644 index 000000000..7b8b34ac6 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/mm0/font2.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + com.github.fonttools.ufoLib + formatVersion + 3 + + diff --git a/tests/otfautohint_data/input/dummy/no_metainfo.ufo/dummy b/tests/otfautohint_data/input/dummy/no_metainfo.ufo/dummy new file mode 100644 index 000000000..e69de29bb diff --git a/tests/otfautohint_data/input/dummy/nocff.otf b/tests/otfautohint_data/input/dummy/nocff.otf new file mode 100644 index 0000000000000000000000000000000000000000..0d4165b9cff241951877d58c9568909845763e90 GIT binary patch literal 7484 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 Qnlkel{El_K25ZrO0kCT^UjP6A literal 0 HcmV?d00001 diff --git a/tests/otfautohint_data/input/dummy/nohints.pfa b/tests/otfautohint_data/input/dummy/nohints.pfa new file mode 100644 index 000000000..6436b9498 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/nohints.pfa @@ -0,0 +1,312 @@ +%!FontType1-1.1: SourceCodePro-Regular 1.0 +%ADOt1write: (1.0.35) +%%BeginResource: font SourceCodePro-Regular +12 dict dup begin +/FontType 1 def +/FontName /SourceCodePro-Regular def +/FontInfo 8 dict dup begin +/version (1.0) def +/Notice (Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries.) def +/Copyright (Copyright 2010, 2012 Adobe Systems Incorporated. All Rights Reserved.) def +/FamilyName (Source Code Pro) def +/isFixedPitch true def +end def +/PaintType 0 def +/FontMatrix [0.001 0 0 0.001 0 0] def +/Encoding StandardEncoding def +/FontBBox {8 -250 592 777} def +end +currentfile eexec BAB431EA06BB0A1031E1AA11919E714AC69FC4EA3B6672 +ABF3FDE103443FF5321890FEA3C9361761AC3B607C4C960F4D385045AB5EBCA8 +90FBA7C10718659A90ABF027E30B88E7D14F8D16AC4F74C85733B7705F6CF5C8 +EBAB2E0E40F736110B62422F3D642359FA764B81D9A72049DBFF40187C41455E +5378378702658031C363F2CD4F37345F8FA78044A67CDB16C1A7CA04BB402527 +8D4626197C43A10329BF2B9A38C6E2D157F1EC61E757C3702213713C07AE5C89 +5A2FD97CD642322020AE3E57EAA394D91388BC593A147B2D43CF1B5ADA6DE33D +A6E6B9E0D10768DE9996FFE531168A40EB8A6A3A8A725E582381DB84D050D5AF +CB4402ADEE95265FD6B8B986418754C6B7945AC541613605C0B6C458BEFA8B6C +E6E02B77C2AFE406FEF0ED914A80FFC9818BD6D5352D7A5C4E6718FB0133A732 +7D7C9D638F8A04F06BE0E846DC3F133CFB12A9010A0CD424BE32366B98865384 +8306F8D73BF24913045BEA430532334ADCDEFBB5660A858C8672B73226BD190D +EB28FFF238F2C1C3A6279619F144146386FDB88CDEAA188A3586095A55C37CB4 +E63628B1B55A61654CF6C5B1C94741F24045AF52A6EC2F6B41CA39BF6BA8FB32 +9623A14A9130BD95226D2A096E3E12CB89AFC6B4B121C62F24D6137E50A36881 +303552D62BB8D0077063BE34C480E23D12D3D91274AFF59557CDF72C52DD6988 +630C4B4655EFE2B6DAA69378B2E037CC4B3B513320EB3947E0F9A19DBEB37A31 +37BE8AF93F49634A1EAA3D7BA7DAAFD44374A0F101D8272134D0C8303046B5A9 +553740EFD96E7671E36EC7A5C2731A652CE645E230C41CC28B5E8CFF1B1F881E +98B4C3AFF68345CEDD06991BBEFAD3623E19E30601310F5A927341CB43730DB0 +58724A1998F8DD0A17071D2B9C80446C6C7ADF134CA24FD709A9DEF347A3B24A +5FA995EFB70FB796AA8782D12F909476A844ED20493706F4B4F3DBE361EE840B +6EF01F8D38CA70E6096B94E65F340641A28A0F49094DF1A9214DABB2280EC7EB +7D9686A1CB955D966547988C6038F077BD452C38B4C273822D45DBFF1B2D4EA9 +29816D0E92DEBE6D15A1577612BDD9210B838EE38BEA560B5FD71A83A9CC7B1F +40DDD9339A3BE1C1CB820885397FE9446785E5B8ACDDF7B7EECF599242271931 +7E9DA5FA70AE3FFF60B62CFC3B808C4E08CB0B3B59D03B8B00E1EA09D7DF2FD6 +4BBFA6D7E8CD508B9637267F1FBEDAF713955F6525D32E660637DAB73B502B76 +DB7240964D05E3E3224DAD780B06A68C1FBA418CD4C8B0890C8AD3D1CF2D8F71 +257112A89AD2F1BFC369C5D9A44BEAD9C566C2B3763A6DDF4173324171F8A259 +483B84C66F970CBBFADFEDBB4A85EC6313A65CFDDBDB7D488B8592ECA3A7C536 +949F68EA800D5AD40BAA20A2D8AF8946DBB4503F75A31EC9B52F0E10780C1A2E +937C481C01DF8AE918B91DCD1CC3ADA6D23096D6F784D0D6D52BB85F3B0CE51D +419BB957F94FB31B7CCC3D81BC5574CB3DEECBCBAC7D6A982CA645EDAF475F27 +6C15E4A6C52737980F810499CCE5CDEEE258E621DDEE012F69ADF87F48CE9C34 +E072EDFC710523F18D7ABC362F4AA5AAD6E25ADDB5472B4EAD81DC1A02B5C1AB +14E4119AACC53ED5D6347346F180486E71F29295E8BC038811912D3BB04846F6 +E9C83797C6F720E470F104503C6BEBF474C6EF89CDCCCF6C162045E5A03CEBD2 +B877F1C27F3F48FDB253E4F46819775D62D64C74EAB49FA1B4A33D2FEC909B1E +0F633204AD37826C1AE872633118DCFD99120669A99A9837EEB7332161771961 +A0D2E2A6321E60360EA463A78715A46ECB15764C7E1CFCA587FBF0D5AEF3769F +206643B86E6E498147E997FEE99EBA6C33ADD1C3EA0E96765B40DDF22999D2A2 +0A6A86C22E200BD0983D086D2D5E5781323CF438ED351410FE14B8633FE31F8F +F0226F5492B18C4071F69855E5802263D9FFB1D2DE07275FA5FEDEDB943316ED +4AD9CB6AD1A5D0F82F0454BE600882B5AE0B5D0E5A53991DAAAAE7FFD71F19B6 +6C92D451E0B4D0851F0876949ED924D306F6AED6AAEDFA08500EC4067167F54B +B8E2DBF15161D6884B8436927EACDDBB894A5D97A39C1C0261EBA90EF603D7F0 +E7E1B2ED5B4F0D75D3993898394F43FC1B81D98FBACEFDA66887B5C97E3A78D7 +9F6CDC6C9E18AD9361D93CB84611986E271C817890C5A11B6895D11308BBFEA8 +416FDABAA8581F1A2BBBBDCCE6C35128A72D3CF2918880AC35D0AD3A4ECA7DAB +77E4A893E852FFC730C010A2C12BC72D67BF8F1E669E81301139B15BDD71D63B +5AE42A88C7E822B748B22204A526D13A676C00FA483AFF4CEE0D864E30C22F29 +EA494E2C5B45219EFC0A6E7C4C38CBFEFE81ADF937AEA1E29AA0BB221108DDBA +9416F9F663C4384898396489F370807D947AFD7FD7BAD97E17C55C75369B6875 +5B9F2973416FF9A190E43297648F755CD56C73AF7A2E978C7961EBC1ED0C7372 +6F87088D58FA263D22D97BD7DD6677F6817CAF9956856D82E03057AF978DAEFD +969640280A8EF3CA1F83685204F630819FF0795EFFD7C82242D2F29B9612D2B4 +64E79BC207E89FD4DE962BDB983C1897C6B32DF2E095C8FFAE1BFD00ADA26A65 +2E8598007C276ED1617709DE7A3820568061A2F1C9068932F74B0D87027D126F +B3D22E9F0CA3FBBBA8A613C2C293A0C0E84F91F5DA1413C37D6A7F543852619D +929A28E19D9371206806B84A2C03F92CE66F8BA13153B8BF5CC7413A37913ED2 +21AC43E2FD027BB9493574E73201E2D04235D7F7812D50E6EB3949162BADAD4F +6AE0EA53DAC5CE46794CF416FBA0BF04D37670EB7F0B1CD75131FAC9F44C8236 +DCBF721B94F3AD0EC8D35DC23760A051B831737E9AD10EC3EAF4DED132DDA1E6 +EFCE78520BCFA6A9F8B2CDDE19249DBD251527637A4FEEDE1E836A0FD570FD6D +366E76F5EE46586A8EB65F939C929240AF008F23C2D9F941D05927322FF76C12 +C26058B5273CB71413F3E6897F7F85864DF93C12630704F77216E08EF2D4A9F1 +2DFBB89431FDBBAF1329180CBE9AE51E728002136F5A5EC2DCBDD78D2DAEF36C +D454CF27543F64191A0E5621F32BECD05C0F588D2FFB8EAE1D66B8DD6B7F7C52 +0876FC112093F1A19F1FE6F3BE756B22906D63398CFA6C4CDAB50102471AB3CA +0EDB94C6E8B6BCFCD7770C49EC53F62CDC9A12664A4A9D6A857C64EE8B72AAA6 +093DA5495362E6B19F240301D2FB3A0F7D86D6855F65FB6F6F13A9B9EC7113D4 +FBF665EB95844FCF13C75C4C346CD63EA118DD96E3EDB2231B7BA10298EB5942 +71B1E601E1019C0FB5C3F517FE48DBFEDD58C84EF891CD523BEB606007B2180B +729F7BC7B174F3595962C9CBA40B2BC1A19172A79EE70BE0BF9F1945391327FC +DDE0204429375A8FF737DA62F7E7BC57F4A25D3667DA646EBDF0FE20B7B25642 +2A229DA6E323F70C5CD822E5FD3ED07ED268A3FFE3AF8D3C98BEED1F7B33F503 +01766E91A72D08E6E7A06C2B8319A0F6F744FA4892219C97AD59CDA529AB299F +2117EBFAEAC297A9BAC7D01EB85B25548CF8A0F975B9139B8C83C1E39C721865 +01C64F9A6B7F697C95163CF6C80D26FA1DF42E79075131B8AD169CC8F4D45901 +CD5160F8E71B2991E682AFED8C8CA80A8FFF0E83D48E1A259F22D13396E66AE6 +5D5CBE59A34D496F3D55A666C7639DF60255915B96D49D0B3290C2E7A93785C4 +BCD6DC7CB2CCF11AAAA0A82D0C2F6ED3963F254034F583EE7371EF787A30DF94 +B0EA4254D1C7E635677D2E532B3DEF60D432432E090E18751B3FA67407B30878 +6DDD700A560058B0FDF841BAB7672B60F97F5D7D456D09239130856638521336 +4331905D417D813C23B5D00B4A5F312AFE2CF716528E44AB4DF3712A5D221CDA +F0ECB10B28E4DA751D689C3A125A1C94C137EC6B332F272D320880631C8F6F04 +144E7FC4FAF0BC47D3EF69285F2463279783971CB3CD68C737456EC408B128C2 +74D5ED3A4E98EB2353D17064CAD3BAFDE3A3230E5674F5681A5041C9521FA043 +B6D55A1C45289FF14D831DA47F3E1D5AE432D91CB3078E0E80E617F34105C47F +486210FD02541A57EB574A06DA9C07AF641F97A5BB0152E59C4F83EA824939BB +2B43E6CA624C3D0CCE9A603085F48C64028ABB877B7E2B3D85325D5C7D92FE6B +17599C74302BD23A7E856209EA68AD5523719141AC6FA8F4B90FF5F0BB3D2F34 +A7E801232E6D1901741510360753E8F1D5F0A86D46D0E24488E2DB9BDBE00283 +61B3275033C4C867B24487AD39EF86ADAC8CEFCF8E01FF97FD6C2000E2AF95F8 +7632A3DE89C100034AD67913981D742AB1A6E76A8CDC78CB91A01489137527EA +6EA8C80325CF143E72870B08812C0E79AA60EED2A35303B6DDD8E94786224607 +F6D587E9AA6BED92D0490A36192CDDA0055862BDAF567CB76795D296740F9490 +E1D3FDDE12F18B6FCA89EAE70B035BAE41EB7B7C068708F1C4B4CF49CBA765F9 +4116925E691F255A8067EAD9DF56638E24AD0A13B2513E785EBBB9082899847B +4884D76A3B67A6F3631A24A2B12AA6DB84501B45992A83E9AFD56CA3F208429D +C382F10D5C41EA1A2A706ED685275F73E84EE79E230448F424A4B775FFF5E238 +3DEB58EC05D3FFF513389C33CBF89C1C7B200FE7DC375C989728A95D611F7927 +DE6BFB55089412C7392F479F859D5B22EBAE67023D24AE1C9849984F8174928A +596743B25EF40DBF2F8232EA0510A6C82B40E96797DD468437FB05772270AFC9 +23D9F1AF6A807438D9863B0A105CAAADC97025CD901BC4E6FF999062670C6A95 +EE3C3E18DF18174AF7E8F25D960A9A2BFB6C05E39D270B99C24C83624E44CCFB +CDA0BB2FED1A36E0ED1320E83B29E76A65956E558A3D142A9241E6A3C3CC6A98 +D531643E71149471321C07A712D12005AE8A9172C0F8E0C677497BA30CBA477A +D8015A45DC627CAC112670A06BC5E8773F418CC706164139B0F93AC8FF48B799 +E581B19071F4361E5273CDB62C2D9C8858386C83676B450866923AA22BE1ED97 +632E62E5849A8AE484E7746CF0E82F0C1F0D2027C8727FD84F0437400DC0CF07 +6C4CF17A81BF37E6D540FED86258DB89DD387330D043308D0A042346AFE720AB +5D1D0D6E82930F2EC0F7A88CF766D981E26486CB50C93B7449D7C4B0DF274135 +9D0C593D9B07409F701604E9E6AD7D8F567D47D54E2A7697F793D81B980300B2 +72BB8EB9C99FF3F4966B3742D2328FDA09A8634EDCD3D6A7F58DA06FD7EB26DD +9EACEBFB30065A675AAAEC56955EA7CC7BF925F072B5C32A389331F641D27382 +9D36998F294D15203BD8C3F0CF8188A6ADCDA7314521D60EA97ED79A4DEFA331 +434DC1374CA93508DBF2B550DD8B8E38F3230CB61156981386DB10C8DB65CF64 +927AB422594D5DA171C95F5B3879B5271609550457AC7D6059155A6FDC0CB441 +FFDE7E3045ACA0E09081FCCE98A4DF29422D02F0908B6DCE9631F09914B9F022 +8A33D181021F4BE8F248B1637B73B061D3075B2B33F51A501810B3A8AE4FB8F3 +5965B9A8D9343088A70591DBFDB87BA354702813281D9092871351D6B0290E37 +CF56770948BB8F8A5C15BCFFB94BBAAFCA93846AA39EA54E64657590D37D1D22 +32B1B68A1608FB6A9F9DB98BF4AB3FFE6A1A253303708D8E37BD027E4441AC4E +300834E1CD2EF4720D94B29716C24D464CD56D5633C11E9D100F44DA57BBE6F6 +4040B31B000634207E34D9EAF997836E9387DA3918C23377D5B5E5CBBAFE2867 +28555A0C9BB6DAD4E47B104E9CEFC0F5DAD4F3422EF1582C29F9D3EFA01D9DE8 +03A6549CDC2E237FF83C5238542052458C5ED3F1EDAC51722282D1A2B821C171 +AB9603B18932E43DD5C502BF069FA5F164AF72252F2D0234A779DFE61C71B4D0 +D10FB26B025E38964A200638037049162893BC06B76D3D2765D004595BD70FAF +7298291CE6E75583F9BB79B5C4AEC0846049D578D64E6FB19F8E5272BFE35C9B +A783BF1D746F4D5F5862006568D45BC08B1BD12A864D884EDEA4F76B3C5B4AC9 +D23B4A0D6AD2D887A0E61F9BD44B3509D430ADAFFDF2A7A0D07E7CF4E3931687 +E9DB618F39E3FA728E3DFB0A2449540CD628FD03CDC68F03749D908BF5AFA416 +736DDA09CD380190B32C7AD62AA109136F7E81363EF5985839D1DBEF3CF85E9C +1BF8F6D9B4C9E00D323D9682AFDAA7CB2504C1E19BF4C80A895C6177ABC99335 +70B04B81BEA0DCB1A043FC3BF7C9B479FF3FB1E0C4C8DB9DD7C29CBE4E6DAC0C +DC40546DD6E7292C28079D4FC293308BF2DE757DD54E146E446CE00C237D9CAD +66D10DB3ECF75305FD5D8FC06BC1D4FD15446FF2D17A60D6763752CC1D7E0720 +438E95855F446154C5D90BE6B94E556E45574C2643E5F2CB811EE3046F33E6AB +6A9A6B8A4994AD50913529CD06E47D0180139741A668513C80F003B3F485B068 +F2B89596750C35D3822C8E3A3FFD9F67789C57194F26E1625A8134080F85EB80 +50856FF93EFDAE5DDA9E1A216590E0C7EB4B131B62CC9B089384020ECF4BCC67 +48815D5CC927369D30B71B74B07068F91D6A334005185FC42EF737D7D1377C01 +7089473A3DCF2018A8082899D532706FA7948E3A1319E2B0DB53FF76D8630FEB +E39B2D88A1798EDD5FCC9885FC8FF382AED0B3EEFF9992600735BE22AD479983 +42557B68102BA453314F18736641709D33E896FA39D809A33064210A5F76D693 +ED361FA7F43F4A5D7A00F98A2EB42E0E5575CE6F21A79094886C5E0B38866957 +3AFB6927941A5CE80755E41FD1348C2EC78A9B1D3DF5A2908E265E791CC25C19 +579FBCDA903F33521B647DBADDB533BB7025E103B324D1B46BA01D30FDEA9434 +9D21F68264305E92A7BCAA689C8AE63F9B57E232BC3952AF2EE1EA14652FBD12 +25758A31CC2951F32B105FCB3D1A00D636761115F596EA21A386549379671849 +1FB56038FEC5D893AC6B53FC9F983A304F90877385081DF88E9F640088ADB31F +114D7A10CF1F06089F6DA31A2D1BCA4002E72CAA7A1926DD7294A7E358F77495 +4B5E274A38FCF4B3D2288043EB08345E4ADE8ED69BC0DB340EB687ED5FCB5AF1 +467BDD56B615E4FC789A9AF1D96E27D3C95EFEF51E08B30ACC232C83FE0652A3 +75D12CDBA905C072CAF7E66293545A3797FE221690E390EE51424F2EB55E1C72 +0818A1D74D9CECD0F62C295AE33512DF123969243AC821E868B651C49135464D +777BA1B20CBC7A59113115C0DCA6FEC29F70369F0334A260340CC8FC45D4DB35 +FB30D92BC710DACE57444AC5AE9A32290056716C32B7F13B1D05A0056B6598E3 +5458BE4ABD504EA9D85AC1A0C0CDAD07C3C4490CD1B45EB140CF4D8186561284 +53C9BBB48277856157557AC4A11F4DF8C940124D80E554B154B40E7AE2649AFB +DF551A1A9D9F9634E4BD14E9EC2770AAABEC319D877F514A7230C756AA023FD6 +F232CB6557AFF762F4E1E4A174C17F062FF13A4E2B2B5F179D08EEB395F7E3F5 +3605C77A48989FA201158E4FDB92249D25F578BADD843B39B8372B7792F22AD8 +83D0FB5C319A39565D90C9786832B1752B379A681B49CA2AB32E79F7F88C68AF +CCDF9C83C9A2A183445098B7889571D212652B10F611EF109E861C5DBAABF08C +4AEC6F61CEA78477C7F8521D6C6EB4085E59E2FAFD25B56A712A7234A361A4A1 +FDC0A516E1E25A8770B4D55D69D359B1F5034B3742E8B3A9A1AAEE9E31EC892E +C2555627EA16398232062C0C228EC9D5CC0B98650FB91270DE3EFE64C08DA1FB +F97846A302C29EFD3FFF1AB30A1D21BD6946E1C00FA2DA12E9A1A767223E17A6 +A8E99B9717086A795C080C203B8B1A5C868F6339E63573BE41A5B4B3E22D262C +9D0FA14E1807D97CA6C8862DC17F4ACAC65A46CB942823E97833E90D0C760104 +A7AACCEF1D92C4229680ED595B97AB262B0052DABB6C386B94248AB6793F7EB6 +EF39C4C1D81D21BEA76669E1609E9454CFF999893DE2D99511ADD4062DC5C0B5 +DE1C923C9577F5C7068714D8EBAE09D2A0FF6AF7EAFA86A14AE8CA1686FB41D2 +6DB2534A506A8D0EFABA4BF0E042EC5F560F137BFC3E84864B27989F670CEDD5 +41EC0D308AFD9D17DB99BFAA1B9A41CA7AC74C6BF1A071B15AE074E5005302DD +A4F2BA577448A395C5BD5F10271F59AB426C5C00F3FA44726AC50A64EE35EDC2 +AF8D8D145192E67E97A0190F651E3CC939CC80831266EE4D779589768518D00E +E497B2FEFA33EB2351BE05CFD39FE7C50FD372D8EB1A7BA2966EC85870ACBADB +2C604EE5EE66DFB4329B7F3AC6E5300A7EF870C0C3D8C6CCF7AF43BEF2F3FE33 +CA48F69E2A10CA7FAAD6BA66F08DB9B1362382233FF7BB76D8AE5C23BE8F18FC +1557EFA201F3F4D04144D6AC4B983B4633EA4A5715C382309966DF542C47AF65 +9109E8BC3B26B1F0AE88CFBC05B29FB6ED77CCF09DC682CB4EC1E978776EE5C9 +8D104AE2A9BC84F6BCC47BD397AE5A58194949F92C6062CC352FFA84FEE8EAAD +D0A69BE741B386A9E681DCE8CFF54677FA918D58FEE0DC7EFD7BB3B3B1E5CA23 +34017948C22526E08E6661FF2EF3D82975B0019C2B6D3D5828E42934805CD57F +57A1D6BE6773BDB562AC8169EB2F8815253EF879765BB666D8AEFCE64C4E3FEF +94995CEC5135174C7EE8DD19F48BC5E515880408C5870C3430C4428E89D363D4 +F4023B5E0966635DD19D64725F0A3331CC777BC4B9BC55171BD18DDA2ED8A347 +3F2BE38EEF95B33A802593E0E5F81073B4D0C726985C9558E9899B972AD9EDD1 +C812488E8D76910E814C2004BAAD9A914E28F18C988A180CA595233BEFD102B2 +33E829545E08D76B6EBB2B067C5E208825BD53EAEAA8291E762D4A64E437EB81 +CC4A7349D3712B246458606F7FF222937CEEC3413592B45AB10CE917A27DB900 +E0CCF3CF3B6F4A5F9A7CCC8CAEE96EA02BC58DAA0B0938A4CBE2B1C3EF37C367 +7C2EC49240C401B4757CE81EA1C07C4A79779793DF1CFE317EAEBAE2B354E1E3 +83A7000C4C2629253B01F885606D91BC5DF02793EACAFE58E8387E35E4069DE5 +D359CB8A736D5BF9391D08E9C59C6AD873837EBD06512E55D43E10ED10A94978 +305E7BBD88B7D0D1FAC79DC9B0980E71FA6D84C2C393376E764CC1BBF8D9472C +E3B216EC9101E490E2FACCABA354136C5703F385E90F1CE064ABB3552A5609C9 +3E6DA2F1B8A35F76F3FFDFD1BA687E8655CBB9979473C8A674E4A6634C7D2E41 +58658DE908D9ED2B085071F9EC470C12028F475AB6CDCB8E380C502E5E998189 +A117A61F0ED860648EDFB165BA9BF2A5A7BB076F17EE445638BABAC2E7E45A83 +D6A0D58C7BB6053FD204CE63691512A195995E95E4D46134585FD7BC24EE0EBF +C3B8086C1B12E55597E47B2195D102279348046E05D436BC851DA878EDA72683 +A25708C4C2FB07187A776D22D7422147942578DE306CC8931D185981449C84AA +DBEC682B6073996F8D44B74EA51902D68C53CE63A77F157BA6CEF41ED417DE8A +E3CA9EF726A732E15AC1DE002A43157A1E977755D4993254C53C9330CE49EF12 +2C74451E9CA79E6E59292230695B8D94E84C946280FC756EEFC341A910D08A1E +6A19CACDD989D28482BBA72E0084511E01434781272CF26841A4425C7837E24F +B9445AC7888635F9034B73EF3C1251BBBDD2AF1EC181D3EB5C16B35F5BBD1201 +D85955621171742D381F44A24811E58DC4EAB309606A49FB2B22D89458E8B3D2 +D066094DF72685DE7F20EFC239DDE8F065102249268DB383BEF13816840360A7 +2B8A78CC5DD6067B2C0F836E217CB6B6C26A7AD5C977628F45C2998A5E747B41 +32EA6D09BC0826EC9FBBCE1DA1C0C66319BB99C3598454FF7D9305240915507C +7E470B80CBA377E0EC684C3B7B30F6F9ED3213F38AA52091F8F16817AD0AFEAE +46327177CC227E47490984CC10EDF756EC75EEB75A320C56EF47EA1550F79D3D +1A3786E3278F5BA861293C88F8D73E2CDFA71CD72C1C110A4C2604418C9F92BD +CB462DCF5B196ECF428E8A2551C43A781A197D859C6A4B778C2E4196C502729B +D09B412BC26591D097DE840C7FFA5BD6253E2CA52179CA43B507B5664F52E72E +2EC20E1DAA7E1F7236631C0BBE93FAD8CE681B4C0ECA1FF0ADC42B658A9F7497 +E703E61E9CA9025BC510104D2C6387902794C8436323B6F6DD587B8877AC9699 +6400BFC2F37470C804EC2D826A5461FBE0CDBF7D68F37E0E7F6D269A13C9BE0C +B6C05CB0F6544997F15565E0D09658CA56E78A61A4093B9EC52933AEC6EBAF8B +FB457CFFA019D8E80E2F9F4A6DB38E393AD55AE8271054ACF73BFF4BB66AC2DB +C31F8C5628553408627A7F6881C617BE509048A39FD12C9E4369708D77037698 +5798F74431343B5A44F0C4424DB83101AC389CE39DD10F188D4B1BEAD4F9CFA5 +FED93C7717468813F4D7FCFA7A77883918A69E860A4D316DDE2D0DDCF12E67AC +7CA8EF425EADCD2F8930AD381AC9352480C06589922FFBCBBED697C900378A02 +6B81F1C9DB31EB1AF1285710FE0F246EBB7B4BF5F3E368B9B4643FB127111895 +91DB8E29543824F8B07556F48AE6584F637EE1CCC10F4FA72BA12772F8868D80 +F922AB183C2CBD5A574F672668578DB70B6C817D78AF1EE0AC7FC50B0354376D +AB42BC1283C8E3132F72DC828C1F20BD83F9219F005ABC3D802366F5C8C60CE9 +5D41A0C5AE570565E306DD8B7F26F8868A2ECB0A31086B9373B1A5FCF58D950C +209A5D5F2577F9C7A0F0DDF9D92926121D5C39609C28A7B28924ED8D68CAD414 +7E1A0E9B5A57C52939E9F3EE9472C46DD31356507E6848BCB261799CE68E1994 +3D56DF512F512F07F1BFC9E8AD2EAE4CC38055BB4330C2C0CFB0ECA36B13D30F +1939D6B992567B8B1D24096B494D016B2C4C9C3763F43FD838031B5F78AEACF9 +820E8311F5E0CCBEAEB11B8B0523A281F9329F820E74CD6A5D82936EFA2B4D58 +FDBB1C9517069A26BB05FA35BF5F03C67EB193A379285DB36287FE73BAF82D5A +2F5C427FD22D10954A2C357A8D8839C2579DEBABB9648BA219CBBE85B59D2E2B +4AD57D806C6B11FD7223090EA34137A44F0D7E0C0693020405B26EC68EEA5AAF +BB95D107B2B13B7F51197BB5F0A2700B1366A09B0A11218E6D9DFA2C373DA988 +3879FF1B3E234FBEE057398B1C02E2EA9EEF8F90AC2B036731507365179E3E38 +F9072EBF92C3605DA1DE15BB14944CC94E7AB32647585799AECEA6ACD5DEA64F +A4EED600478748C7377168EB60896A9C1D36ACD30CC686DC58B3E390683A3167 +A8AD27FB60467201184EF2A6436BD008E017C96A120213F5DEE0AB9731F15C01 +07392D83D7F7C06043617A07B4E27860211FF4BA211850E63AED5529531694E8 +E6C3AC5FCA2E446FF1EE0B0C3FFAD534A14A2B21217D06F65D228CC3BE3E2342 +8CAF30A1221EBEB296AC405319038CB8A1C505F59AD7AD02C50F209041FEE8C0 +4BABC621F630A4C6236DFAB583C8B8C53DD6258E8E6288DBCE6AD2665A6824F1 +B42258965B22FBD73DAE25DB44F058B3A9086B726E0AD9CF020BA673DB580D03 +CEB420749C8727ED76C0EECC8E5E1787ED865C146FFE03A7A1B1093967E444F6 +50C8B1F7FE81A5F02B16CF08315042BD2ACD5814E5556F82249FD0C91FE58D75 +23443474DB711149B9430F467F0230EABE19B00786F4189785DE7334053A85D3 +DFF8007A50BB97496EED7FE7E97DF38E8BFB3093356CDD7CA5517881A9FE684B +813E72E5F729A5030D706685C91252E9184A293997A55F586531B92388337C49 +2DFDAFE8C2450C59D3178CFE2F7F84824CA3B38AB085E2464B9D215B42BF539B +A9147B8F82665F833CE94A2BE85B99D3ECDADFCD7CC10BEBD9F7ABA0882636EE +452D9DF9DC2B726D6C7B81182A73F953C0EE305BB32DBD4FD5FEBCF618150B3A +96F40608E0A85038C27D9654BCB70BCAA5EA448E4070E7ABA7B2431605D61208 +22B5B64BCCC74D82768191705163C0B2CC67A7BD4D182BDA235E70078D4E8A3A +3D86FAEA10222A4276FB6665E4CCEE25B48CC6C5FEBF4BC29329F24ADA9DD5BA +EB8B3376E12BA4CC59928C07F53B55D304FD41017685EA9CF63F32B08F52F524 +BE51F3C2443D39A340CCA327368F0971B0C6817E33E9EF7B4FFE66EA7B840F2F +D3EAD5D22BE044337C8C19272E65FA845F47C4B48AF78F4CC284714E562B7160 +F4CFFAE5FC8FC7FF5D5714BE117480671D912469F7007677B116E76CF6EFE60B +87D36CD0388E70425A3E452DBF63ED84482D14A7E9F12B8B4C089F4007FF0A99 +F64B9EC982F3D540FEA63F1D6A6C092979350A929AAFD6EE39518FCD820805A1 +3063C8930E17232C5812E77079C6931E6D1B1C763F2D9E139C1B5CD1D706896F +58BBCDD7578E7379E3F9F86109BC44498641664756F7DFDE5DAD274D54104FDA +7FCB30AFF700C6780FC403392A364F215C47F1E18AC1C095C8667A6D3315C811 +D12BE4CD4DE7F85077CE1D2DD4B2E042987E3DD8E6FB76767FF34AF7F02FA873 +3AF5E309DA0E457F27E050F2462B9E5A1AD5C6F128509D2BD1BE8575240B9387 +9733A1BE1D0D893F0F5ACC220E3333E3452CAAA723E787A3D494C2A3B8DBFC70 +99B2AA764FF4412AB89E3E6A7E20BFCC7168678D2E0E94D65200FBC87988F3A7 +C21F38531469B5CBA70B6CA12263CE63C17A1EAFE0710ACEB467D0FF4998B2D8 +A1387CA3AAE51678232BCE338E62DDEB0F686999766BF247B6A8B81461F16F14 +29AB71BF748416B3A97468321975C3AC7D118A6495F42E767D4554B341FD7275 +6FBD6B6CFD64459BEB4F0E4E4D64666F3B80C1C4A932ADF36508175B7FB6ACD7 +8C0C3FF397F43BA39B2D32F9285EBB503D8706D4B2C36F0773E5 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%EOF diff --git a/tests/otfautohint_data/input/dummy/ok_privatedict_hstems.otf b/tests/otfautohint_data/input/dummy/ok_privatedict_hstems.otf new file mode 100644 index 0000000000000000000000000000000000000000..0954a7893a747cbe2e99de1d4228a87577b52211 GIT binary patch literal 1624 zcma)6U1(cX9RHnrliRP@GFeC6YB`jEQ`)r6)-kNkrOjG~WhqTJiWa-u4eg4pP6I$eMW^6FY!@U+F2!Oa@;6v5oQ_g-_97ghiTo zAN61=>#l06I77ZE>PFUF%|lb7IIi@ZnYCh<7T>4-4xo+Z?Sfmoi4)A1XF@`7)tWx* zJv#53?|AAD==uX%aPO7d7u3FW?bZfS&`xWNXT_|{`xvMH@Yiqj%+fEl(;id9xr<;P z3a@LkJl#*_4WfZ(>$`XXVIgU4^S9_eUDH%WDxbYC5*>}DJjY%5S}3b~tIGmC)atT^cKqIubxf-CJ-qJ##t%nKHtYtT5MN;oHu6}5 zgEW?qg3I&57{m}~-<}+%6hV^M1z42hj3^LmAyS&Wrsqr2bKK)}X@3#} z99O&%B4U><^U#T3uMUBDrFb5u~8%{0ZTrD z&_SIss=}l~Vu~2sV_hOXLk5SnhFIwd&Jk7^#VBHw4lwS;*Q5LY6i$%_`K5x1J!-1mx2vBsye~bb+mGi5+OaG&$CBrHELXI-!!^5Kpp7z)_NyLD61(vW(u{> znOWV(ZT}PSX%IpjiQ7ddVU5{IYs#_vr>&)8#&ndYw{i@XZc%wOfJ%@4Wdv;EO{}PR$APpk>R=IfbB?|9!DnZV$OBaRv|QI=hvL{Qp%O#!J)xE zwTAzLJ0v5SjGR^h1vzaMEN8_^h8jt#S|y8Bm(dGN2yLRhva`8Tp1WKA{yTA_@~K{a zxuSPozrT5JbF2AnW8;~R#;%Wk@>o}O)~G&R-RRslzAexB%U6xt)j9vqM)gHrOTW?n zYN_&4X{+>g>D|(oC8L@xHT}cVOiN48=E8iSWj)Y#w{^R1JrMXQ@K9yvFf&mvUw=;} z?+&mNy7|Wt(ecR{GAb?WDs0(tYri`(P>TA4 Io`D4Z29#?`$N&HU literal 0 HcmV?d00001 diff --git a/tests/otfautohint_data/input/dummy/ok_privatedict_hstems.ufo/fontinfo.plist b/tests/otfautohint_data/input/dummy/ok_privatedict_hstems.ufo/fontinfo.plist new file mode 100644 index 000000000..0c0db0072 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/ok_privatedict_hstems.ufo/fontinfo.plist @@ -0,0 +1,90 @@ + + + + + ascender + 750 + capHeight + 750 + copyright + Copyright 2010, 2012 Adobe Systems Incorporated. All Rights Reserved. + descender + -250 + familyName + Source Code Pro + postscriptBlueFuzz + 0 + postscriptBlueScale + 0.0625 + postscriptBlueValues + + -12 + 0 + 486 + 498 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyBlues + + -12 + 0 + 486 + 498 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyOtherBlues + + -217 + -205 + + postscriptFontName + SourceCodePro-Regular + postscriptForceBold + + postscriptIsFixedPitch + + postscriptOtherBlues + + -217 + -205 + + postscriptStemSnapH + + 0 + + postscriptStemSnapV + + 85 + + postscriptUnderlinePosition + -100 + postscriptUnderlineThickness + 50 + styleName + Regular + trademark + Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + unitsPerEm + 1000 + versionMajor + 1 + versionMinor + 0 + xHeight + 500 + + diff --git a/tests/otfautohint_data/input/dummy/ok_privatedict_hstems.ufo/glyphs/A_.glif b/tests/otfautohint_data/input/dummy/ok_privatedict_hstems.ufo/glyphs/A_.glif new file mode 100644 index 000000000..131a04666 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/ok_privatedict_hstems.ufo/glyphs/A_.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/ok_privatedict_hstems.ufo/glyphs/contents.plist b/tests/otfautohint_data/input/dummy/ok_privatedict_hstems.ufo/glyphs/contents.plist new file mode 100644 index 000000000..156be5a7a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/ok_privatedict_hstems.ufo/glyphs/contents.plist @@ -0,0 +1,8 @@ + + + + + A + A_.glif + + diff --git a/tests/otfautohint_data/input/dummy/ok_privatedict_hstems.ufo/groups.plist b/tests/otfautohint_data/input/dummy/ok_privatedict_hstems.ufo/groups.plist new file mode 100644 index 000000000..c96917c95 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/ok_privatedict_hstems.ufo/groups.plist @@ -0,0 +1,122 @@ + + + + + COMBINING_MARKS + + gravecmb + gravecmb.cap + variacmb + acutecmb + acutecmb.cap + tonoscmb + circumflexcmb + circumflexcmb.cap + tildecmb + tildecmb.cap + macroncmb + macroncmb.cap + overlinecmb + overlinecmb.cap + brevecmb + brevecmb.cyr + brevecmb.cap + brevecmb.cyrcap + dotaccentcmb + dotaccentcmb.cap + dieresiscmb + dieresiscmb.cap + hoicmb + hoicmb.cap + candrabinducmb + candrabinducmb.cap + ringcmb + ringcmb.cap + hungarumlautcmb + hungarumlautcmb.cap + caroncmb + caroncmb.cap + dblgravecmb + dblgravecmb.cap + breveinvertedcmb + breveinvertedcmb.cap + commaturnedabovecmb + aspercmb + commaabovecmb + leniscmb + lefttackbelowcmb + righttackbelowcmb + leftangleabovecmb + horncmb + ringhalfleftbelowcmb + uptackbelowcmb + downtackbelowcmb + plusbelowcmb + minusbelowcmb + dotbelowcmb + dieresisbelowcmb + ringbelowcmb + commabelowcmb + commabelowcmb.a + cedillacmb + cedillacmb.cap + ogonekcmb + ogonekcmb.cap + verticallinebelowcmb + bridgebelowcmb + caronbelowcmb + brevebelowcmb + breveinvertedbelowcmb + tildebelowcmb + macronbelowcmb + tildeoverlaycmb + ringhalfrightbelowcmb + bridgeinvertedbelowcmb + squarebelowcmb + seagullbelowcmb + xabovecmb + perispomenicmb + perispomenicmb.cap + iotasubscriptcmb + dieresisacutecmb + dieresisacutecmb.cap + dieresistonoscmb + dieresisgravecmb + dieresisgravecmb.cap + dialytikagravecmb + dieresistildecmb + dieresismacroncmb + dieresismacroncmb.cap + dieresiscaroncmb + dieresiscaroncmb.cap + circumflexacutecmb + circumflexacutecmb.cap + circumflexgravecmb + circumflexgravecmb.cap + circumflexhoicmb + circumflexhoicmb.cap + circumflextildecmb + circumflextildecmb.cap + breveacutecmb + breveacutecmb.cap + brevegravecmb + brevegravecmb.cap + brevehoicmb + brevehoicmb.cap + brevetildecmb + brevetildecmb.cap + circumflexbrevecmb + circumflexbrevecmb.cap + macronacutecmb + macronacutecmb.cap + carondotaccentcmb + carondotaccentcmb.cap + asperacutecmb + aspergravecmb + aspertildecmb + lenisacutecmb + lenisgravecmb + lenistildecmb + + + diff --git a/tests/otfautohint_data/input/dummy/ok_privatedict_hstems.ufo/layercontents.plist b/tests/otfautohint_data/input/dummy/ok_privatedict_hstems.ufo/layercontents.plist new file mode 100644 index 000000000..b9c1a4f27 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/ok_privatedict_hstems.ufo/layercontents.plist @@ -0,0 +1,10 @@ + + + + + + public.default + glyphs + + + diff --git a/tests/otfautohint_data/input/dummy/ok_privatedict_hstems.ufo/metainfo.plist b/tests/otfautohint_data/input/dummy/ok_privatedict_hstems.ufo/metainfo.plist new file mode 100644 index 000000000..cf19a1b7c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/ok_privatedict_hstems.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + com.github.fonttools.ufoLib + formatVersion + 3 + + diff --git a/tests/otfautohint_data/input/dummy/ok_privatedict_vstems.otf b/tests/otfautohint_data/input/dummy/ok_privatedict_vstems.otf new file mode 100644 index 0000000000000000000000000000000000000000..32786829cd3f1ba6f4d717de5d81f79e3138b998 GIT binary patch literal 1624 zcma)6OKclO82)D0-n>krqNWNYM58DY1tm`6HdRHS)QOv@BC4Y}ts;opZtP8L#rB%@ zCQT6H(PM*n70DnWCG-YGaB3+R;L<};X%8(5;uMJC5`DX1r;DFfC%>0k< z|K|T^erI z@jmL^$&9>tqehqU0{Yqw6RedF@YFNuP7RAW3VW@X;TIQ^%;exqlaeyJVxm}<^# z1oKdMU7P0VekzxU241M{;w(Z!(%R&2(0#h5sftuSJ6||59K~^j5!QaK80ti^?>xks z0*FoR18$Nz0d;thyYMwoR`*tw1v;r!Wev^vy(a4zSLu6r-yVz~ju@}m4LmKr!3b>R zumT4u%p(bx=Y`OZ0nVNsIYcRp1hKQQD90F)C)PrSyTnOk5vSK7ms(BFm!RjM$LZ4k z4Ei`Ocq2%}He1k(%+U9gcj5(R;xbBNlKgp22TNQP+bG$yUXG{8kfBw|HfCdEk*GK< z`51zGb;hU)6AFn5Vr-9fp7=Bw9M&3SrH43&SYZUih*H|axD#KE?)_JMH7d%u6FB4L znrHqhOLdRC+!N%Kyj5ixVs$pFP&bxkZOVRx9yJFk53w>63uIHMIa<@?ob~tyJ=`E= z^-BLgPqqwH_o-g$uE`PA37)Q_k$Z#)>G^z~JzS|!<68Ny*0llZK!>+hJ2^~QP2n+9 zs9a-aRUfzAPr#=^2yq~0FFJ8+#7(H%`c`+M|rwR?I?AK(h~ucI`y{#;_7PY z_MhGU;zunviw_?ye!LGpA$*BXZwv(ct1L2=m!@%~_~dh3<@>-W|->fbTep8sUz%J64Tww0%i@^j_2)=lI4;*7s|(YRHf@&96!U*@&+ z8qKd4O0N_)3f~sqD|}Tj%9%plKP>gMG<2@do(nXr2Ab|PZZ_Qw1Xcr&l(zOW6ZP`d z_f+!s06U?Be+&^B9iKwI*E8_?KxMCD8u`A5;q&~D$5)&*y5}8h0o`fS&9b*tm+eL< LMg2jKK>~jR;G#^% literal 0 HcmV?d00001 diff --git a/tests/otfautohint_data/input/dummy/ok_privatedict_vstems.ufo/fontinfo.plist b/tests/otfautohint_data/input/dummy/ok_privatedict_vstems.ufo/fontinfo.plist new file mode 100644 index 000000000..605bfd186 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/ok_privatedict_vstems.ufo/fontinfo.plist @@ -0,0 +1,90 @@ + + + + + ascender + 750 + capHeight + 750 + copyright + Copyright 2010, 2012 Adobe Systems Incorporated. All Rights Reserved. + descender + -250 + familyName + Source Code Pro + postscriptBlueFuzz + 0 + postscriptBlueScale + 0.0625 + postscriptBlueValues + + -12 + 0 + 486 + 498 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyBlues + + -12 + 0 + 486 + 498 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyOtherBlues + + -217 + -205 + + postscriptFontName + SourceCodePro-Regular + postscriptForceBold + + postscriptIsFixedPitch + + postscriptOtherBlues + + -217 + -205 + + postscriptStemSnapH + + 67 + + postscriptStemSnapV + + 0 + + postscriptUnderlinePosition + -100 + postscriptUnderlineThickness + 50 + styleName + Regular + trademark + Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + unitsPerEm + 1000 + versionMajor + 1 + versionMinor + 0 + xHeight + 500 + + diff --git a/tests/otfautohint_data/input/dummy/ok_privatedict_vstems.ufo/glyphs/A_.glif b/tests/otfautohint_data/input/dummy/ok_privatedict_vstems.ufo/glyphs/A_.glif new file mode 100644 index 000000000..131a04666 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/ok_privatedict_vstems.ufo/glyphs/A_.glif @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/otfautohint_data/input/dummy/ok_privatedict_vstems.ufo/glyphs/contents.plist b/tests/otfautohint_data/input/dummy/ok_privatedict_vstems.ufo/glyphs/contents.plist new file mode 100644 index 000000000..156be5a7a --- /dev/null +++ b/tests/otfautohint_data/input/dummy/ok_privatedict_vstems.ufo/glyphs/contents.plist @@ -0,0 +1,8 @@ + + + + + A + A_.glif + + diff --git a/tests/otfautohint_data/input/dummy/ok_privatedict_vstems.ufo/groups.plist b/tests/otfautohint_data/input/dummy/ok_privatedict_vstems.ufo/groups.plist new file mode 100644 index 000000000..c96917c95 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/ok_privatedict_vstems.ufo/groups.plist @@ -0,0 +1,122 @@ + + + + + COMBINING_MARKS + + gravecmb + gravecmb.cap + variacmb + acutecmb + acutecmb.cap + tonoscmb + circumflexcmb + circumflexcmb.cap + tildecmb + tildecmb.cap + macroncmb + macroncmb.cap + overlinecmb + overlinecmb.cap + brevecmb + brevecmb.cyr + brevecmb.cap + brevecmb.cyrcap + dotaccentcmb + dotaccentcmb.cap + dieresiscmb + dieresiscmb.cap + hoicmb + hoicmb.cap + candrabinducmb + candrabinducmb.cap + ringcmb + ringcmb.cap + hungarumlautcmb + hungarumlautcmb.cap + caroncmb + caroncmb.cap + dblgravecmb + dblgravecmb.cap + breveinvertedcmb + breveinvertedcmb.cap + commaturnedabovecmb + aspercmb + commaabovecmb + leniscmb + lefttackbelowcmb + righttackbelowcmb + leftangleabovecmb + horncmb + ringhalfleftbelowcmb + uptackbelowcmb + downtackbelowcmb + plusbelowcmb + minusbelowcmb + dotbelowcmb + dieresisbelowcmb + ringbelowcmb + commabelowcmb + commabelowcmb.a + cedillacmb + cedillacmb.cap + ogonekcmb + ogonekcmb.cap + verticallinebelowcmb + bridgebelowcmb + caronbelowcmb + brevebelowcmb + breveinvertedbelowcmb + tildebelowcmb + macronbelowcmb + tildeoverlaycmb + ringhalfrightbelowcmb + bridgeinvertedbelowcmb + squarebelowcmb + seagullbelowcmb + xabovecmb + perispomenicmb + perispomenicmb.cap + iotasubscriptcmb + dieresisacutecmb + dieresisacutecmb.cap + dieresistonoscmb + dieresisgravecmb + dieresisgravecmb.cap + dialytikagravecmb + dieresistildecmb + dieresismacroncmb + dieresismacroncmb.cap + dieresiscaroncmb + dieresiscaroncmb.cap + circumflexacutecmb + circumflexacutecmb.cap + circumflexgravecmb + circumflexgravecmb.cap + circumflexhoicmb + circumflexhoicmb.cap + circumflextildecmb + circumflextildecmb.cap + breveacutecmb + breveacutecmb.cap + brevegravecmb + brevegravecmb.cap + brevehoicmb + brevehoicmb.cap + brevetildecmb + brevetildecmb.cap + circumflexbrevecmb + circumflexbrevecmb.cap + macronacutecmb + macronacutecmb.cap + carondotaccentcmb + carondotaccentcmb.cap + asperacutecmb + aspergravecmb + aspertildecmb + lenisacutecmb + lenisgravecmb + lenistildecmb + + + diff --git a/tests/otfautohint_data/input/dummy/ok_privatedict_vstems.ufo/layercontents.plist b/tests/otfautohint_data/input/dummy/ok_privatedict_vstems.ufo/layercontents.plist new file mode 100644 index 000000000..b9c1a4f27 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/ok_privatedict_vstems.ufo/layercontents.plist @@ -0,0 +1,10 @@ + + + + + + public.default + glyphs + + + diff --git a/tests/otfautohint_data/input/dummy/ok_privatedict_vstems.ufo/metainfo.plist b/tests/otfautohint_data/input/dummy/ok_privatedict_vstems.ufo/metainfo.plist new file mode 100644 index 000000000..cf19a1b7c --- /dev/null +++ b/tests/otfautohint_data/input/dummy/ok_privatedict_vstems.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + com.github.fonttools.ufoLib + formatVersion + 3 + + diff --git a/tests/otfautohint_data/input/dummy/seac.otf b/tests/otfautohint_data/input/dummy/seac.otf new file mode 100644 index 0000000000000000000000000000000000000000..5fe176387fd7f732fe02b06498c1858d5489a6ad GIT binary patch literal 400 zcmeYd3GruOWDsBg0%tcjh3r^qRUlJ_fq}7*k%5JYfsv7s!#TgSC^NMP#Mb*E#PCC! z@rMi#!w*@eAF|9pBv^WQ7-bn)*s^%1cK>+vvzhgKCjav9FNMAr2r@7;GRCxYJLeZv z7GpE_4_hbz8~G+*%`lQe~)1Pq5tEbr~;eOZ+6xLY<%6{CC_{h<11S7 + + + + ascender + 750 + capHeight + 750 + copyright + Copyright 2010, 2012 Adobe Systems Incorporated. All Rights Reserved. + descender + -250 + familyName + Source Code Pro + postscriptBlueFuzz + 0 + postscriptBlueScale + 0.0625 + postscriptBlueValues + + -12 + 0 + 486 + 498 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyBlues + + -12 + 0 + 486 + 498 + 574 + 586 + 638 + 650 + 656 + 668 + 712 + 724 + + postscriptFamilyOtherBlues + + -217 + -205 + + postscriptFontName + SourceCodePro-Regular + postscriptForceBold + + postscriptIsFixedPitch + + postscriptOtherBlues + + -217 + -205 + + postscriptStemSnapH + + 67 + + postscriptStemSnapV + + 85 + + postscriptUnderlinePosition + -100 + postscriptUnderlineThickness + 50 + styleName + Regular + trademark + Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + unitsPerEm + 1000 + versionMajor + 1 + versionMinor + 0 + xHeight + 500 + + diff --git a/tests/otfautohint_data/input/dummy/too_long_glyph_name.ufo/glyphs/a.glif b/tests/otfautohint_data/input/dummy/too_long_glyph_name.ufo/glyphs/a.glif new file mode 100644 index 000000000..3b8478ff3 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/too_long_glyph_name.ufo/glyphs/a.glif @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/otfautohint_data/input/dummy/too_long_glyph_name.ufo/glyphs/contents.plist b/tests/otfautohint_data/input/dummy/too_long_glyph_name.ufo/glyphs/contents.plist new file mode 100644 index 000000000..6946d0202 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/too_long_glyph_name.ufo/glyphs/contents.plist @@ -0,0 +1,8 @@ + + + + + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + a.glif + + diff --git a/tests/otfautohint_data/input/dummy/too_long_glyph_name.ufo/groups.plist b/tests/otfautohint_data/input/dummy/too_long_glyph_name.ufo/groups.plist new file mode 100644 index 000000000..c96917c95 --- /dev/null +++ b/tests/otfautohint_data/input/dummy/too_long_glyph_name.ufo/groups.plist @@ -0,0 +1,122 @@ + + + + + COMBINING_MARKS + + gravecmb + gravecmb.cap + variacmb + acutecmb + acutecmb.cap + tonoscmb + circumflexcmb + circumflexcmb.cap + tildecmb + tildecmb.cap + macroncmb + macroncmb.cap + overlinecmb + overlinecmb.cap + brevecmb + brevecmb.cyr + brevecmb.cap + brevecmb.cyrcap + dotaccentcmb + dotaccentcmb.cap + dieresiscmb + dieresiscmb.cap + hoicmb + hoicmb.cap + candrabinducmb + candrabinducmb.cap + ringcmb + ringcmb.cap + hungarumlautcmb + hungarumlautcmb.cap + caroncmb + caroncmb.cap + dblgravecmb + dblgravecmb.cap + breveinvertedcmb + breveinvertedcmb.cap + commaturnedabovecmb + aspercmb + commaabovecmb + leniscmb + lefttackbelowcmb + righttackbelowcmb + leftangleabovecmb + horncmb + ringhalfleftbelowcmb + uptackbelowcmb + downtackbelowcmb + plusbelowcmb + minusbelowcmb + dotbelowcmb + dieresisbelowcmb + ringbelowcmb + commabelowcmb + commabelowcmb.a + cedillacmb + cedillacmb.cap + ogonekcmb + ogonekcmb.cap + verticallinebelowcmb + bridgebelowcmb + caronbelowcmb + brevebelowcmb + breveinvertedbelowcmb + tildebelowcmb + macronbelowcmb + tildeoverlaycmb + ringhalfrightbelowcmb + bridgeinvertedbelowcmb + squarebelowcmb + seagullbelowcmb + xabovecmb + perispomenicmb + perispomenicmb.cap + iotasubscriptcmb + dieresisacutecmb + dieresisacutecmb.cap + dieresistonoscmb + dieresisgravecmb + dieresisgravecmb.cap + dialytikagravecmb + dieresistildecmb + dieresismacroncmb + dieresismacroncmb.cap + dieresiscaroncmb + dieresiscaroncmb.cap + circumflexacutecmb + circumflexacutecmb.cap + circumflexgravecmb + circumflexgravecmb.cap + circumflexhoicmb + circumflexhoicmb.cap + circumflextildecmb + circumflextildecmb.cap + breveacutecmb + breveacutecmb.cap + brevegravecmb + brevegravecmb.cap + brevehoicmb + brevehoicmb.cap + brevetildecmb + brevetildecmb.cap + circumflexbrevecmb + circumflexbrevecmb.cap + macronacutecmb + macronacutecmb.cap + carondotaccentcmb + carondotaccentcmb.cap + asperacutecmb + aspergravecmb + aspertildecmb + lenisacutecmb + lenisgravecmb + lenistildecmb + + + diff --git a/tests/otfautohint_data/input/dummy/too_long_glyph_name.ufo/layercontents.plist b/tests/otfautohint_data/input/dummy/too_long_glyph_name.ufo/layercontents.plist new file mode 100644 index 000000000..1e1e9085e --- /dev/null +++ b/tests/otfautohint_data/input/dummy/too_long_glyph_name.ufo/layercontents.plist @@ -0,0 +1,10 @@ + + + + + + public.default + glyphs + + + diff --git a/tests/otfautohint_data/input/dummy/too_long_glyph_name.ufo/metainfo.plist b/tests/otfautohint_data/input/dummy/too_long_glyph_name.ufo/metainfo.plist new file mode 100644 index 000000000..0f2996fbd --- /dev/null +++ b/tests/otfautohint_data/input/dummy/too_long_glyph_name.ufo/metainfo.plist @@ -0,0 +1,10 @@ + + + + + creator + com.github.fonttools.ufoLib + formatVersion + 2 + + diff --git a/tests/otfautohint_data/input/sparse_masters/MasterSet_Kanji-w0.00.otf b/tests/otfautohint_data/input/sparse_masters/MasterSet_Kanji-w0.00.otf new file mode 100644 index 0000000000000000000000000000000000000000..63d4c3df24b3eb2f150ca1ee1c8c70b6c6f9d890 GIT binary patch literal 4920 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 C15XVA literal 0 HcmV?d00001 diff --git a/tests/otfautohint_data/input/vf_tests/bug816.hinted.otf b/tests/otfautohint_data/input/vf_tests/bug816.hinted.otf new file mode 100644 index 0000000000000000000000000000000000000000..d9d2a8abcdec853faf2b0a46eb5054ba7e282900 GIT binary patch literal 2492 zcmbVOeM}Tb6o0dOw|oW{)M8tzmx_&P%L!CS38uh-;8($Lc;ZLI^;kIS9d{fDo|LpI zP|&;MAVRO&)`CT&Mq5o|Ky4!?jbF9WC{_PxOh4ksAN@$%G<)Wt^v&+-QKK>KY-Z-Y z-}}8cZ)Rs_wxq1A1g5|iV8M}JSeR~TZ21|0%LQPbD_UM+92`Ga2oSj*05Xe=D-8So zJV8)@5A}jYro2)}fLBoej@n;G{r32k41lOrr2CEXyl%J1kzb zuSGq{Y!e(Xjm$&)dDItGH44twi?$fFyHPh-M4@s9^u31i7}iV+0$e(=Ab&pU$rhW- z&1?d+lVQ|3o8Wc;vm8ZIPW4*BCeFKf_zup62hhYh?DejRA(}6zL%R-eCO{bf;k+H+ zR!mv&7qIMIMBv7pBfDsS(|UL>%tG%hrUz9P7>Z&+KlaAozoDfZ?X#FHIg(;iT4Z1z zl+QBx!~t4Vb|4#IsnU~mkWO%Am>6vot6>>NGufTWc?E_N$b~$}V}70B=!hg9VVX0L z+j2%a%)T7wk2zvt)taPcvj7pwP67?+u-D*2^}LA*rJWd7nH>*=~L5Ev+2vuR#=pDpOaE*w+Xc-(OF+(uhl73i``|m*EUj3pO%`HZ4)+% zc2||?7Io?R41H!sMpowIBFW)aiZ#_1*Fv|;DJ-K>m@J!99&b@oHdqDo#)rLR5R71l z25^EIM9@J#YL&8N0s+w)Y&U=vky5PH$h69M8t5Sv(y(UZE-U~8l%O;@*8NBi$4S9R zcCcZTS}{epL8l1BQM_7pQU6`u?%N}5liX8S%`CmT&US)&4+Gd>Rlg0`&l~V;j z|B2(c8u!lvdLF2S!A~+WSP`52W&8&-Wb6g`1C5nidK59kFf1E#@idbQJr)U8{JseM zL^?cYgU8M}hKAGY20M9j;ga;r*Zrd7WKUDw2|v$X=oh{GQ$a_?buWK!?wDgR$IFk; zp_z%aBkDop&C7${Hz}lhQ-p&3tKkxUPo--Os?0vJnd;i*X*ZjOT)RQAk^YUE9 z=_AIi@1sXhxE6}{@)6S1P;+Q%X!HJc;#ZELs`JQ|a-@S@+jcvVwd(F-DMos$t#?PK z{nY2Lj)b@_-m@eWvszz!a`nx3db}OTZ|6>}Y526i8u?O!)V#0a*is+w852SY(&k(# zzHabnaVM|s+wSr5jnbMCY4n?;#pX-L3oU2;JUJBnWRF$6;N#gtd#pIgA6DGLG^L0j zvv;)bYTxw%;ovIYw$3g7c7JzQt7q#@{%Jq=QBHsUUW31_t=HG#Z|mCD`ffKLDQU-; zTLWg>7sflCyeCw5FZreB0e{;_NF%G`$;|`p-9DUNl(eS#~fzU@jMNaRAcK+^$4 z5+i2zZK#Ni^2EkmuDt9`jQ+m-M{got| literal 0 HcmV?d00001 diff --git a/tests/otfautohint_test.py b/tests/otfautohint_test.py index 9d2e9f6b6..4191e41a9 100644 --- a/tests/otfautohint_test.py +++ b/tests/otfautohint_test.py @@ -1,11 +1,26 @@ import glob +import logging +import os import pytest +import subprocess -# from runner import main as runner -# from differ import main as differ -from test_utils import get_input_path # get_expected_path, get_temp_file_path +from fontTools.misc.xmlWriter import XMLWriter +from fontTools.cffLib import CFFFontSet +from fontTools.ttLib import TTFont + +from differ import main as differ +from shutil import copy2, copytree # rmtree +from afdko.fdkutils import get_temp_file_path, get_temp_dir_path +from test_utils import get_input_path, get_expected_path + +from afdko.otfautohint import FontParseError +from afdko.otfautohint.__main__ import main as otfautohint, stemhist from afdko.otfautohint.fdTools import (mergeFDDicts, parseFontInfoFile, FDDict, FontInfoParseError) +from afdko.otfautohint.autohint import ACOptions, hintFiles +from afdko.otfautohint.ufoFont import UFOFontData + +DUMMYFONTS = glob.glob(get_input_path("dummy/font.[ocu][tf][fo]")) def parse(path, glyphs=None): @@ -20,6 +35,39 @@ def parse(path, glyphs=None): return sm, dl, fd +def autohint(args): + return otfautohint(["--all", "--test"] + args) + + +class OTFOptions(ACOptions): + def __init__(self, inpath, outpath, logOnly=False, readHints=True, + zones=None, stems=None, all_stems=None): + super(OTFOptions, self).__init__() + self.inputPaths = [inpath] + self.outputPaths = [outpath] + self.logOnly = logOnly + self.hintAll = True + self.verbose = False + if zones is not None: + self.report_zones = zones + if stems is not None: + self.report_stems = stems + if all_stems is not None: + self.report_all_stems = all_stems + + +class MMOptions(ACOptions): + def __init__(self, reference, inpaths, outpaths, ref_out=None): + super(MMOptions, self).__init__() + self.inputPaths = inpaths + self.outputPaths = outpaths + self.referenceFont = reference + self.referenceOutputPath = ref_out + self.hintAll = True + self.verbose = False + self.verbose = False + + # ------------- # fdTools tests # ------------- @@ -101,3 +149,717 @@ def test_merge_fddicts_with_stemdicts(stemdict): fddict.buildBlueLists() mergeFDDicts([fddict1, fddict2]) + +# === +# CLI +# --- + + +@pytest.mark.parametrize("path", DUMMYFONTS) +def test_basic(path): + # the input font is modified in-place, make a temp copy first + if os.path.isdir(path): + temp_font_path = os.path.join(get_temp_dir_path(), + os.path.basename(path)) + copytree(path, temp_font_path) + else: + temp_font_path = get_temp_file_path() + copy2(path, temp_font_path) + autohint([temp_font_path]) + + +@pytest.mark.parametrize("path", DUMMYFONTS) +def test_outpath(path): + out_path = get_temp_file_path() + autohint([path, '-o', out_path]) + + +def test_multi_outpath(tmpdir): + """Test handling multiple output paths.""" + paths = sorted(glob.glob(get_input_path("dummy/mm0/*.ufo"))) + # the reference font is modified in-place, make a temp copy first + out_dir = get_temp_dir_path() + out_paths = [os.path.join(out_dir, os.path.basename(p)) for p in paths] + autohint(['-r', paths[0]] + paths[1:] + + ['-b', out_paths[0], '-o'] + out_paths[1:]) + + +def test_multi_outpath_unequal(tmpdir): + """Test that we exit if output paths don't match number of input paths.""" + paths = sorted(glob.glob(get_input_path("dummy/mm0/*.ufo"))) + # the reference font is modified in-place, make a temp copy first + out_dir = get_temp_dir_path() + out_paths = [os.path.join(out_dir, os.path.basename(p)) for p in paths][1:] + + with pytest.raises(SystemExit): + autohint(['-r', paths[0]] + paths[1:] + + ['-b', out_paths[0], '-o'] + out_paths[1:]) + + +def test_multi_different_formats(tmpdir): + """Test that we exit if input paths are of different formats.""" + ufos = sorted(glob.glob(get_input_path("dummy/mm0/*.ufo"))) + otfs = sorted(glob.glob(get_input_path("dummy/mm0/*.otf"))) + # the reference font is modified in-place, make a temp copy first + out_dir = get_temp_dir_path() + out_paths = [os.path.join(out_dir, os.path.basename(p)) for p in ufos] + + with pytest.raises(SystemExit): + autohint(['-r', otfs[0]] + ufos[1:] + + ['-b', out_paths[0], '-o'] + out_paths[1:]) + + +def test_multi_reference_is_input(tmpdir): + """Test that we exit if reference font is also one of the input paths.""" + paths = sorted(glob.glob(get_input_path("dummy/mm0/*.ufo"))) + # the reference font is modified in-place, make a temp copy first + out_dir = get_temp_dir_path() + out_paths = [os.path.join(out_dir, os.path.basename(p)) for p in paths] + with pytest.raises(SystemExit): + autohint(['-r', paths[0]] + paths + + ['-b', out_paths[0], '-o'] + out_paths[1:]) + + +def test_multi_reference_is_duplicated(tmpdir): + """Test that we exit if one of the input paths is duplicated.""" + paths = sorted(glob.glob(get_input_path("dummy/mm0/*.ufo"))) + # the reference font is modified in-place, make a temp copy first + out_dir = get_temp_dir_path() + out_paths = [os.path.join(out_dir, os.path.basename(p)) for p in paths] + with pytest.raises(SystemExit): + autohint(['-r', paths[0]] + paths[1:] + + [paths[1], '-b', out_paths[0], '-o'] + out_paths[1:]) + + +@pytest.mark.parametrize('path', glob.glob(get_input_path("dummy/font.p*"))) +def test_type1_supported(path): + out_path = get_temp_file_path() + autohint([path, '-o', out_path]) + + +@pytest.mark.parametrize("glyphs", [ + 'a,b,c', # Glyph List + 'a-z', # Glyph range + 'FOO,BAR,a', # Some glyphs in the list do not exist. +]) +def test_glyph_list(glyphs): + path = get_input_path("dummy/font.ufo") + out_path = get_temp_dir_path() + autohint([path, '-o', out_path, '-g', glyphs]) + + +@pytest.mark.parametrize("glyphs", [ + '/0,/1,/2', + '/0-/10', + 'cid0,cid1,cid2', + 'cid0-cid10', +]) +def test_cid_glyph_list(glyphs): + path = get_input_path("CID/font.otf") + out_path = get_temp_file_path() + autohint([path, '-o', out_path, '-g', glyphs]) + + +@pytest.mark.parametrize("glyphs", [ + 'a,b,c', + 'a-z', +]) +def test_exclude_glyph_list(glyphs, tmpdir): + path = get_input_path("dummy/font.ufo") + out_path = get_temp_dir_path() + autohint([path, '-o', out_path, '-x', glyphs]) + + +@pytest.mark.parametrize("glyphs", [ + 'FOO,BAR', + 'FOO-BAR', + 'FOO-a', + 'a-BAR', +]) +def test_missing_glyph_list(glyphs, tmpdir): + path = get_input_path("dummy/font.ufo") + out_path = get_temp_dir_path() + with pytest.raises(FontParseError): + autohint([path, '--traceback', '-o', out_path, '-g', glyphs]) + + +@pytest.mark.parametrize("path", [get_input_path("dummy/fontinfo"), + get_input_path('')]) +def test_unsupported_format(path): + with pytest.raises(SystemExit): + autohint([path]) + + +def test_missing_cff_table1(): + path = get_input_path("dummy/nocff.otf") + out_path = get_temp_file_path() + assert autohint([path, '-o', out_path]) == 1 + + +def test_missing_cff_table2(): + path = get_input_path("dummy/nocff.otf") + out_path = get_temp_file_path() + with pytest.raises(FontParseError): + autohint([path, '-o', out_path, '--traceback']) + + +@pytest.mark.parametrize("option,argument", [ + ("--exclude-glyphs-file", "glyphs.txt"), + ("--fontinfo-file", "fontinfo"), + ("--glyphs-file", "glyphs.txt"), +]) +@pytest.mark.parametrize("path", [get_input_path("dummy/font.ufo"), + get_input_path("dummy/font.otf")]) +def test_option(path, option, argument): + out_path = get_temp_file_path() + argument = get_input_path("dummy/%s" % argument) + + autohint([path, '-o', out_path, option, argument]) + + +@pytest.mark.parametrize("option", [ + "--allow-changes", + "--decimal", + "--no-flex", + "--no-hint-sub", + "--no-zones-stems", + "--print-list-fddict", + "--report-only", + "--verbose", + "--write-to-default-layer", + "-vv", +]) +@pytest.mark.parametrize("path", [get_input_path("dummy/font.ufo"), + get_input_path("dummy/font.otf")]) +def test_argumentless_option(path, option, tmpdir): + out_path = get_temp_file_path() + autohint([path, '-o', out_path, option]) + + +def test_print_fddict(): + fontpath = get_input_path("dummy/font.otf") + fipath = get_input_path("dummy/fontinfo_fdd") + exp_path = get_expected_path('dummy/print_dflt_fddict_expected.txt') + + with open(exp_path, 'r') as exp_f: + expected = exp_f.read() + with pytest.raises(SystemExit) as wrapped_exc: + autohint([fontpath, + '--print-dflt-fddict', + '--fontinfo-file', + fipath]) + str(wrapped_exc) == expected + + +@pytest.mark.parametrize("option", [ + "--doc-fontinfo", + "--help", + "--info", + "--version", +]) +def test_doc_option(option): + with pytest.raises(SystemExit) as e: + autohint([option]) + assert e.type == SystemExit + assert e.value.code == 0 + + +def test_no_fddict(): + path = get_input_path("dummy/mm0/font0.ufo") + out_path = get_temp_dir_path() + + autohint([path, '-o', out_path, "--print-list-fddict"]) + + +@pytest.mark.parametrize("path", [get_input_path("dummy/font.ufo"), + get_input_path("dummy/font.otf"), + get_input_path("dummy/font.cff")]) +def test_overwrite_font(path, tmpdir): + out_path = get_temp_file_path() + autohint([path, '-o', out_path, '-g', 'a,b,c']) + autohint([path, '-o', out_path, '-g', 'a,b,c']) + + +def test_invalid_input_path(): + path = get_temp_file_path() + with pytest.raises(SystemExit): + autohint([path]) + + +@pytest.mark.parametrize("args", [ + pytest.param(['-z'], id="report_zones"), + pytest.param([], id="report_stems"), + pytest.param(['-a'], id="report_stems,all_stems"), + pytest.param(['-g', 'a-z,A-Z,zero-nine'], id="report_stems,glyphs"), +]) +def test_stemhist(args): + path = get_input_path("dummy/font.otf") + exp_path = get_expected_path("dummy/font.otf") + out_path = get_temp_file_path() + + stemhist([path, '-o', out_path] + args) + + if '-z' in args: + suffixes = ['.top.txt', '.bot.txt'] + else: + suffixes = ['.hstm.txt', '.vstm.txt'] + + for suffix in suffixes: + exp_suffix = suffix + if '-a' in args: + exp_suffix = '.all' + suffix + if '-g' in args: + g = args[args.index('-g') + 1] + exp_suffix = '.' + g + exp_suffix + assert differ([exp_path + exp_suffix, out_path + suffix, '-l', '1']) + + +@pytest.mark.parametrize("path", DUMMYFONTS) +def test_outpath_order(path): + """ e.g. psautohint -o outfile infile""" + out_path = get_temp_file_path() + autohint(['-o', out_path, path]) + + +def test_multi_order(): + """ e.g. psautohint -o outfile1 outfile2 infile1 infile2""" + path1 = get_input_path("dummy/font.ufo") + path2 = get_input_path("dummy/big_glyph.ufo") + out_path1 = get_temp_file_path() + out_path2 = get_temp_file_path() + + autohint(['-o', out_path1, out_path2, path1, path2]) + + +def test_multi_order_unequal(): + """ e.g. psautohint -o outfile1 outfile2 infile""" + path1 = get_input_path("dummy/font.ufo") + out_path1 = get_temp_file_path() + out_path2 = get_temp_file_path() + + with pytest.raises(SystemExit): + autohint(['-o', out_path1, out_path2, path1]) + + +def test_lack_of_input_raises(): + with pytest.raises(SystemExit): + autohint(['--report-only']) + + +@pytest.mark.parametrize("zones,stems,all_stems", [ + pytest.param(True, False, False, id="report_zones"), + pytest.param(False, True, False, id="report_stems"), + pytest.param(False, True, True, id="report_stems,all_stems"), +]) +def test_otf(zones, stems, all_stems): + path = get_input_path("dummy/font.otf") + exp_path = get_expected_path("dummy/font.otf") + out_path = get_temp_dir_path() + options = OTFOptions(path, out_path, True, False, zones, stems, all_stems) + + hintFiles(options) + + if zones: + suffixes = ['.top.txt', '.bot.txt'] + else: + suffixes = ['.hstm.txt', '.vstm.txt'] + + for suffix in suffixes: + exp_suffix = suffix + if all_stems: + exp_suffix = '.all' + suffix + assert differ([exp_path + exp_suffix, out_path + suffix, '-l', '1']) + + +# --- +# UFO +# --- + + +def test_incomplete_glyphorder(): + path = get_input_path("dummy/incomplete_glyphorder.ufo") + font = UFOFontData(path, False, True) + + assert len(font.getGlyphList()) == 95 + assert "ampersand" in font.getGlyphList() + + +# ----- +# MM/VF +# ----- + + +@pytest.mark.parametrize("otf", glob.glob(get_input_path("vf_tests/*.otf"))) +def test_vfotf(otf): + out_path = get_temp_file_path() + options = MMOptions(None, [otf], [out_path]) + options.allow_no_blues = True + hintFiles(options) + + xmlFiles = [] + + for path in (otf, out_path): + font = TTFont(path) + assert "CFF2" in font + oname = get_temp_file_path() + ".xml" + writer = XMLWriter(oname) + font["CFF2"].toXML(writer, font) + writer.close() + xmlFiles.append(oname) + assert differ(xmlFiles) + + +def test_sparse_mmotf(): + paths = sorted(glob.glob(get_input_path("sparse_masters/*.otf"))) + exp_paths = sorted(glob.glob(get_expected_path("sparse_masters/*.otf"))) + # the reference font is modified in-place, make a temp copy first + # MasterSet_Kanji-w0.00.otf has to be the reference font. + tmpdir = get_temp_dir_path() + reference = paths[0] + inpaths = paths[1:] + ref_out = str(os.path.join(tmpdir, os.path.basename(reference)) + ".out") + outpaths = [str(os.path.join(tmpdir, os.path.basename(p)) + ".out") + for p in inpaths] + + options = MMOptions(reference, inpaths, outpaths, ref_out) + options.allow_no_blues = True + hintFiles(options) + + for ref, out in zip(exp_paths, [ref_out] + outpaths): + xmlFiles = [] + for path in (ref, out): + font = TTFont(path) + assert "CFF " in font + oname = get_temp_file_path() + ".xml" + writer = XMLWriter(oname) + font["CFF "].toXML(writer, font) + writer.close() + xmlFiles.append(oname) + + assert differ(xmlFiles) + +# ------- +# hinting +# ------- + + +def test_cff(): + path = get_input_path("dummy/font.cff") + out_path = get_temp_file_path() + options = OTFOptions(path, out_path) + hintFiles(options) + + xmlFiles = [] + for path in (path, out_path): + font = CFFFontSet() + opath = get_temp_file_path() + writer = XMLWriter(opath) + with open(path, "rb") as fp: + font.decompile(fp, None) + font.toXML(writer) + xmlFiles.append(opath) + writer.close() + + assert differ(xmlFiles) + + +@pytest.mark.parametrize("path", glob.glob(get_input_path("dummy/font.p*"))) +def test_type1_supported_hint(path): + out_path = get_temp_file_path() + options = OTFOptions(path, out_path) + if os.path.basename(path) == 'font.ps': + options.ignoreFontinfo = True + hintFiles(options) + + path_dump = get_temp_file_path() + out_dump = get_temp_file_path() + subprocess.check_call(["tx", "-dump", "-6", path, path_dump]) + subprocess.check_call(["tx", "-dump", "-6", out_path, out_dump]) + assert differ([path_dump, out_dump]) + + +def test_unsupported_format_hintfiles(): + path = get_input_path("dummy/fontinfo") + out_path = get_temp_file_path() + options = OTFOptions(path, out_path) + + with pytest.raises(FontParseError): + hintFiles(options) + + +def test_missing_cff_table_hintfiles(): + path = get_input_path("dummy/nocff.otf") + out_path = get_temp_file_path() + options = OTFOptions(path, out_path) + + with pytest.raises(FontParseError): + hintFiles(options) + + +def test_ufo_write_to_default_layer(): + path = get_input_path("dummy/defaultlayer.ufo") + out_path = get_temp_dir_path() + options = OTFOptions(path, out_path) + options.writeToDefaultLayer = True + hintFiles(options) + + assert differ([path, out_path]) + + +@pytest.mark.parametrize("path", + glob.glob(get_input_path("dummy/*_metainfo.ufo"))) +def test_ufo_bad(path): + out_path = get_temp_dir_path() + options = OTFOptions(path, out_path) + + with pytest.raises(FontParseError): + hintFiles(options) + + +@pytest.mark.parametrize("path", glob.glob(get_input_path("dummy/bad_*.p*"))) +def test_type1_bad(path): + out_path = get_temp_file_path() + options = OTFOptions(path, out_path) + + with pytest.raises(FontParseError): + hintFiles(options) + + +def test_counter_glyphs(): + path = get_input_path("dummy/font.ufo") + out_path = get_temp_dir_path() + options = OTFOptions(path, out_path) + options.vCounterGlyphs = {"m": True, "M": True, "T": True} + hintFiles(options) + + +def test_seac_op(caplog): + path = get_input_path("dummy/seac.otf") + out_path = get_temp_file_path() + options = OTFOptions(path, out_path) + + hintFiles(options) + + msgs = [r.getMessage() for r in caplog.records] + assert "Skipping Aacute: can't process SEAC composite glyphs." in msgs + + +def test_mute_tx_msgs(capfd): + path = get_input_path("dummy/nohints.pfa") + out_path = get_temp_file_path() + options = OTFOptions(path, out_path) + + hintFiles(options) + + captured = capfd.readouterr() + assert "(cfw) unhinted <.notdef>" not in captured.err + + +@pytest.mark.parametrize("path", + glob.glob(get_input_path("dummy/bad_privatedict_*"))) +def test_bad_privatedict(path): + if os.path.isdir(path): + out_path = get_temp_dir_path() + else: + out_path = get_temp_file_path() + options = OTFOptions(path, out_path) + + with pytest.raises(FontParseError): + hintFiles(options) + + +@pytest.mark.parametrize("path", + glob.glob(get_input_path("dummy/bad_privatedict_*"))) +def test_bad_privatedict_accept(path): + """Same as above test, but PrivateDict is accepted because of + `allow_no_blues` option.""" + if os.path.isdir(path): + out_path = get_temp_dir_path() + else: + out_path = get_temp_file_path() + options = OTFOptions(path, out_path) + options.allow_no_blues = True + + hintFiles(options) + + +@pytest.mark.parametrize("path", + glob.glob(get_input_path("dummy/ok_privatedict_*"))) +def test_ok_privatedict_accept(path, caplog): + if os.path.isdir(path): + out_path = get_temp_dir_path() + else: + out_path = get_temp_file_path() + options = OTFOptions(path, out_path) + + hintFiles(options) + + msg = "There is no value or 0 value for Dominant" + assert any(r.getMessage().startswith(msg) for r in caplog.records) + + +def test_hashmap_glyph_changed(caplog): + path = get_input_path("dummy/hashmap_glyph_changed.ufo") + out_path = get_temp_dir_path() + options = OTFOptions(path, out_path) + + hintFiles(options) + msgs = [r.getMessage() for r in caplog.records] + assert "Glyph 'a' has been edited. You must first run 'checkOutlines' " \ + "before running 'autohint'. Skipping." in msgs + + +def test_hashmap_processed_no_autohint(caplog): + path = get_input_path("dummy/hashmap_processed_no_autohint.ufo") + out_path = get_temp_dir_path() + options = OTFOptions(path, out_path) + + hintFiles(options) + + assert not differ([path, out_path]) + + +def test_hashmap_no_version(caplog): + caplog.set_level(logging.INFO) + path = get_input_path("dummy/hashmap_no_version.ufo") + out_path = get_temp_dir_path() + options = OTFOptions(path, out_path) + + hintFiles(options) + msgs = [r.getMessage() for r in caplog.records] + assert "Updating hash map: was older version" in msgs + + assert not differ([path, out_path]) + + +@pytest.mark.skipif(True, reason="XXX This doesn't work when no_version runs") +def test_hashmap_old_version(caplog): + caplog.set_level(logging.INFO) + path = get_input_path("dummy/hashmap_old_version.ufo") + out_path = get_temp_dir_path() + options = OTFOptions(path, out_path) + + hintFiles(options) + msgs = [r.getMessage() for r in caplog.records] + assert "Updating hash map: was older version" in msgs + + assert not differ([path, out_path]) + + +def test_hashmap_new_version(caplog): + path = get_input_path("dummy/hashmap_new_version.ufo") + out_path = get_temp_dir_path() + options = OTFOptions(path, out_path) + + with pytest.raises(FontParseError): + hintFiles(options) + + +def test_hashmap_advance(): + path = get_input_path("dummy/hashmap_advance.ufo") + out_path = get_temp_dir_path() + options = OTFOptions(path, out_path) + + hintFiles(options) + + assert differ([path, out_path]) + + +def test_hashmap_dflt_layer(): + path = get_input_path("dummy/hashmap_dflt_layer.ufo") + rslt = get_expected_path("dummy/hashmap_dflt_layer_hinted.ufo") + out_path = get_temp_dir_path() + options = OTFOptions(path, out_path) + options.writeToDefaultLayer = True + + hintFiles(options) + + assert differ([rslt, out_path]) + + +def test_hashmap_dflt_layer_rehint(): + path = get_input_path("dummy/hashmap_dflt_layer.ufo") + rslt = get_expected_path("dummy/hashmap_dflt_layer_rehinted.ufo") + out_path = get_temp_dir_path() + options = OTFOptions(path, out_path) + options.writeToDefaultLayer = False + hintFiles(options) + options2 = OTFOptions(out_path, out_path) + options2.writeToDefaultLayer = True + hintFiles(options2) + + assert differ([rslt, out_path]) + + +def test_hashmap_transform(): + path = get_input_path("dummy/hashmap_transform.ufo") + out_path = get_temp_dir_path() + options = OTFOptions(path, out_path) + + hintFiles(options) + + assert differ([path, out_path]) + + +def test_hashmap_unnormalized_floats(): + path = get_input_path("dummy/hashmap_unnormalized_floats.ufo") + out_path = get_temp_dir_path() + options = OTFOptions(path, out_path) + + hintFiles(options) + + assert differ([path, out_path]) + + +def test_decimals_ufo(): + path = get_input_path("dummy/decimals.ufo") + out_path = get_temp_dir_path() + options = OTFOptions(path, out_path) + options.roundCoords = False + + hintFiles(options) + + assert differ([path, out_path]) + + +def test_decimals_otf(): + cff = get_input_path("dummy/decimals.otf") + out_path = get_temp_file_path() + options = OTFOptions(cff, out_path) + options.roundCoords = False + + hintFiles(options) + + xmlFiles = [] + for path in (cff, out_path): + font = TTFont(path) + assert "CFF " in font + opath = get_temp_file_path() + writer = XMLWriter(opath) + font["CFF "].toXML(writer, font) + writer.close() + xmlFiles.append(opath) + + assert differ(xmlFiles) + + +def test_layers(): + path = get_input_path("dummy/layers.ufo") + out_path = get_temp_dir_path() + options = OTFOptions(path, out_path) + options.allow_no_blues = True + + hintFiles(options) + + assert differ([path, out_path]) + + +def test_big_glyph(): + path = get_input_path("dummy/big_glyph.ufo") + out_path = get_temp_dir_path() + options = OTFOptions(path, out_path) + options.explicitGlyphs = True + + hintFiles(options) + + assert differ([path, out_path]) From 3bdd5fe9ca8834925cb574d8c8497452f55c5073 Mon Sep 17 00:00:00 2001 From: Skef Iterum Date: Wed, 29 Mar 2023 12:22:33 -0700 Subject: [PATCH 06/13] More flake8 --- tests/otfautohint_test.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/otfautohint_test.py b/tests/otfautohint_test.py index 4191e41a9..0fc94d78f 100644 --- a/tests/otfautohint_test.py +++ b/tests/otfautohint_test.py @@ -348,7 +348,7 @@ def test_print_fddict(): '--print-dflt-fddict', '--fontinfo-file', fipath]) - str(wrapped_exc) == expected + assert str(wrapped_exc) == expected @pytest.mark.parametrize("option", [ @@ -544,13 +544,13 @@ def test_sparse_mmotf(): def test_cff(): - path = get_input_path("dummy/font.cff") + cff = get_input_path("dummy/font.cff") out_path = get_temp_file_path() - options = OTFOptions(path, out_path) + options = OTFOptions(cff, out_path) hintFiles(options) xmlFiles = [] - for path in (path, out_path): + for path in (cff, out_path): font = CFFFontSet() opath = get_temp_file_path() writer = XMLWriter(opath) From 2d31bb2353d9bddfbc20569441e71f4c824950ce Mon Sep 17 00:00:00 2001 From: Skef Iterum Date: Wed, 24 May 2023 09:14:48 -0700 Subject: [PATCH 07/13] Update otfFont for missing glyphname (fontTools change? makeotf change?) --- python/afdko/otfautohint/otfFont.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/python/afdko/otfautohint/otfFont.py b/python/afdko/otfautohint/otfFont.py index d4b0f276f..1fe0b6b43 100644 --- a/python/afdko/otfautohint/otfFont.py +++ b/python/afdko/otfautohint/otfFont.py @@ -529,7 +529,10 @@ def getPrivateFDDict(self, allow_no_blues, noFlex, vCounterGlyphs, return fdDictArray, gl_vsindex def getfdIndex(self, name): - gid = self.ttFont.getGlyphID(name) + try: + gid = self.ttFont.getGlyphID(name) + except KeyError: + return None if gid is None: return None if hasattr(self.topDict, "FDSelect"): From 7b662ced4049735394d577b5098d5c157afc04c0 Mon Sep 17 00:00:00 2001 From: Skef Iterum Date: Fri, 26 May 2023 09:51:48 -0700 Subject: [PATCH 08/13] Back out custom otfautohint _version.py Disable time-consuming big_glyph_test --- pyproject.toml | 3 --- python/afdko/otfautohint/__main__.py | 4 +++- python/afdko/otfautohint/_version.py | 3 --- tests/otfautohint_test.py | 1 + 4 files changed, 4 insertions(+), 7 deletions(-) delete mode 100644 python/afdko/otfautohint/_version.py diff --git a/pyproject.toml b/pyproject.toml index f657ff002..df9007fe4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,6 +8,3 @@ requires = [ "ninja" ] build-backend = "setuptools.build_meta" - -[tool.setuptools_scm] -write_to = "python/afdko/otfautohint/_version.py" diff --git a/python/afdko/otfautohint/__main__.py b/python/afdko/otfautohint/__main__.py index 9b11883a5..12d0ed384 100644 --- a/python/afdko/otfautohint/__main__.py +++ b/python/afdko/otfautohint/__main__.py @@ -13,10 +13,12 @@ import textwrap from . import get_font_format -from ._version import version as __version__ from .logging import logging_conf from .autohint import ACOptions, hintFiles +__version__ = """\ +otfautohint v3.0.0 May 26 2023 +""" FONTINFO_FILE_NAME = 'fontinfo' diff --git a/python/afdko/otfautohint/_version.py b/python/afdko/otfautohint/_version.py deleted file mode 100644 index fcf8b049c..000000000 --- a/python/afdko/otfautohint/_version.py +++ /dev/null @@ -1,3 +0,0 @@ -from setuptools_scm import get_version - -version = get_version(root='../..', relative_to=__file__) diff --git a/tests/otfautohint_test.py b/tests/otfautohint_test.py index 0fc94d78f..7285ec8a4 100644 --- a/tests/otfautohint_test.py +++ b/tests/otfautohint_test.py @@ -854,6 +854,7 @@ def test_layers(): assert differ([path, out_path]) +@pytest.mark.skipif(True, reason="Takes too long to run routinely") def test_big_glyph(): path = get_input_path("dummy/big_glyph.ufo") out_path = get_temp_dir_path() From 0d62b3340df36e45212f73d359d419e22824f5a9 Mon Sep 17 00:00:00 2001 From: Skef Iterum Date: Fri, 26 May 2023 13:07:06 -0700 Subject: [PATCH 09/13] A bit of test cleanup --- tests/otfautohint_test.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tests/otfautohint_test.py b/tests/otfautohint_test.py index 7285ec8a4..3dd4b15cf 100644 --- a/tests/otfautohint_test.py +++ b/tests/otfautohint_test.py @@ -40,7 +40,7 @@ def autohint(args): class OTFOptions(ACOptions): - def __init__(self, inpath, outpath, logOnly=False, readHints=True, + def __init__(self, inpath, outpath, logOnly=False, zones=None, stems=None, all_stems=None): super(OTFOptions, self).__init__() self.inputPaths = [inpath] @@ -65,7 +65,6 @@ def __init__(self, reference, inpaths, outpaths, ref_out=None): self.referenceOutputPath = ref_out self.hintAll = True self.verbose = False - self.verbose = False # ------------- @@ -455,7 +454,7 @@ def test_otf(zones, stems, all_stems): path = get_input_path("dummy/font.otf") exp_path = get_expected_path("dummy/font.otf") out_path = get_temp_dir_path() - options = OTFOptions(path, out_path, True, False, zones, stems, all_stems) + options = OTFOptions(path, out_path, True, zones, stems, all_stems) hintFiles(options) From efd8d2edd207b1b652dd63b7b3e8eaf37fc36bca Mon Sep 17 00:00:00 2001 From: Skef Iterum Date: Tue, 27 Jun 2023 21:46:45 -0700 Subject: [PATCH 10/13] Code review feedback Correct object path for otfstemhist --- docs/otfautohint_Notes.md | 25 +++++++---- python/afdko/otfautohint/__main__.py | 4 +- python/afdko/otfautohint/autohint.py | 56 ++++++++++++------------ python/afdko/otfautohint/fdTools.py | 22 +++++----- python/afdko/otfautohint/glyphData.py | 39 ++++++++++------- python/afdko/otfautohint/hinter.py | 47 +++++++++++++++----- python/afdko/otfautohint/hintstate.py | 14 +++--- python/afdko/otfautohint/otfFont.py | 9 ++-- python/afdko/otfautohint/splitpsdicts.py | 21 ++++++++- python/afdko/otfautohint/ufoFont.py | 10 ++--- setup.py | 2 +- tests/otfautohint_test.py | 10 ++--- 12 files changed, 161 insertions(+), 98 deletions(-) diff --git a/docs/otfautohint_Notes.md b/docs/otfautohint_Notes.md index bdfe862e5..5fbf9f396 100644 --- a/docs/otfautohint_Notes.md +++ b/docs/otfautohint_Notes.md @@ -16,17 +16,21 @@ Most of the algorithms are unchanged but not all. Some notable differences are: 3. The C code algorithms for vertical and horizontal hinting were mostly implemented as separate functions. In the port there is typically one function shared by both dimensions. The `glyphData/pt` 2-tuple object has - special `a` and `o` value accessors and a class-level switch as part of this - unification. Some bug fixes and improvements that were only added to one - dimension in the past now work in both. + special `a` and `o` value accessors and a class-level switch as part of + this unification. (`a` is meant to suggest "aligned" and `o` is meant to + suggest "opposite", referring to the relation between the value and the + chosen alignment; `a` is `x` and `o` is `y` when horizontal alignment is + chosen, and vice-versa when vertical alignment is chosen.) Some bug fixes + and improvements that were only added to one dimension in the past now work + in both. 4. In the C code spline characteristics such as bounding boxes and measures of flatness were calculated by approximating spline curves with line segments. In the Python code these calculations are closed-form and implemented with fontTools' quadratic and cubic root finders. 5. The C code had special functions for handling a spline with an inflection - point. The new code copies and splits such splines at their inflection points, - analyzes the copies, and copies the resulting analysis back to the inflected - splines. + point. The new code copies and splits such splines at their inflection + points, analyzes the copies, and copies the resulting analysis back to the + inflected splines. 6. The mask distribution algorithm (which is equivalent to what used to be called "hint substitution" is implemeneted somewhat differently. @@ -83,12 +87,15 @@ that change order are retained but treated as conflicting with all stems they As long as a design space is defined by interpolation only (rather than extrapolation) the extremes of stem ordering are represented by the (sorted) -orders in the individual masters. Consider a variable glyph with *n* masters. -The bottom edge of stem *i* at some point in design space can be represented as +orders in the individual masters. Consider the bottom edge of stem *i* in a +variable glyph with *n* masters. It's location at some point in design space +can be represented as c1\*s*i*1 + c2\*s*i*2 + ... + c*n*\*s*in* -where c1 + c2 + ... + c*n* == 1 and 0 <= c*k* <= 1 +where s*ik* is the position of the edge in that glyph in master *k* +and each `c` value is some interpolation coefficient, so that c1 + +c2 + ... + c*n* == 1 and 0 <= c*k* <= 1 The signed distance between the bottom edges of two stems *i* and *j* is accordingly diff --git a/python/afdko/otfautohint/__main__.py b/python/afdko/otfautohint/__main__.py index 12d0ed384..d2e0fd155 100644 --- a/python/afdko/otfautohint/__main__.py +++ b/python/afdko/otfautohint/__main__.py @@ -333,7 +333,7 @@ def __init__(self, pargs): self.allowChanges = pargs.allow_changes self.noFlex = pargs.no_flex self.noHintSub = pargs.no_hint_sub - self.allow_no_blues = pargs.no_zones_stems + self.allowNoBlues = pargs.no_zones_stems self.ignoreFontinfo = pargs.ignore_fontinfo self.logOnly = pargs.report_only self.removeConflicts = not pargs.keep_conflicts @@ -855,7 +855,7 @@ def __init__(self, pargs): super(ReportOptions, self).__init__() self.hintAll = True self.noFlex = True - self.allow_no_blues = True + self.allowNoBlues = True self.logOnly = True self.inputPaths = pargs.font_paths self.outputPaths = pargs.output_paths diff --git a/python/afdko/otfautohint/autohint.py b/python/afdko/otfautohint/autohint.py index 380967b06..5fa12095a 100644 --- a/python/afdko/otfautohint/autohint.py +++ b/python/afdko/otfautohint/autohint.py @@ -42,7 +42,7 @@ def __init__(self): self.allowChanges = False self.noFlex = False self.noHintSub = False - self.allow_no_blues = False + self.allowNoBlues = False self.fontinfoPath = None self.ignoreFontinfo = False self.logOnly = False @@ -91,29 +91,29 @@ def justReporting(self): return self.report_zones or self.report_stems -def getGlyphNames(glyphTag, fontGlyphList, fDesc): +def getGlyphNames(glyphSpec, fontGlyphList, fDesc): glyphNameList = [] - rangeList = glyphTag.split("-") + rangeList = glyphSpec.split("-") try: prevGID = fontGlyphList.index(rangeList[0]) except ValueError: if len(rangeList) > 1: log.warning("glyph ID <%s> in range %s from glyph selection " "list option is not in font. <%s>.", - rangeList[0], glyphTag, fDesc) + rangeList[0], glyphSpec, fDesc) else: log.warning("glyph ID <%s> from glyph selection list option " "is not in font. <%s>.", rangeList[0], fDesc) return None glyphNameList.append(fontGlyphList[prevGID]) - for glyphTag2 in rangeList[1:]: + for glyphName2 in rangeList[1:]: try: - gid = fontGlyphList.index(glyphTag2) + gid = fontGlyphList.index(glyphName2) except ValueError: log.warning("glyph ID <%s> in range %s from glyph selection " "list option is not in font. <%s>.", - glyphTag2, glyphTag, fDesc) + glyphName2, glyphSpec, fDesc) return None for i in range(prevGID + 1, gid + 1): glyphNameList.append(fontGlyphList[i]) @@ -132,8 +132,8 @@ def filterGlyphList(options, fontGlyphList, fDesc): else: # expand ranges: glyphList = [] - for glyphTag in options.glyphList: - glyphNames = getGlyphNames(glyphTag, fontGlyphList, fDesc) + for glyphSpec in options.glyphList: + glyphNames = getGlyphNames(glyphSpec, fontGlyphList, fDesc) if glyphNames is not None: glyphList.extend(glyphNames) if options.excludeGlyphList: @@ -173,9 +173,9 @@ def setUniqueDescs(fontInstances): prefix = os.path.commonpath(descs) descs = [os.path.relpath(p, prefix) for p in descs] while True: - dn = [os.path.dirname(p) for p in descs] + dirname = [os.path.dirname(p) for p in descs] if len(set(os.path.basename(p) for p in descs)) == 1: - descs = dn + descs = dirname else: break except ValueError: @@ -215,14 +215,14 @@ def __init__(self, options, fil): def numGlyphs(self): return len(self.glyphNameList) - def hintStatus(self, name, hgt): + def hintStatus(self, name, hintedGlyphTuple): an = self.options.nameAliases.get(name, name) - if hgt is None: + if hintedGlyphTuple is None: log.warning("%s: Could not hint!", an) return False - hs = [g.hasHints(both=True) for g in hgt if g is not None] + hs = [g.hasHints(both=True) for g in hintedGlyphTuple if g is not None] if False in hs: - if len(hgt) == 1: + if len(hintedGlyphTuple) == 1: log.info("%s: No hints added!", an) return False elif True in hs: @@ -236,21 +236,23 @@ def hintStatus(self, name, hgt): class glyphiter: def __init__(self, parent): self.fw = parent - self.gnit = parent.glyphNameList.__iter__() + self.gnIter = parent.glyphNameList.__iter__() self.notFound = 0 def __next__(self): - # gnit's StopIteration exception stops this iteration - vi = 0 + # gnIter's StopIteration exception stops this iteration + vsindex = 0 stillLooking = True while stillLooking: stillLooking = False - name = self.gnit.__next__() + name = self.gnIter.__next__() if self.fw.reportOnly and name == '.notdef': stillLooking = True continue if self.fw.isVF: - gt, vi = self.fw.fontInstances[0].font.get_vf_glyphs(name) + t = self.fw.fontInstances[0].font.get_vf_glyphs(name) + gt, vsindex = t + else: gt = tuple((get_glyph(self.fw.options, f.font, name) for f in self.fw.fontInstances)) @@ -258,7 +260,7 @@ def __next__(self): self.notFound += 1 stillLooking = True self.fw.notFound = self.notFound - return name, gt, self.fw.dictManager.getRecKey(name, vi) + return name, gt, self.fw.dictManager.getRecKey(name, vsindex) def __iter__(self): return self.glyphiter(self) @@ -285,7 +287,7 @@ def hint(self): "python process: running as single process") pool = None - lt = None + logThread = None try: dictRecord = self.dictManager.getDictRecord() if pcount == 1: @@ -295,8 +297,8 @@ def hint(self): # set_start_method('spawn') manager = Manager() logQueue = manager.Queue(-1) - lt = Thread(target=log_receiver, args=(logQueue,)) - lt.start() + logThread = Thread(target=log_receiver, args=(logQueue,)) + logThread.start() pool = Pool(pcount, initializer=glyphHinter.initialize, initargs=(self.options, dictRecord, logQueue)) @@ -338,14 +340,14 @@ def hint(self): pool.close() pool.join() logQueue.put(None) - lt.join() + logThread.join() finally: if pool is not None: pool.terminate() pool.join() - if lt is not None: + if logThread is not None: logQueue.put(None) - lt.join() + logThread.join() return hintedAny diff --git a/python/afdko/otfautohint/fdTools.py b/python/afdko/otfautohint/fdTools.py index ed314b771..1b14378e4 100644 --- a/python/afdko/otfautohint/fdTools.py +++ b/python/afdko/otfautohint/fdTools.py @@ -328,7 +328,7 @@ def parseFontInfoFile(fdArrayMap, data, glyphList, maxY, minY, fontName): dictName = tokenList[i] i += 1 if dictName == kFinalDictName: - # This is dict is NOT used to hint any glyphs; it is + # This dict is NOT used to hint any glyphs; it is # used to supply the merged alignment zones and stem # widths for the final font. if finalFDict is None: @@ -486,9 +486,9 @@ def mergeFDDicts(prevDictList): for prefDDict in prevDictList: if prefDDict is None: continue - for ki in [0, 1]: - zoneDict = zoneDictList[ki] - bluePairName = bluePairListNames[ki] + for i in (0, 1): + zoneDict = zoneDictList[i] + bluePairName = bluePairListNames[i] bluePairList = getattr(prefDDict, bluePairName) if not bluePairList: continue @@ -498,10 +498,10 @@ def mergeFDDicts(prevDictList): # Now for the stem widths. stemNameList = ["DominantH", "DominantV"] stemDictList = [dominantHDict, dominantVDict] - for wi in (0, 1): - stemFieldName = stemNameList[wi] + for i in (0, 1): + stemFieldName = stemNameList[i] dList = getattr(prefDDict, stemFieldName) - stemDict = stemDictList[wi] + stemDict = stemDictList[i] if dList is not None: for width in dList: stemDict[width] = prefDDict.DictName @@ -638,7 +638,7 @@ def getFDInfo(font, desc, options, glyphList, isVF): srcFontinfoData, hasDict = fontinfoFileData(options, font) if hasDict and not options.ignoreFontinfo: # Get the default fontinfo from the font's top dict. - fdDict = font.getPrivateFDDict(options.allow_no_blues, + fdDict = font.getPrivateFDDict(options.allowNoBlues, options.noFlex, options.vCounterGlyphs, options.hCounterGlyphs, desc) @@ -662,7 +662,7 @@ def getFDInfo(font, desc, options, glyphList, isVF): if fdIndex is None: continue if fdIndex not in fdArraySet: - fddict, model = font.getPrivateFDDict(options.allow_no_blues, + fddict, model = font.getPrivateFDDict(options.allowNoBlues, options.noFlex, options.vCounterGlyphs, options.hCounterGlyphs, @@ -681,7 +681,7 @@ def getFDInfo(font, desc, options, glyphList, isVF): if fdIndex is None: continue if fdIndex not in fdArrayMap: - fddict = font.getPrivateFDDict(options.allow_no_blues, + fddict = font.getPrivateFDDict(options.allowNoBlues, options.noFlex, options.vCounterGlyphs, options.hCounterGlyphs, @@ -775,7 +775,7 @@ def getRecKey(self, gname, vsindex): elif fdIndex in self.auxRecord[vsindex]: return self.auxRecord[vsindex][fdIndex] f = self.fontInstances[0] - fddict, _ = f.font.getPrivateFDDict(self.options.allow_no_blues, + fddict, _ = f.font.getPrivateFDDict(self.options.allowNoBlues, self.options.noFlex, self.options.vCounterGlyphs, self.options.hCounterGlyphs, diff --git a/python/afdko/otfautohint/glyphData.py b/python/afdko/otfautohint/glyphData.py index e6bb8301e..9df302d7a 100644 --- a/python/afdko/otfautohint/glyphData.py +++ b/python/afdko/otfautohint/glyphData.py @@ -50,7 +50,9 @@ class pt(tuple): @classmethod def setAlign(cls, vertical=False): """ - Class-level method to control the value of properties a and o + Class-level method to control the value of properties a and o. + "a" is meant so suggest "aligned" and "o" is meant to suggest + "opposite". When called with vertical==False (the default): a will be equivalent to x @@ -98,6 +100,7 @@ def y(self): @property def a(self): + """See note in setAlign""" if self.tl.align == 1: return self[0] elif self.tl.align == 2: @@ -108,6 +111,7 @@ def a(self): @property def o(self): + """See note in setAlign""" if self.tl.align == 1: return self[1] elif self.tl.align == 2: @@ -117,6 +121,7 @@ def o(self): "setting align") def ao(self): + """See note in setAlign""" if self.tl.align == 1: return (self.x, self.y) elif self.tl.align == 2: @@ -261,10 +266,12 @@ def __new__(cls, lb=0, rt=0): @property def lb(self): + """The left or bottom value, depending on stem alignment""" return self[0] @property def rt(self): + """The right or top value, depending on stem alignment""" return self[1] def __str__(self): @@ -369,7 +376,7 @@ def __init__(self, c): # Start with the bounds of the line betwen the endpoints self.lb = self.linearBounds(c) if c.is_line: - self.b = self.lb + self.bounds = self.lb else: # For curves, add the control points into the calcuation. # If they exceed the linear bounds calculate the proper @@ -380,7 +387,7 @@ def __init__(self, c): if self.lb != cpb: self.calcCurveBounds(c) else: - self.b = self.lb + self.bounds = self.lb def mergePt(self, b, p, t, doExt=True): """ @@ -426,7 +433,7 @@ def calcCurveBounds(self, pe): a[1] * t * t * t + b[1] * t * t + c[1] * t + d[1]) self.mergePt(curveb, p, t) - self.b = curveb + self.bounds = curveb def farthestExtreme(self, doY=False): """ @@ -439,7 +446,7 @@ def farthestExtreme(self, doY=False): is less than the linear bound and True if it is greater """ idx = 1 if doY else 0 - d = [abs(self.lb[i][idx] - self.b[i][idx]) for i in range(2)] + d = [abs(self.lb[i][idx] - self.bounds[i][idx]) for i in range(2)] if d[0] > d[1]: return d[0], self.extpts[0][idx], self.tmap[0][idx], False elif fne(d[1], 0): @@ -452,10 +459,10 @@ def intersects(self, other, margin=0): Returns True if the bounds of this object are within those of the argument """ - return (self.b[0][0] <= other.b[1][0] + margin and - self.b[1][0] + margin >= other.b[0][0] and - self.b[0][1] <= other.b[1][1] + margin and - self.b[1][1] + margin >= other.b[0][1]) + return (self.bounds[0][0] <= other.bounds[1][0] + margin and + self.bounds[1][0] + margin >= other.bounds[0][0] and + self.bounds[0][1] <= other.bounds[1][1] + margin and + self.bounds[1][1] + margin >= other.bounds[0][1]) class pathBoundsState: @@ -465,15 +472,15 @@ class pathBoundsState: """ def __init__(self, pe): """Initialize the bounds with those of a single pathElement""" - self.b = pe.getBounds().b + self.bounds = pe.getBounds().bounds self.extpes = [[pe, pe], [pe, pe]] def merge(self, other): """Merge this pathBoundsState object with the bounds of another""" for i, cmp_o in enumerate([operator.lt, operator.gt]): for j in range(2): - if cmp_o(other.b[i][j], self.b[i][j]): - self.b[i][j] = other.b[i][j] + if cmp_o(other.bounds[i][j], self.bounds[i][j]): + self.bounds[i][j] = other.bounds[i][j] self.extpes[i][j] = other.extpes[i][j] def within(self, other): @@ -481,10 +488,10 @@ def within(self, other): Returns True if the bounds of this object are within those of the argument """ - return (self.b[0][0] >= other.b[0][0] and - self.b[0][1] >= other.b[0][1] and - self.b[1][0] <= other.b[1][0] and - self.b[1][1] <= other.b[1][1]) + return (self.bounds[0][0] >= other.bounds[0][0] and + self.bounds[0][1] >= other.bounds[0][1] and + self.bounds[1][0] <= other.bounds[1][0] and + self.bounds[1][1] <= other.bounds[1][1]) class pathElement: diff --git a/python/afdko/otfautohint/hinter.py b/python/afdko/otfautohint/hinter.py index bb413f2d4..a21565387 100644 --- a/python/afdko/otfautohint/hinter.py +++ b/python/afdko/otfautohint/hinter.py @@ -27,6 +27,30 @@ GlyphPE = namedtuple("GlyphPE", "glyph pe") LocDict = namedtuple("LocDict", "l u used") +# A few variable conventions not documented elsewhere: + +# When used in a path-related context "c" is a variable containing a +# path element (in the way that "i" is often a variable containing an +# integer. In loops it will in a sense, be the "current" path element. +# In lower-level functions it may just be the parameter containing the +# element to operate on. + +# When "n" or "p" are used in a similar contexts they will typically +# respectively contain the next or previous path elements relative to c. + +# "cl" generally refers to a list of (glyph, pathElement) tuples, where +# each pathElement corresponds to the location of a corresponding line or +# curve in master or VF location indicated by the glyph. + +# In a context with multiple path elements but without a clear relation +# between them, pe1, pe2, and so forth will be used. p1, p2, etc. will +# similarly contain points, and cp1, cp2 specifically control points. + +# Analogously "gl" is a variable containing a glyphData object. + +# "t" is a generic temporary variable, typically used when deciding +# whether to replace one value with another. It should be short-lived. + class dimensionHinter: """ @@ -140,7 +164,7 @@ def resetForHinting(self): else: self.hs = self.glyph.hhs = glyphHintState() - class gliter: + class glIter: """A pathElement set iterator for the glyphData object list""" __slots__ = ('gll', 'il') @@ -160,7 +184,7 @@ def __iter__(self): return self def __iter__(self, glidx=None): - return self.gliter(self.gllist, glidx) + return self.glIter(self.gllist, glidx) # Methods implemented by subclasses @abstractmethod @@ -247,9 +271,9 @@ def addFlex(self, force=True, inited=False): else: log.info("Already has flex hints, skipping addFlex") return - for c in self: - if all((self.tryFlex(x.glyph, x.pe) for x in c)): - self.markFlex(c) + for cl in self: + if all((self.tryFlex(x.glyph, x.pe) for x in cl)): + self.markFlex(cl) self.stopFlex() def tryFlex(self, gl, c): @@ -499,6 +523,9 @@ def testBend(self, p0, p1, p2): return dp * dp / q <= 0.5 def isCCW(self, p0, p1, p2): + """ + Returns true if p0 -> p1 -> p2 is counter-clockwise in glyph space. + """ d0 = p1 - p0 d1 = p2 - p1 return d0.x * d1.y >= d1.x * d0.y @@ -1670,8 +1697,8 @@ def addBBox(self, doSubpaths=False): gl = self.glyph if doSubpaths: paraml = range(len(gl.subpaths)) - ltype = hintSegment.sType.LPBBOX - utype = hintSegment.sType.UPBBOX + ltype = hintSegment.sType.LSBBOX + utype = hintSegment.sType.USBBOX else: paraml = [None] ltype = hintSegment.sType.LGBBOX @@ -1680,7 +1707,7 @@ def addBBox(self, doSubpaths=False): pbs = gl.getBounds(param) if pbs is None: continue - mn_pt, mx_pt = pt(tuple(pbs.b[0])), pt(tuple(pbs.b[1])) + mn_pt, mx_pt = pt(tuple(pbs.bounds[0])), pt(tuple(pbs.bounds[1])) peidx = 0 if self.isV() else 1 if any((hv.lloc <= mx_pt.o and mn_pt.o <= hv.uloc for hv in self.hs.mainValues)): @@ -1827,8 +1854,8 @@ def calcInstanceStems(self, glidx): else: pbs = self.glyph.getBounds(peSi.position[0]) if pbs is not None: - mn_pt = pt(tuple(pbs.b[0])) - mx_pt = pt(tuple(pbs.b[1])) + mn_pt = pt(tuple(pbs.bounds[0])) + mx_pt = pt(tuple(pbs.bounds[1])) score = mx_pt.a - mn_pt.a loc = mx_pt.o if seg0.isUBBox() else mn_pt.o iSS.addToLoc(loc, score, strong=True, bb=True) diff --git a/python/afdko/otfautohint/hintstate.py b/python/afdko/otfautohint/hintstate.py index 1caf8a9df..691f5d95d 100644 --- a/python/afdko/otfautohint/hintstate.py +++ b/python/afdko/otfautohint/hintstate.py @@ -20,10 +20,10 @@ class sType(Enum): LINE = 1 BEND = 2 CURVE = 3 - LGBBOX = 4 - UGBBOX = 5 - LPBBOX = 6 - UPBBOX = 7 + LSBBOX = 4 # Calculated from the lower bound of a segment + USBBOX = 5 # Calculated from the upper bound of a segment + LGBBOX = 6 # Calculated from the lower bound of the whole glyph + UGBBOX = 7 # Calcualted from the upper bound of the whole glyph GHOST = 8 def __init__(self, aloc, oMin, oMax, pe, typ, bonus, isV, isInc, desc): @@ -86,14 +86,14 @@ def isLine(self): return self.type == self.sType.LINE or self.isBBox() def isBBox(self): - return self.type in (self.sType.LGBBOX, self.sType.UGBBOX, - self.sType.LPBBOX, self.sType.UPBBOX) + return self.type in (self.sType.LSBBOX, self.sType.USBBOX, + self.sType.LGBBOX, self.sType.UGBBOX) def isGBBox(self): return self.type in (self.sType.LGBBOX, self.sType.UGBBOX) def isUBBox(self): - return self.type in (self.sType.UPBBOX, self.sType.UGBBOX) + return self.type in (self.sType.USBBOX, self.sType.UGBBOX) def isGhost(self): return self.type == self.sType.GHOST diff --git a/python/afdko/otfautohint/otfFont.py b/python/afdko/otfautohint/otfFont.py index 1fe0b6b43..ebc7170ac 100644 --- a/python/afdko/otfautohint/otfFont.py +++ b/python/afdko/otfautohint/otfFont.py @@ -32,6 +32,7 @@ class SEACError(Exception): + """Raised when a charString has an obsolete 'seac' operator""" pass @@ -390,7 +391,7 @@ def getPrivateDictVal(self, pDict, attr, default, vsindex, vsi): return val - def getPrivateFDDict(self, allow_no_blues, noFlex, vCounterGlyphs, + def getPrivateFDDict(self, allowNoBlues, noFlex, vCounterGlyphs, hCounterGlyphs, desc, fdIndex=0, gl_vsindex=None): pTopDict = self.topDict if hasattr(pTopDict, "FDArray"): @@ -452,14 +453,14 @@ def getPrivateFDDict(self, allow_no_blues, noFlex, vCounterGlyphs, # BlueValues. Some fonts have bad BBox values, so I # don't let this be smaller than -upm*0.25, upm*1.25. inactiveAlignmentValues = [low, low, high, high] - if allow_no_blues or self.is_vf: + if allowNoBlues or self.is_vf: # XXX adjusted for vf bvs = inactiveAlignmentValues numbvs = len(bvs) else: raise FontParseError("Font must have at least four " + "values in its %s " % bvattr + - "array for PSAutoHint to work!") + "array for otfautohint to work!") bvs.sort() # The first pair only is a bottom zone, where the first value @@ -488,7 +489,7 @@ def getPrivateFDDict(self, allow_no_blues, noFlex, vCounterGlyphs, sstems = [self.getPrivateDictVal(privateDict, stdw, -1, dict_vsindex, vsi)] else: - if allow_no_blues or self.is_vf: + if allowNoBlues or self.is_vf: # XXX adjusted for vf # dummy value. Needs to be larger than any hint will # likely be, as the autohint program strips out any diff --git a/python/afdko/otfautohint/splitpsdicts.py b/python/afdko/otfautohint/splitpsdicts.py index 05e446ffa..45d3fc3f7 100644 --- a/python/afdko/otfautohint/splitpsdicts.py +++ b/python/afdko/otfautohint/splitpsdicts.py @@ -101,6 +101,9 @@ def remapDicts(fpath, dictmap): hasExtra = False + # Create a new FDSelect object for the font and map the glyphs to + # dictionary indexes according to the regular expressions in + # dictspec.re fdselect = top.FDSelect = FDSelect() for gn in cff.getGlyphOrder(): done = False @@ -117,6 +120,9 @@ def remapDicts(fpath, dictmap): fdselect.append(i + 1) hasExtra = True + # Rebuild the dictionary indices and the dictmap itself to remove + # any dictionaries that didn't contain any glyphs, so that we don't + # wind up with empty dictionaries later. j = 0 indexMap = [] newdictmap = [] @@ -136,12 +142,24 @@ def remapDicts(fpath, dictmap): assert indexMap[v] != -1 fdselect[i] = indexMap[v] + # Create new FDArray and top-level private dictionaries, keeping + # a reference to the original private dictionary in origPriv fdarray = top.FDArray = FDArrayIndex() origPriv = top.Private # Make sure info doesn't leak though in non-FDArray private dict top.Private = PrivateDict() + # For each dictionary containing glyphs, make a copy of the original + # private dictionary and then modify the Other/Family/Blues, StemSnap, + # and Std?W values according to the dictspec. (Note that by assigning + # to blah[:] the new values wind up in the lists inside the dictionary + # copy.) + # + # Then add that dictionary to a new FontDict and append the later + # to the fdarray. for dictspec in newdictmap: + # Make a new dictonary starting with the old private dictionary + # values npr = deepcopy(origPriv) for bvals, fvals, indexes in [(getattr(npr, "BlueValues", None), getattr(npr, "FamilyBlues", None), @@ -179,7 +197,8 @@ def remapDicts(fpath, dictmap): fontDict.Private = npr fdarray.append(fontDict) - # add no-zone dictionary for other glyphs (leave stem sizes) + # Add a dictionary for any remaining glyphs with zones far outside of + # the bounds of existing glyphs. (Leave the stem values.) if hasExtra: bbox = top.FontBBox font_max = bbox[3] diff --git a/python/afdko/otfautohint/ufoFont.py b/python/afdko/otfautohint/ufoFont.py index 24b7ecbbd..193ee8c24 100644 --- a/python/afdko/otfautohint/ufoFont.py +++ b/python/afdko/otfautohint/ufoFont.py @@ -640,7 +640,7 @@ def fontInfo(self): self._fontInfo = vars(info) return self._fontInfo - def getPrivateFDDict(self, allow_no_blues, noFlex, vCounterGlyphs, + def getPrivateFDDict(self, allowNoBlues, noFlex, vCounterGlyphs, hCounterGlyphs, desc, fdIndex=None): if self.fontDict is not None: return self.fontDict @@ -665,13 +665,13 @@ def getPrivateFDDict(self, allow_no_blues, noFlex, vCounterGlyphs, blueValues = self.fontInfo.get("postscriptBlueValues", []) numBlueValues = len(blueValues) if numBlueValues < 4: - if allow_no_blues: + if allowNoBlues: blueValues = inactiveAlignmentValues numBlueValues = len(blueValues) else: raise FontParseError( "Font must have at least four values in its " - "BlueValues array for PSAutoHint to work!") + "BlueValues array for otfautohint to work!") blueValues.sort() # The first pair only is a bottom zone, where the first value is the # overshoot position; the rest are top zones, and second value of the @@ -703,7 +703,7 @@ def getPrivateFDDict(self, allow_no_blues, noFlex, vCounterGlyphs, vstems = self.fontInfo.get("postscriptStemSnapV", []) if not vstems: - if allow_no_blues: + if allowNoBlues: # dummy value. Needs to be larger than any hint will likely be, # as the autohint program strips out any hint wider than twice # the largest global stem width. @@ -720,7 +720,7 @@ def getPrivateFDDict(self, allow_no_blues, noFlex, vCounterGlyphs, hstems = self.fontInfo.get("postscriptStemSnapH", []) if not hstems: - if allow_no_blues: + if allowNoBlues: # dummy value. Needs to be larger than any hint will likely be, # as the autohint program strips out any hint wider than twice # the largest global stem width. diff --git a/setup.py b/setup.py index ac8f0dede..79712cca2 100644 --- a/setup.py +++ b/setup.py @@ -133,7 +133,7 @@ def _get_console_scripts(): ('hintplot', 'proofpdf:hintplot'), ('waterfallplot', 'proofpdf:waterfallplot'), ('otfautohint', 'otfautohint.__main__:main'), - ('otfstemhist', 'otfstemhist.__main__:stemhist'), + ('otfstemhist', 'otfautohint.__main__:stemhist'), ] scripts_path = 'afdko' scripts = [f'{name} = {scripts_path}.{entry}' diff --git a/tests/otfautohint_test.py b/tests/otfautohint_test.py index 3dd4b15cf..e2162f19c 100644 --- a/tests/otfautohint_test.py +++ b/tests/otfautohint_test.py @@ -492,7 +492,7 @@ def test_incomplete_glyphorder(): def test_vfotf(otf): out_path = get_temp_file_path() options = MMOptions(None, [otf], [out_path]) - options.allow_no_blues = True + options.allowNoBlues = True hintFiles(options) xmlFiles = [] @@ -521,7 +521,7 @@ def test_sparse_mmotf(): for p in inpaths] options = MMOptions(reference, inpaths, outpaths, ref_out) - options.allow_no_blues = True + options.allowNoBlues = True hintFiles(options) for ref, out in zip(exp_paths, [ref_out] + outpaths): @@ -671,13 +671,13 @@ def test_bad_privatedict(path): glob.glob(get_input_path("dummy/bad_privatedict_*"))) def test_bad_privatedict_accept(path): """Same as above test, but PrivateDict is accepted because of - `allow_no_blues` option.""" + `allowNoBlues` option.""" if os.path.isdir(path): out_path = get_temp_dir_path() else: out_path = get_temp_file_path() options = OTFOptions(path, out_path) - options.allow_no_blues = True + options.allowNoBlues = True hintFiles(options) @@ -846,7 +846,7 @@ def test_layers(): path = get_input_path("dummy/layers.ufo") out_path = get_temp_dir_path() options = OTFOptions(path, out_path) - options.allow_no_blues = True + options.allowNoBlues = True hintFiles(options) From cb0031529cc7746352004d539abe48319e9db04b Mon Sep 17 00:00:00 2001 From: Kamile Demir Date: Mon, 14 Aug 2023 15:12:12 -0400 Subject: [PATCH 11/13] [README] Update with otfautohint news + link to more detail --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index f9f119d44..479fe1f55 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,13 @@ Please see the for additional information, such as links to reference materials and related projects. +📣 News +------------ +* **The Python port of psautohint will be (re)integrated into the AFDKO repository as "otfautohint":** + * A release will be made on August 28th, 2023 + * Please feel free to try pre-release v4.0.0a in the meantime + * More information can be found in [docs/otfautohint_Notes.md](docs/otfautohint_Notes.md) + Installation ------------ From eef6501290b9fd5f7d9006294864bab4cd7b0333 Mon Sep 17 00:00:00 2001 From: Kamile Demir Date: Mon, 14 Aug 2023 15:13:02 -0400 Subject: [PATCH 12/13] [docs/otfautohint_Notes.md] Add summary bullet point list into doc --- docs/otfautohint_Notes.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/docs/otfautohint_Notes.md b/docs/otfautohint_Notes.md index 5fbf9f396..26b76608f 100644 --- a/docs/otfautohint_Notes.md +++ b/docs/otfautohint_Notes.md @@ -4,6 +4,27 @@ originally written in C by Bill Paxton. That code was most recently distributed as "psautohint" in a PyPI package of the same name. +Changes Summary: +* [Name-Change] The name-change better reflects how hinted input is now published, + and lets the new version coexist with the old version when needed. +* [AFDKO Tools Updated] Other tools in AFDKO have been updated to call oftautohint + instead of psautohint, and the dependency on the latter's repository has been removed. +* [Stopping Psautohint Development] We expect to stop development of psautohint once + the 3.9.8 release is made. +* [Improvements] The new code fixes a number of bugs and in our judgement produces + better results on average. It also uses a slightly different encoding in + UFO glif files. Accordingly, users should expect that running the new code + results in many differences compared with psautohint, but this should be a one-time change. +* [Variable CFF Hinting] The new code also supports hinting of variable CFF-based fonts, + including directly hinting a built CFF2 font. Glyphs that include overlap will typically + be hinted close to how they would have been hinted with overlap removed. +* [Hinting Time] Because psautohint was partly written in (very old) C code, + and otfautohint is written entirely in Python, the new code takes significantly + longer to hint an individual glyph. However, we have also enhanced otfautohint + to hint different glyphs on multiple CPU cores by default. As a result the tool + will be 5-8 times slower when running on a single core but will typically be + slightly faster when running on 8 cores. + Most of the algorithms are unchanged but not all. Some notable differences are: 1. Because all code is now in Python there is no role for the `bez` charstring From 09121e19cc12ac4550708d89b8a9178874836ecc Mon Sep 17 00:00:00 2001 From: Skef Iterum Date: Mon, 14 Aug 2023 14:01:27 -0700 Subject: [PATCH 13/13] flake8 changes --- python/afdko/otfautohint/fdTools.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/afdko/otfautohint/fdTools.py b/python/afdko/otfautohint/fdTools.py index 1b14378e4..ad964866f 100644 --- a/python/afdko/otfautohint/fdTools.py +++ b/python/afdko/otfautohint/fdTools.py @@ -156,7 +156,7 @@ def setInfo(self, key, value): else: value = 0 elif key in ('DominantV', 'DominantH'): - if type(value) == list: + if isinstance(value, list): value = [int(v) for v in value] else: value = [int(value)] @@ -626,7 +626,7 @@ def fontinfoFileData(options, font): fontInfoData, subsMade = re.subn( r"^include (.*)$", lambda m: fontinfoIncludeData(fdir, idir, m), - fontInfoData, 0, re.M) + fontInfoData, count=0, flags=re.M) fontInfoData = re.sub(r"#[^\r\n]+", "", fontInfoData) return fontInfoData, 'FDDict' in fontInfoData return None, None