[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1058338: ufo2ft: FTBFS: dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.12 3.11" returned exit code 13



Source: ufo2ft
Version: 2.30.0-1
Severity: serious
Justification: FTBFS
Tags: trixie sid ftbfs
User: lucas@debian.org
Usertags: ftbfs-20231212 ftbfs-trixie

Hi,

During a rebuild of all packages in sid, your package failed to build
on amd64.


Relevant part (hopefully):
> make[1]: Entering directory '/<<PKGBUILDDIR>>'
> dh_auto_test
> I: pybuild base:310: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_ufo2ft/build; python3.12 -m pytest tests
> ============================= test session starts ==============================
> platform linux -- Python 3.12.1, pytest-7.4.3, pluggy-1.3.0
> rootdir: /<<PKGBUILDDIR>>
> configfile: setup.cfg
> collected 663 items
> 
> tests/featureCompiler_test.py ...............                            [  2%]
> tests/fontInfoData_test.py ...............                               [  4%]
> tests/integration_test.py ......s.s........F...FFFFFFF...FF.....FF       [ 10%]
> tests/outlineCompiler_test.py .......................................... [ 16%]
> ...............................................                          [ 23%]
> tests/preProcessor_test.py ....s.....s...........                        [ 27%]
> tests/featureWriters/cursFeatureWriter_test.py ...                       [ 27%]
> tests/featureWriters/featureWriters_test.py ........                     [ 28%]
> tests/featureWriters/gdefFeatureWriter_test.py ..........                [ 30%]
> tests/featureWriters/kernFeatureWriter_test.py ..........F.............. [ 34%]
>                                                                          [ 34%]
> tests/featureWriters/markFeatureWriter_test.py ......................... [ 38%]
> ..                                                                       [ 38%]
> tests/filters/decomposeComponents_test.py ..                             [ 38%]
> tests/filters/decomposeTransformedComponents_test.py ...                 [ 39%]
> tests/filters/dottedCircle_test.py .                                     [ 39%]
> tests/filters/flattenComponents_test.py ........                         [ 40%]
> tests/filters/propagateAnchors_test.py .............                     [ 42%]
> tests/filters/sortContours_test.py ....                                  [ 42%]
> tests/filters/transformations_test.py ...............................    [ 47%]
> tests/featureCompiler_test.py ...............                            [ 49%]
> tests/fontInfoData_test.py ...............                               [ 52%]
> tests/integration_test.py ......s.s........F...FFFFFFF...FF.....FF       [ 58%]
> tests/outlineCompiler_test.py .......................................... [ 64%]
> ...............................................                          [ 71%]
> tests/preProcessor_test.py ....s.....s...........                        [ 74%]
> tests/featureWriters/cursFeatureWriter_test.py ...                       [ 75%]
> tests/featureWriters/featureWriters_test.py ........                     [ 76%]
> tests/featureWriters/gdefFeatureWriter_test.py ..........                [ 78%]
> tests/featureWriters/kernFeatureWriter_test.py ..........F.............. [ 81%]
>                                                                          [ 81%]
> tests/featureWriters/markFeatureWriter_test.py ......................... [ 85%]
> ..                                                                       [ 85%]
> tests/filters/decomposeComponents_test.py ..                             [ 86%]
> tests/filters/decomposeTransformedComponents_test.py ...                 [ 86%]
> tests/filters/dottedCircle_test.py .                                     [ 86%]
> tests/filters/flattenComponents_test.py ........                         [ 88%]
> tests/filters/propagateAnchors_test.py .............                     [ 90%]
> tests/filters/sortContours_test.py ....                                  [ 90%]
> tests/filters/transformations_test.py ...............................    [ 95%]
> tests/fontInfoData_test.py ..                                            [ 95%]
> tests/featureWriters/markFeatureWriter_test.py .........                 [ 96%]
> tests/filters/filters_test.py ...................                        [ 99%]
> tests/filters/transformations_test.py .                                  [100%]
> 
> =================================== FAILURES ===================================
> ____ IntegrationTest.test_optimizeCFF_subroutinize[defcon-compreffor-cff1] _____
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a8de9c0>
> testufo = <defcon.objects.font.Font object at 0x7fa59a6dc320>, cff_version = 1
> subroutinizer = 'compreffor', expected_ttx = 'TestFont-CFF-compreffor.ttx'
> 
>     @pytest.mark.parametrize(
>         "subroutinizer, cff_version, expected_ttx",
>         [
>             (None, 1, "TestFont-CFF.ttx"),
>             ("compreffor", 1, "TestFont-CFF-compreffor.ttx"),
>             ("cffsubr", 1, "TestFont-CFF.ttx"),
>             (None, 2, "TestFont-CFF2-cffsubr.ttx"),
>             # ("compreffor", 2, "TestFont-CFF2-compreffor.ttx"),
>             ("cffsubr", 2, "TestFont-CFF2-cffsubr.ttx"),
>         ],
>         ids=[
>             "default-cff1",
>             "compreffor-cff1",
>             "cffsubr-cff1",
>             "default-cff2",
>             # "compreffor-cff2",
>             "cffsubr-cff2",
>         ],
>     )
>     def test_optimizeCFF_subroutinize(
>         self, testufo, cff_version, subroutinizer, expected_ttx
>     ):
> >       otf = compileOTF(
>             testufo, optimizeCFF=2, cffVersion=cff_version, subroutinizer=subroutinizer
>         )
> 
> tests/integration_test.py:206: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> ufo2ft/__init__.py:201: in compileOTF
>     return call_postprocessor(
> ufo2ft/__init__.py:88: in call_postprocessor
>     otf = postProcessor.process(**kwargs)
> ufo2ft/postProcessor.py:98: in process
>     self.process_cff(
> ufo2ft/postProcessor.py:123: in process_cff
>     self._subroutinize(backend, self.otf, cffOutputVersion)
> ufo2ft/postProcessor.py:331: in _subroutinize
>     subroutinize(otf, cffVersion)
> ufo2ft/postProcessor.py:335: in _subroutinize_with_compreffor
>     from compreffor import compress
> /usr/lib/python3/dist-packages/compreffor/__init__.py:68: in <module>
>     from compreffor import cxxCompressor, pyCompressor
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
>     #!/usr/bin/env python
>     #
>     # Copyright 2015 Google Inc. All Rights Reserved.
>     #
>     # Licensed under the Apache License, Version 2.0 (the "License");
>     # you may not use this file except in compliance with the License.
>     # You may obtain a copy of the License at
>     #
>     #     http://www.apache.org/licenses/LICENSE-2.0
>     #
>     # Unless required by applicable law or agreed to in writing, software
>     # distributed under the License is distributed on an "AS IS" BASIS,
>     # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>     # See the License for the specific language governing permissions and
>     # limitations under the License.
>     
>     """
>     Tool to subroutinize a CFF OpenType font. Backed by a C++ binary.
>     
>     This file is a bootstrap for the C++ edition of the FontTools compreffor.
>     It prepares the input data for the extension and reads back in the results,
>     applying them to the input font.
>     
>     Usage (command line):
>     >> ./cxxCompressor.py /path/to/font.otf
>     # font written to /path/to/font.compressed.otf
>     
>     Usage (python):
>     >> font = TTFont("/path/to/font.otf")
>     >> cxxCompressor.compreff(font)
>     >> font.save("/path/to/output.otf")
>     """
>     
>     import array
>     from io import BytesIO
>     import struct
>     import logging
>     from compreffor.pyCompressor import (
>         Compreffor, CandidateSubr, tokenCost)
> >   from compreffor import _compreffor as lib, timer
> E   ImportError: cannot import name '_compreffor' from partially initialized module 'compreffor' (most likely due to a circular import) (/usr/lib/python3/dist-packages/compreffor/__init__.py)
> 
> /usr/lib/python3/dist-packages/compreffor/cxxCompressor.py:40: ImportError
> _____________ IntegrationTest.test_compileVariableTTF[defcon-None] _____________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a8def90>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa59a6ba6f0>
> useProductionNames = None
> 
>     def test_compileVariableTTF(self, designspace, useProductionNames):
>         varfont = compileVariableTTF(designspace, useProductionNames=useProductionNames)
> >       expectTTX(
>             varfont,
>             "TestVariableFont-TTF{}.ttx".format(
>                 "-useProductionNames" if useProductionNames else ""
>             ),
>         )
> 
> tests/integration_test.py:213: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa59a6dd610>
> expectedTTX = 'TestVariableFont-TTF.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-TTF.ttx
> +++ <generated>
> @@ -461,28 +461,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> _____________ IntegrationTest.test_compileVariableTTF[defcon-True] _____________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a8df2c0>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa59a6bb9e0>
> useProductionNames = True
> 
>     def test_compileVariableTTF(self, designspace, useProductionNames):
>         varfont = compileVariableTTF(designspace, useProductionNames=useProductionNames)
> >       expectTTX(
>             varfont,
>             "TestVariableFont-TTF{}.ttx".format(
>                 "-useProductionNames" if useProductionNames else ""
>             ),
>         )
> 
> tests/integration_test.py:213: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa59a2e4a10>
> expectedTTX = 'TestVariableFont-TTF-useProductionNames.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-TTF-useProductionNames.ttx
> +++ <generated>
> @@ -464,28 +464,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> ____________ IntegrationTest.test_compileVariableTTF[defcon-False] _____________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a8df1d0>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa59a6b9790>
> useProductionNames = False
> 
>     def test_compileVariableTTF(self, designspace, useProductionNames):
>         varfont = compileVariableTTF(designspace, useProductionNames=useProductionNames)
> >       expectTTX(
>             varfont,
>             "TestVariableFont-TTF{}.ttx".format(
>                 "-useProductionNames" if useProductionNames else ""
>             ),
>         )
> 
> tests/integration_test.py:213: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa59a6bad80>
> expectedTTX = 'TestVariableFont-TTF.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-TTF.ttx
> +++ <generated>
> @@ -461,28 +461,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> ____________ IntegrationTest.test_compileVariableCFF2[defcon-None] _____________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a8de630>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa59a7b3d10>
> useProductionNames = None
> 
>     def test_compileVariableCFF2(self, designspace, useProductionNames):
>         varfont = compileVariableCFF2(
>             designspace, useProductionNames=useProductionNames
>         )
> >       expectTTX(
>             varfont,
>             "TestVariableFont-CFF2{}.ttx".format(
>                 "-useProductionNames" if useProductionNames else ""
>             ),
>         )
> 
> tests/integration_test.py:224: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa59a7b1e20>
> expectedTTX = 'TestVariableFont-CFF2.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2.ttx
> +++ <generated>
> @@ -458,28 +458,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> ____________ IntegrationTest.test_compileVariableCFF2[defcon-True] _____________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a8df7d0>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa59a7a30e0>
> useProductionNames = True
> 
>     def test_compileVariableCFF2(self, designspace, useProductionNames):
>         varfont = compileVariableCFF2(
>             designspace, useProductionNames=useProductionNames
>         )
> >       expectTTX(
>             varfont,
>             "TestVariableFont-CFF2{}.ttx".format(
>                 "-useProductionNames" if useProductionNames else ""
>             ),
>         )
> 
> tests/integration_test.py:224: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa59bd76d80>
> expectedTTX = 'TestVariableFont-CFF2-useProductionNames.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2-useProductionNames.ttx
> +++ <generated>
> @@ -461,28 +461,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> ____________ IntegrationTest.test_compileVariableCFF2[defcon-False] ____________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a8df6e0>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa59a189430>
> useProductionNames = False
> 
>     def test_compileVariableCFF2(self, designspace, useProductionNames):
>         varfont = compileVariableCFF2(
>             designspace, useProductionNames=useProductionNames
>         )
> >       expectTTX(
>             varfont,
>             "TestVariableFont-CFF2{}.ttx".format(
>                 "-useProductionNames" if useProductionNames else ""
>             ),
>         )
> 
> tests/integration_test.py:224: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa59a75a2a0>
> expectedTTX = 'TestVariableFont-CFF2.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2.ttx
> +++ <generated>
> @@ -458,28 +458,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> ________ IntegrationTest.test_compileVariableCFF2_subroutinized[defcon] ________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a8dfbc0>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa59a7a38c0>
> 
>     def test_compileVariableCFF2_subroutinized(self, designspace):
>         varfont = compileVariableCFF2(designspace, optimizeCFF=2)
> >       expectTTX(varfont, "TestVariableFont-CFF2-cffsubr.ttx")
> 
> tests/integration_test.py:233: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa59a7a2f60>
> expectedTTX = 'TestVariableFont-CFF2-cffsubr.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2-cffsubr.ttx
> +++ <generated>
> @@ -467,28 +467,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> _ IntegrationTest.test_drop_glyph_names_variable[defcon-VariableTTF-options0-TestVariableFont-TTF-post3.ttx] _
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a924b00>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa59a69b770>
> output_format = 'VariableTTF', options = {}
> expected_ttx = 'TestVariableFont-TTF-post3.ttx'
> 
>     @pytest.mark.parametrize(
>         "output_format, options, expected_ttx",
>         [
>             ("VariableTTF", {}, "TestVariableFont-TTF-post3.ttx"),
>             ("VariableCFF2", {}, "TestVariableFont-CFF2-post3.ttx"),
>         ],
>     )
>     def test_drop_glyph_names_variable(
>         self, designspace, output_format, options, expected_ttx
>     ):
>         # set keepGlyphNames in the default UFO.lib where postProcessor finds it
>         designspace.findDefault().font.lib[KEEP_GLYPH_NAMES] = False
>         compile_func = globals()[f"compile{output_format}"]
>         ttf = compile_func(designspace, **options)
> >       expectTTX(ttf, expected_ttx)
> 
> tests/integration_test.py:270: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa59a6e87d0>
> expectedTTX = 'TestVariableFont-TTF-post3.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-TTF-post3.ttx
> +++ <generated>
> @@ -447,28 +447,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> _ IntegrationTest.test_drop_glyph_names_variable[defcon-VariableCFF2-options1-TestVariableFont-CFF2-post3.ttx] _
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a924b90>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa59a17d790>
> output_format = 'VariableCFF2', options = {}
> expected_ttx = 'TestVariableFont-CFF2-post3.ttx'
> 
>     @pytest.mark.parametrize(
>         "output_format, options, expected_ttx",
>         [
>             ("VariableTTF", {}, "TestVariableFont-TTF-post3.ttx"),
>             ("VariableCFF2", {}, "TestVariableFont-CFF2-post3.ttx"),
>         ],
>     )
>     def test_drop_glyph_names_variable(
>         self, designspace, output_format, options, expected_ttx
>     ):
>         # set keepGlyphNames in the default UFO.lib where postProcessor finds it
>         designspace.findDefault().font.lib[KEEP_GLYPH_NAMES] = False
>         compile_func = globals()[f"compile{output_format}"]
>         ttf = compile_func(designspace, **options)
> >       expectTTX(ttf, expected_ttx)
> 
> tests/integration_test.py:270: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa59a747e60>
> expectedTTX = 'TestVariableFont-CFF2-post3.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2-post3.ttx
> +++ <generated>
> @@ -444,28 +444,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> _______________ IntegrationTest.test_compileVariableTTFs[defcon] _______________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a9258b0>
> designspace_v5 = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa59a7427b0>
> 
>     def test_compileVariableTTFs(self, designspace_v5):
>         fonts = compileVariableTTFs(designspace_v5)
>     
>         # NOTE: Test dumps were generated like this:
>         # for k, font in fonts.items():
>         #     font.recalcTimestamp = False
>         #     font["head"].created, font["head"].modified = 3570196637, 3601822698
>         #     font["head"].checkSumAdjustment = 0x12345678
>         #     font.saveXML(f"tests/data/DSv5/{k}-TTF.ttx")
>     
>         assert set(fonts.keys()) == {
>             "MutatorSansVariable_Weight_Width",
>             "MutatorSansVariable_Weight",
>             "MutatorSansVariable_Width",
>             "MutatorSerifVariable_Width",
>         }
>         # The STAT table is set to [SRIF=0, wght=[300, 700], wdth=[50, 200]] + S1 + S2
> >       expectTTX(
>             fonts["MutatorSansVariable_Weight_Width"],
>             "DSv5/MutatorSansVariable_Weight_Width-TTF.ttx",
>         )
> 
> tests/integration_test.py:364: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa59a698d10>
> expectedTTX = 'DSv5/MutatorSansVariable_Weight_Width-TTF.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- DSv5/MutatorSansVariable_Weight_Width-TTF.ttx
> +++ <generated>
> @@ -576,103 +576,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=2 -->
> -        <!-- RegionCount=8 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.7"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.0"/>
> -            <EndCoord value="0.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.7"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.0"/>
> -            <EndCoord value="0.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.0"/>
> -            <EndCoord value="0.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="3">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.7"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="4">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.7"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="5">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.7"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.5691"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="6">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.0"/>
> -            <EndCoord value="0.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="7">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> @@ -808,6 +712,7 @@
>    </STAT>
>  
>    <avar>
> +    <version major="1" minor="0"/>
>      <segment axis="wght">
>        <mapping from="-1.0" to="-1.0"/>
>        <mapping from="0.0" to="0.0"/>
> ______________ IntegrationTest.test_compileVariableCFF2s[defcon] _______________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a925bb0>
> designspace_v5 = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa59a7423f0>
> 
>     def test_compileVariableCFF2s(self, designspace_v5):
>         fonts = compileVariableCFF2s(designspace_v5)
>     
>         # NOTE: Test dumps were generated like this:
>         # for k, font in fonts.items():
>         #     font.recalcTimestamp = False
>         #     font["head"].created, font["head"].modified = 3570196637, 3601822698
>         #     font["head"].checkSumAdjustment = 0x12345678
>         #     font.saveXML(f"tests/data/DSv5/{k}-CFF2.ttx")
>     
>         assert set(fonts.keys()) == {
>             "MutatorSansVariable_Weight_Width",
>             "MutatorSansVariable_Weight",
>             "MutatorSansVariable_Width",
>             "MutatorSerifVariable_Width",
>         }
>         # The STAT table is set to [SRIF=0, wght=[300, 700], wdth=[50, 200]] + S1 + S2
> >       expectTTX(
>             fonts["MutatorSansVariable_Weight_Width"],
>             "DSv5/MutatorSansVariable_Weight_Width-CFF2.ttx",
>         )
> 
> tests/integration_test.py:401: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa59a7b3650>
> expectedTTX = 'DSv5/MutatorSansVariable_Weight_Width-CFF2.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- DSv5/MutatorSansVariable_Weight_Width-CFF2.ttx
> +++ <generated>
> @@ -665,103 +665,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=2 -->
> -        <!-- RegionCount=8 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.7"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.0"/>
> -            <EndCoord value="0.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.7"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.0"/>
> -            <EndCoord value="0.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.0"/>
> -            <EndCoord value="0.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="3">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.7"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="4">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.7"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="5">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.7"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.5691"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="6">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.0"/>
> -            <EndCoord value="0.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="7">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> @@ -897,6 +801,7 @@
>    </STAT>
>  
>    <avar>
> +    <version major="1" minor="0"/>
>      <segment axis="wght">
>        <mapping from="-1.0" to="-1.0"/>
>        <mapping from="0.0" to="0.0"/>
> ______ KernFeatureWriterTest.test__groupScriptsByTagAndDirection[defcon] _______
> 
> self = <tests.featureWriters.kernFeatureWriter_test.KernFeatureWriterTest object at 0x7fa59a949dc0>
> FontClass = <class 'defcon.objects.font.Font'>
> 
>     def test__groupScriptsByTagAndDirection(self, FontClass):
>         font = FontClass()
>         font.features.text = dedent(
>             """
>             languagesystem DFLT dflt;
>             languagesystem latn dflt;
>             languagesystem latn TRK;
>             languagesystem arab dflt;
>             languagesystem arab URD;
>             languagesystem deva dflt;
>             languagesystem dev2 dflt;
>             languagesystem math dflt;
>             """
>         )
>     
>         feaFile = parseLayoutFeatures(font)
>         scripts = ast.getScriptLanguageSystems(feaFile)
> >       scriptGroups = KernFeatureWriter._groupScriptsByTagAndDirection(scripts)
> 
> tests/featureWriters/kernFeatureWriter_test.py:508: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> ufo2ft/featureWriters/kernFeatureWriter.py:260: in _groupScriptsByTagAndDirection
>     direction = unicodedata.script_horizontal_direction(scriptCode)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> script_code = 'Zmth', default = <class 'KeyError'>
> 
>     def script_horizontal_direction(
>         script_code: str, default: T | type[KeyError] = KeyError
>     ) -> HorizDirection | T:
>         """Return "RTL" for scripts that contain right-to-left characters
>         according to the Bidi_Class property. Otherwise return "LTR".
>         """
>         if script_code not in Scripts.NAMES:
>             if isinstance(default, type) and issubclass(default, KeyError):
> >               raise default(script_code)
> E               KeyError: 'Zmth'
> 
> /usr/lib/python3/dist-packages/fontTools/unicodedata/__init__.py:223: KeyError
> ____ IntegrationTest.test_optimizeCFF_subroutinize[ufoLib2-compreffor-cff1] ____
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a8decc0>
> testufo = <ufoLib2.objects.font.Font 'Some Font (Family Name) Regular (Style Name)' at 0x7fa59a0d76b0>
> cff_version = 1, subroutinizer = 'compreffor'
> expected_ttx = 'TestFont-CFF-compreffor.ttx'
> 
>     @pytest.mark.parametrize(
>         "subroutinizer, cff_version, expected_ttx",
>         [
>             (None, 1, "TestFont-CFF.ttx"),
>             ("compreffor", 1, "TestFont-CFF-compreffor.ttx"),
>             ("cffsubr", 1, "TestFont-CFF.ttx"),
>             (None, 2, "TestFont-CFF2-cffsubr.ttx"),
>             # ("compreffor", 2, "TestFont-CFF2-compreffor.ttx"),
>             ("cffsubr", 2, "TestFont-CFF2-cffsubr.ttx"),
>         ],
>         ids=[
>             "default-cff1",
>             "compreffor-cff1",
>             "cffsubr-cff1",
>             "default-cff2",
>             # "compreffor-cff2",
>             "cffsubr-cff2",
>         ],
>     )
>     def test_optimizeCFF_subroutinize(
>         self, testufo, cff_version, subroutinizer, expected_ttx
>     ):
> >       otf = compileOTF(
>             testufo, optimizeCFF=2, cffVersion=cff_version, subroutinizer=subroutinizer
>         )
> 
> tests/integration_test.py:206: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> ufo2ft/__init__.py:201: in compileOTF
>     return call_postprocessor(
> ufo2ft/__init__.py:88: in call_postprocessor
>     otf = postProcessor.process(**kwargs)
> ufo2ft/postProcessor.py:98: in process
>     self.process_cff(
> ufo2ft/postProcessor.py:123: in process_cff
>     self._subroutinize(backend, self.otf, cffOutputVersion)
> ufo2ft/postProcessor.py:331: in _subroutinize
>     subroutinize(otf, cffVersion)
> ufo2ft/postProcessor.py:335: in _subroutinize_with_compreffor
>     from compreffor import compress
> /usr/lib/python3/dist-packages/compreffor/__init__.py:68: in <module>
>     from compreffor import cxxCompressor, pyCompressor
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
>     #!/usr/bin/env python
>     #
>     # Copyright 2015 Google Inc. All Rights Reserved.
>     #
>     # Licensed under the Apache License, Version 2.0 (the "License");
>     # you may not use this file except in compliance with the License.
>     # You may obtain a copy of the License at
>     #
>     #     http://www.apache.org/licenses/LICENSE-2.0
>     #
>     # Unless required by applicable law or agreed to in writing, software
>     # distributed under the License is distributed on an "AS IS" BASIS,
>     # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>     # See the License for the specific language governing permissions and
>     # limitations under the License.
>     
>     """
>     Tool to subroutinize a CFF OpenType font. Backed by a C++ binary.
>     
>     This file is a bootstrap for the C++ edition of the FontTools compreffor.
>     It prepares the input data for the extension and reads back in the results,
>     applying them to the input font.
>     
>     Usage (command line):
>     >> ./cxxCompressor.py /path/to/font.otf
>     # font written to /path/to/font.compressed.otf
>     
>     Usage (python):
>     >> font = TTFont("/path/to/font.otf")
>     >> cxxCompressor.compreff(font)
>     >> font.save("/path/to/output.otf")
>     """
>     
>     import array
>     from io import BytesIO
>     import struct
>     import logging
>     from compreffor.pyCompressor import (
>         Compreffor, CandidateSubr, tokenCost)
> >   from compreffor import _compreffor as lib, timer
> E   ImportError: cannot import name '_compreffor' from partially initialized module 'compreffor' (most likely due to a circular import) (/usr/lib/python3/dist-packages/compreffor/__init__.py)
> 
> /usr/lib/python3/dist-packages/compreffor/cxxCompressor.py:40: ImportError
> ____________ IntegrationTest.test_compileVariableTTF[ufoLib2-None] _____________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a8df440>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa59a0e6840>
> useProductionNames = None
> 
>     def test_compileVariableTTF(self, designspace, useProductionNames):
>         varfont = compileVariableTTF(designspace, useProductionNames=useProductionNames)
> >       expectTTX(
>             varfont,
>             "TestVariableFont-TTF{}.ttx".format(
>                 "-useProductionNames" if useProductionNames else ""
>             ),
>         )
> 
> tests/integration_test.py:213: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa599f00f80>
> expectedTTX = 'TestVariableFont-TTF.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-TTF.ttx
> +++ <generated>
> @@ -461,28 +461,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> ____________ IntegrationTest.test_compileVariableTTF[ufoLib2-True] _____________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a8df500>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa599f52300>
> useProductionNames = True
> 
>     def test_compileVariableTTF(self, designspace, useProductionNames):
>         varfont = compileVariableTTF(designspace, useProductionNames=useProductionNames)
> >       expectTTX(
>             varfont,
>             "TestVariableFont-TTF{}.ttx".format(
>                 "-useProductionNames" if useProductionNames else ""
>             ),
>         )
> 
> tests/integration_test.py:213: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa599f51d30>
> expectedTTX = 'TestVariableFont-TTF-useProductionNames.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-TTF-useProductionNames.ttx
> +++ <generated>
> @@ -464,28 +464,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> ____________ IntegrationTest.test_compileVariableTTF[ufoLib2-False] ____________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a8df5c0>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa599f79580>
> useProductionNames = False
> 
>     def test_compileVariableTTF(self, designspace, useProductionNames):
>         varfont = compileVariableTTF(designspace, useProductionNames=useProductionNames)
> >       expectTTX(
>             varfont,
>             "TestVariableFont-TTF{}.ttx".format(
>                 "-useProductionNames" if useProductionNames else ""
>             ),
>         )
> 
> tests/integration_test.py:213: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa599f79e20>
> expectedTTX = 'TestVariableFont-TTF.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-TTF.ttx
> +++ <generated>
> @@ -461,28 +461,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> ____________ IntegrationTest.test_compileVariableCFF2[ufoLib2-None] ____________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a8df9b0>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa599f27800>
> useProductionNames = None
> 
>     def test_compileVariableCFF2(self, designspace, useProductionNames):
>         varfont = compileVariableCFF2(
>             designspace, useProductionNames=useProductionNames
>         )
> >       expectTTX(
>             varfont,
>             "TestVariableFont-CFF2{}.ttx".format(
>                 "-useProductionNames" if useProductionNames else ""
>             ),
>         )
> 
> tests/integration_test.py:224: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa599f266f0>
> expectedTTX = 'TestVariableFont-CFF2.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2.ttx
> +++ <generated>
> @@ -458,28 +458,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> ____________ IntegrationTest.test_compileVariableCFF2[ufoLib2-True] ____________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a8dfa40>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa599f94350>
> useProductionNames = True
> 
>     def test_compileVariableCFF2(self, designspace, useProductionNames):
>         varfont = compileVariableCFF2(
>             designspace, useProductionNames=useProductionNames
>         )
> >       expectTTX(
>             varfont,
>             "TestVariableFont-CFF2{}.ttx".format(
>                 "-useProductionNames" if useProductionNames else ""
>             ),
>         )
> 
> tests/integration_test.py:224: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa59a0d1910>
> expectedTTX = 'TestVariableFont-CFF2-useProductionNames.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2-useProductionNames.ttx
> +++ <generated>
> @@ -461,28 +461,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> ___________ IntegrationTest.test_compileVariableCFF2[ufoLib2-False] ____________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a8dfad0>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa599f26990>
> useProductionNames = False
> 
>     def test_compileVariableCFF2(self, designspace, useProductionNames):
>         varfont = compileVariableCFF2(
>             designspace, useProductionNames=useProductionNames
>         )
> >       expectTTX(
>             varfont,
>             "TestVariableFont-CFF2{}.ttx".format(
>                 "-useProductionNames" if useProductionNames else ""
>             ),
>         )
> 
> tests/integration_test.py:224: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa599f26c00>
> expectedTTX = 'TestVariableFont-CFF2.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2.ttx
> +++ <generated>
> @@ -458,28 +458,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> _______ IntegrationTest.test_compileVariableCFF2_subroutinized[ufoLib2] ________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a8dfe00>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa599f51640>
> 
>     def test_compileVariableCFF2_subroutinized(self, designspace):
>         varfont = compileVariableCFF2(designspace, optimizeCFF=2)
> >       expectTTX(varfont, "TestVariableFont-CFF2-cffsubr.ttx")
> 
> tests/integration_test.py:233: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa599f51c70>
> expectedTTX = 'TestVariableFont-CFF2-cffsubr.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2-cffsubr.ttx
> +++ <generated>
> @@ -467,28 +467,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> _ IntegrationTest.test_drop_glyph_names_variable[ufoLib2-VariableTTF-options0-TestVariableFont-TTF-post3.ttx] _
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a924c80>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa59a0f7200>
> output_format = 'VariableTTF', options = {}
> expected_ttx = 'TestVariableFont-TTF-post3.ttx'
> 
>     @pytest.mark.parametrize(
>         "output_format, options, expected_ttx",
>         [
>             ("VariableTTF", {}, "TestVariableFont-TTF-post3.ttx"),
>             ("VariableCFF2", {}, "TestVariableFont-CFF2-post3.ttx"),
>         ],
>     )
>     def test_drop_glyph_names_variable(
>         self, designspace, output_format, options, expected_ttx
>     ):
>         # set keepGlyphNames in the default UFO.lib where postProcessor finds it
>         designspace.findDefault().font.lib[KEEP_GLYPH_NAMES] = False
>         compile_func = globals()[f"compile{output_format}"]
>         ttf = compile_func(designspace, **options)
> >       expectTTX(ttf, expected_ttx)
> 
> tests/integration_test.py:270: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa59a17c8c0>
> expectedTTX = 'TestVariableFont-TTF-post3.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-TTF-post3.ttx
> +++ <generated>
> @@ -447,28 +447,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> _ IntegrationTest.test_drop_glyph_names_variable[ufoLib2-VariableCFF2-options1-TestVariableFont-CFF2-post3.ttx] _
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a924d10>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa59a0f7ce0>
> output_format = 'VariableCFF2', options = {}
> expected_ttx = 'TestVariableFont-CFF2-post3.ttx'
> 
>     @pytest.mark.parametrize(
>         "output_format, options, expected_ttx",
>         [
>             ("VariableTTF", {}, "TestVariableFont-TTF-post3.ttx"),
>             ("VariableCFF2", {}, "TestVariableFont-CFF2-post3.ttx"),
>         ],
>     )
>     def test_drop_glyph_names_variable(
>         self, designspace, output_format, options, expected_ttx
>     ):
>         # set keepGlyphNames in the default UFO.lib where postProcessor finds it
>         designspace.findDefault().font.lib[KEEP_GLYPH_NAMES] = False
>         compile_func = globals()[f"compile{output_format}"]
>         ttf = compile_func(designspace, **options)
> >       expectTTX(ttf, expected_ttx)
> 
> tests/integration_test.py:270: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa599f50410>
> expectedTTX = 'TestVariableFont-CFF2-post3.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2-post3.ttx
> +++ <generated>
> @@ -444,28 +444,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> ______________ IntegrationTest.test_compileVariableTTFs[ufoLib2] _______________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a925a30>
> designspace_v5 = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa599f87a70>
> 
>     def test_compileVariableTTFs(self, designspace_v5):
>         fonts = compileVariableTTFs(designspace_v5)
>     
>         # NOTE: Test dumps were generated like this:
>         # for k, font in fonts.items():
>         #     font.recalcTimestamp = False
>         #     font["head"].created, font["head"].modified = 3570196637, 3601822698
>         #     font["head"].checkSumAdjustment = 0x12345678
>         #     font.saveXML(f"tests/data/DSv5/{k}-TTF.ttx")
>     
>         assert set(fonts.keys()) == {
>             "MutatorSansVariable_Weight_Width",
>             "MutatorSansVariable_Weight",
>             "MutatorSansVariable_Width",
>             "MutatorSerifVariable_Width",
>         }
>         # The STAT table is set to [SRIF=0, wght=[300, 700], wdth=[50, 200]] + S1 + S2
> >       expectTTX(
>             fonts["MutatorSansVariable_Weight_Width"],
>             "DSv5/MutatorSansVariable_Weight_Width-TTF.ttx",
>         )
> 
> tests/integration_test.py:364: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa599f7a2a0>
> expectedTTX = 'DSv5/MutatorSansVariable_Weight_Width-TTF.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- DSv5/MutatorSansVariable_Weight_Width-TTF.ttx
> +++ <generated>
> @@ -576,103 +576,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=2 -->
> -        <!-- RegionCount=8 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.7"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.0"/>
> -            <EndCoord value="0.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.7"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.0"/>
> -            <EndCoord value="0.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.0"/>
> -            <EndCoord value="0.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="3">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.7"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="4">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.7"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="5">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.7"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.5691"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="6">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.0"/>
> -            <EndCoord value="0.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="7">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> @@ -808,6 +712,7 @@
>    </STAT>
>  
>    <avar>
> +    <version major="1" minor="0"/>
>      <segment axis="wght">
>        <mapping from="-1.0" to="-1.0"/>
>        <mapping from="0.0" to="0.0"/>
> ______________ IntegrationTest.test_compileVariableCFF2s[ufoLib2] ______________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fa59a925d30>
> designspace_v5 = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fa59a0e7860>
> 
>     def test_compileVariableCFF2s(self, designspace_v5):
>         fonts = compileVariableCFF2s(designspace_v5)
>     
>         # NOTE: Test dumps were generated like this:
>         # for k, font in fonts.items():
>         #     font.recalcTimestamp = False
>         #     font["head"].created, font["head"].modified = 3570196637, 3601822698
>         #     font["head"].checkSumAdjustment = 0x12345678
>         #     font.saveXML(f"tests/data/DSv5/{k}-CFF2.ttx")
>     
>         assert set(fonts.keys()) == {
>             "MutatorSansVariable_Weight_Width",
>             "MutatorSansVariable_Weight",
>             "MutatorSansVariable_Width",
>             "MutatorSerifVariable_Width",
>         }
>         # The STAT table is set to [SRIF=0, wght=[300, 700], wdth=[50, 200]] + S1 + S2
> >       expectTTX(
>             fonts["MutatorSansVariable_Weight_Width"],
>             "DSv5/MutatorSansVariable_Weight_Width-CFF2.ttx",
>         )
> 
> tests/integration_test.py:401: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fa59a0f4bc0>
> expectedTTX = 'DSv5/MutatorSansVariable_Weight_Width-CFF2.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- DSv5/MutatorSansVariable_Weight_Width-CFF2.ttx
> +++ <generated>
> @@ -665,103 +665,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=2 -->
> -        <!-- RegionCount=8 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.7"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.0"/>
> -            <EndCoord value="0.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.7"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.0"/>
> -            <EndCoord value="0.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.0"/>
> -            <EndCoord value="0.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="3">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.7"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="4">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.7"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="5">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.7"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.5691"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="6">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.0"/>
> -            <EndCoord value="0.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="7">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> @@ -897,6 +801,7 @@
>    </STAT>
>  
>    <avar>
> +    <version major="1" minor="0"/>
>      <segment axis="wght">
>        <mapping from="-1.0" to="-1.0"/>
>        <mapping from="0.0" to="0.0"/>
> ______ KernFeatureWriterTest.test__groupScriptsByTagAndDirection[ufoLib2] ______
> 
> self = <tests.featureWriters.kernFeatureWriter_test.KernFeatureWriterTest object at 0x7fa59a94a900>
> FontClass = <function FontClass.<locals>.ctor at 0x7fa59a6f4900>
> 
>     def test__groupScriptsByTagAndDirection(self, FontClass):
>         font = FontClass()
>         font.features.text = dedent(
>             """
>             languagesystem DFLT dflt;
>             languagesystem latn dflt;
>             languagesystem latn TRK;
>             languagesystem arab dflt;
>             languagesystem arab URD;
>             languagesystem deva dflt;
>             languagesystem dev2 dflt;
>             languagesystem math dflt;
>             """
>         )
>     
>         feaFile = parseLayoutFeatures(font)
>         scripts = ast.getScriptLanguageSystems(feaFile)
> >       scriptGroups = KernFeatureWriter._groupScriptsByTagAndDirection(scripts)
> 
> tests/featureWriters/kernFeatureWriter_test.py:508: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> ufo2ft/featureWriters/kernFeatureWriter.py:260: in _groupScriptsByTagAndDirection
>     direction = unicodedata.script_horizontal_direction(scriptCode)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> script_code = 'Zmth', default = <class 'KeyError'>
> 
>     def script_horizontal_direction(
>         script_code: str, default: T | type[KeyError] = KeyError
>     ) -> HorizDirection | T:
>         """Return "RTL" for scripts that contain right-to-left characters
>         according to the Bidi_Class property. Otherwise return "LTR".
>         """
>         if script_code not in Scripts.NAMES:
>             if isinstance(default, type) and issubclass(default, KeyError):
> >               raise default(script_code)
> E               KeyError: 'Zmth'
> 
> /usr/lib/python3/dist-packages/fontTools/unicodedata/__init__.py:223: KeyError
> =============================== warnings summary ===============================
> ../../../../../../usr/lib/python3/dist-packages/fs/__init__.py:4
>   /usr/lib/python3/dist-packages/fs/__init__.py:4: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
>     __import__("pkg_resources").declare_namespace(__name__)  # type: ignore
> 
> ../../../../../../usr/lib/python3/dist-packages/fs/__init__.py:4
>   /usr/lib/python3/dist-packages/fs/__init__.py:4: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('fs')`.
>   Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages
>     __import__("pkg_resources").declare_namespace(__name__)  # type: ignore
> 
> ../../../../../../usr/lib/python3/dist-packages/fs/opener/__init__.py:6
>   /usr/lib/python3/dist-packages/fs/opener/__init__.py:6: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('fs.opener')`.
>   Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages
>     __import__("pkg_resources").declare_namespace(__name__)  # type: ignore
> 
> ../../../../../../usr/lib/python3/dist-packages/pkg_resources/__init__.py:2350
>   /usr/lib/python3/dist-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('fs')`.
>   Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages
>     declare_namespace(parent)
> 
> .pybuild/cpython3_3.12_ufo2ft/build/tests/fontInfoData_test.py::GetAttrWithFallbackTest::test_head_created[defcon]
> .pybuild/cpython3_3.12_ufo2ft/build/tests/fontInfoData_test.py::GetAttrWithFallbackTest::test_head_created[ufoLib2]
>   /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_ufo2ft/build/ufo2ft/fontInfoData.py:108: DeprecationWarning: datetime.datetime.utcfromtimestamp() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.fromtimestamp(timestamp, datetime.UTC).
>     t = datetime.utcfromtimestamp(int(os.environ["SOURCE_DATE_EPOCH"]))
> 
> .pybuild/cpython3_3.12_ufo2ft/build/tests/integration_test.py: 18 warnings
> .pybuild/cpython3_3.12_ufo2ft/build/tests/outlineCompiler_test.py: 6 warnings
>   /usr/lib/python3/dist-packages/cffsubr/__init__.py:63: DeprecationWarning: path is deprecated. Use files() instead. Refer to https://importlib-resources.readthedocs.io/en/latest/using.html#migrating-from-legacy for migration advice.
>     with path(__name__, TX_EXE) as tx_cli:
> 
> -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
> =========================== short test summary info ============================
> SKIPPED [2] tests/integration_test.py:126: skia-pathops is unavailable in debian yet
> SKIPPED [2] tests/integration_test.py:135: skia-pathops is unavailable in debian yet
> SKIPPED [2] tests/preProcessor_test.py:94: skia-pathops is unavailable in debian yet
> SKIPPED [2] tests/preProcessor_test.py:200: skia-pathops is unavailable in debian yet
> FAILED tests/integration_test.py::IntegrationTest::test_optimizeCFF_subroutinize[defcon-compreffor-cff1]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTF[defcon-None]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTF[defcon-True]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTF[defcon-False]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2[defcon-None]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2[defcon-True]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2[defcon-False]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2_subroutinized[defcon]
> FAILED tests/integration_test.py::IntegrationTest::test_drop_glyph_names_variable[defcon-VariableTTF-options0-TestVariableFont-TTF-post3.ttx]
> FAILED tests/integration_test.py::IntegrationTest::test_drop_glyph_names_variable[defcon-VariableCFF2-options1-TestVariableFont-CFF2-post3.ttx]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTFs[defcon]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2s[defcon]
> FAILED tests/featureWriters/kernFeatureWriter_test.py::KernFeatureWriterTest::test__groupScriptsByTagAndDirection[defcon]
> FAILED tests/integration_test.py::IntegrationTest::test_optimizeCFF_subroutinize[ufoLib2-compreffor-cff1]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTF[ufoLib2-None]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTF[ufoLib2-True]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTF[ufoLib2-False]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2[ufoLib2-None]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2[ufoLib2-True]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2[ufoLib2-False]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2_subroutinized[ufoLib2]
> FAILED tests/integration_test.py::IntegrationTest::test_drop_glyph_names_variable[ufoLib2-VariableTTF-options0-TestVariableFont-TTF-post3.ttx]
> FAILED tests/integration_test.py::IntegrationTest::test_drop_glyph_names_variable[ufoLib2-VariableCFF2-options1-TestVariableFont-CFF2-post3.ttx]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTFs[ufoLib2]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2s[ufoLib2]
> FAILED tests/featureWriters/kernFeatureWriter_test.py::KernFeatureWriterTest::test__groupScriptsByTagAndDirection[ufoLib2]
> ============ 26 failed, 629 passed, 8 skipped, 30 warnings in 7.25s ============
> E: pybuild pybuild:395: test: plugin distutils failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_ufo2ft/build; python3.12 -m pytest tests
> I: pybuild base:310: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ufo2ft/build; python3.11 -m pytest tests
> ============================= test session starts ==============================
> platform linux -- Python 3.11.7, pytest-7.4.3, pluggy-1.3.0
> rootdir: /<<PKGBUILDDIR>>
> configfile: setup.cfg
> collected 663 items
> 
> tests/featureCompiler_test.py ...............                            [  2%]
> tests/fontInfoData_test.py ...............                               [  4%]
> tests/integration_test.py ......s.s............FFFFFFF...FF.....FF       [ 10%]
> tests/outlineCompiler_test.py .......................................... [ 16%]
> ...............................................                          [ 23%]
> tests/preProcessor_test.py ....s.....s...........                        [ 27%]
> tests/featureWriters/cursFeatureWriter_test.py ...                       [ 27%]
> tests/featureWriters/featureWriters_test.py ........                     [ 28%]
> tests/featureWriters/gdefFeatureWriter_test.py ..........                [ 30%]
> tests/featureWriters/kernFeatureWriter_test.py ..........F.............. [ 34%]
>                                                                          [ 34%]
> tests/featureWriters/markFeatureWriter_test.py ......................... [ 38%]
> ..                                                                       [ 38%]
> tests/filters/decomposeComponents_test.py ..                             [ 38%]
> tests/filters/decomposeTransformedComponents_test.py ...                 [ 39%]
> tests/filters/dottedCircle_test.py .                                     [ 39%]
> tests/filters/flattenComponents_test.py ........                         [ 40%]
> tests/filters/propagateAnchors_test.py .............                     [ 42%]
> tests/filters/sortContours_test.py ....                                  [ 42%]
> tests/filters/transformations_test.py ...............................    [ 47%]
> tests/featureCompiler_test.py ...............                            [ 49%]
> tests/fontInfoData_test.py ...............                               [ 52%]
> tests/integration_test.py ......s.s............FFFFFFF...FF.....FF       [ 58%]
> tests/outlineCompiler_test.py .......................................... [ 64%]
> ...............................................                          [ 71%]
> tests/preProcessor_test.py ....s.....s...........                        [ 74%]
> tests/featureWriters/cursFeatureWriter_test.py ...                       [ 75%]
> tests/featureWriters/featureWriters_test.py ........                     [ 76%]
> tests/featureWriters/gdefFeatureWriter_test.py ..........                [ 78%]
> tests/featureWriters/kernFeatureWriter_test.py ..........F.............. [ 81%]
>                                                                          [ 81%]
> tests/featureWriters/markFeatureWriter_test.py ......................... [ 85%]
> ..                                                                       [ 85%]
> tests/filters/decomposeComponents_test.py ..                             [ 86%]
> tests/filters/decomposeTransformedComponents_test.py ...                 [ 86%]
> tests/filters/dottedCircle_test.py .                                     [ 86%]
> tests/filters/flattenComponents_test.py ........                         [ 88%]
> tests/filters/propagateAnchors_test.py .............                     [ 90%]
> tests/filters/sortContours_test.py ....                                  [ 90%]
> tests/filters/transformations_test.py ...............................    [ 95%]
> tests/fontInfoData_test.py ..                                            [ 95%]
> tests/featureWriters/markFeatureWriter_test.py .........                 [ 96%]
> tests/filters/filters_test.py ...................                        [ 99%]
> tests/filters/transformations_test.py .                                  [100%]
> 
> =================================== FAILURES ===================================
> _____________ IntegrationTest.test_compileVariableTTF[defcon-None] _____________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f836e1d0>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f81e5350>
> useProductionNames = None
> 
>     def test_compileVariableTTF(self, designspace, useProductionNames):
>         varfont = compileVariableTTF(designspace, useProductionNames=useProductionNames)
> >       expectTTX(
>             varfont,
>             "TestVariableFont-TTF{}.ttx".format(
>                 "-useProductionNames" if useProductionNames else ""
>             ),
>         )
> 
> tests/integration_test.py:213: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f8278290>
> expectedTTX = 'TestVariableFont-TTF.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-TTF.ttx
> +++ <generated>
> @@ -461,28 +461,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> _____________ IntegrationTest.test_compileVariableTTF[defcon-True] _____________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f836e990>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f816ae90>
> useProductionNames = True
> 
>     def test_compileVariableTTF(self, designspace, useProductionNames):
>         varfont = compileVariableTTF(designspace, useProductionNames=useProductionNames)
> >       expectTTX(
>             varfont,
>             "TestVariableFont-TTF{}.ttx".format(
>                 "-useProductionNames" if useProductionNames else ""
>             ),
>         )
> 
> tests/integration_test.py:213: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f8268c10>
> expectedTTX = 'TestVariableFont-TTF-useProductionNames.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-TTF-useProductionNames.ttx
> +++ <generated>
> @@ -464,28 +464,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> ____________ IntegrationTest.test_compileVariableTTF[defcon-False] _____________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f836fa10>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f7c55a50>
> useProductionNames = False
> 
>     def test_compileVariableTTF(self, designspace, useProductionNames):
>         varfont = compileVariableTTF(designspace, useProductionNames=useProductionNames)
> >       expectTTX(
>             varfont,
>             "TestVariableFont-TTF{}.ttx".format(
>                 "-useProductionNames" if useProductionNames else ""
>             ),
>         )
> 
> tests/integration_test.py:213: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f8384590>
> expectedTTX = 'TestVariableFont-TTF.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-TTF.ttx
> +++ <generated>
> @@ -461,28 +461,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> ____________ IntegrationTest.test_compileVariableCFF2[defcon-None] _____________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f836f190>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f7ca0d90>
> useProductionNames = None
> 
>     def test_compileVariableCFF2(self, designspace, useProductionNames):
>         varfont = compileVariableCFF2(
>             designspace, useProductionNames=useProductionNames
>         )
> >       expectTTX(
>             varfont,
>             "TestVariableFont-CFF2{}.ttx".format(
>                 "-useProductionNames" if useProductionNames else ""
>             ),
>         )
> 
> tests/integration_test.py:224: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f7c19710>
> expectedTTX = 'TestVariableFont-CFF2.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2.ttx
> +++ <generated>
> @@ -458,28 +458,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> ____________ IntegrationTest.test_compileVariableCFF2[defcon-True] _____________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f836da10>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f816ab50>
> useProductionNames = True
> 
>     def test_compileVariableCFF2(self, designspace, useProductionNames):
>         varfont = compileVariableCFF2(
>             designspace, useProductionNames=useProductionNames
>         )
> >       expectTTX(
>             varfont,
>             "TestVariableFont-CFF2{}.ttx".format(
>                 "-useProductionNames" if useProductionNames else ""
>             ),
>         )
> 
> tests/integration_test.py:224: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f81de750>
> expectedTTX = 'TestVariableFont-CFF2-useProductionNames.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2-useProductionNames.ttx
> +++ <generated>
> @@ -461,28 +461,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> ____________ IntegrationTest.test_compileVariableCFF2[defcon-False] ____________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f836f990>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f7c8b950>
> useProductionNames = False
> 
>     def test_compileVariableCFF2(self, designspace, useProductionNames):
>         varfont = compileVariableCFF2(
>             designspace, useProductionNames=useProductionNames
>         )
> >       expectTTX(
>             varfont,
>             "TestVariableFont-CFF2{}.ttx".format(
>                 "-useProductionNames" if useProductionNames else ""
>             ),
>         )
> 
> tests/integration_test.py:224: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f82d4c10>
> expectedTTX = 'TestVariableFont-CFF2.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2.ttx
> +++ <generated>
> @@ -458,28 +458,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> ________ IntegrationTest.test_compileVariableCFF2_subroutinized[defcon] ________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f83b8050>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f7c1bcd0>
> 
>     def test_compileVariableCFF2_subroutinized(self, designspace):
>         varfont = compileVariableCFF2(designspace, optimizeCFF=2)
> >       expectTTX(varfont, "TestVariableFont-CFF2-cffsubr.ttx")
> 
> tests/integration_test.py:233: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f82ac8d0>
> expectedTTX = 'TestVariableFont-CFF2-cffsubr.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2-cffsubr.ttx
> +++ <generated>
> @@ -467,28 +467,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> _ IntegrationTest.test_drop_glyph_names_variable[defcon-VariableTTF-options0-TestVariableFont-TTF-post3.ttx] _
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f82302d0>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f7c18c50>
> output_format = 'VariableTTF', options = {}
> expected_ttx = 'TestVariableFont-TTF-post3.ttx'
> 
>     @pytest.mark.parametrize(
>         "output_format, options, expected_ttx",
>         [
>             ("VariableTTF", {}, "TestVariableFont-TTF-post3.ttx"),
>             ("VariableCFF2", {}, "TestVariableFont-CFF2-post3.ttx"),
>         ],
>     )
>     def test_drop_glyph_names_variable(
>         self, designspace, output_format, options, expected_ttx
>     ):
>         # set keepGlyphNames in the default UFO.lib where postProcessor finds it
>         designspace.findDefault().font.lib[KEEP_GLYPH_NAMES] = False
>         compile_func = globals()[f"compile{output_format}"]
>         ttf = compile_func(designspace, **options)
> >       expectTTX(ttf, expected_ttx)
> 
> tests/integration_test.py:270: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f829f790>
> expectedTTX = 'TestVariableFont-TTF-post3.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-TTF-post3.ttx
> +++ <generated>
> @@ -447,28 +447,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> _ IntegrationTest.test_drop_glyph_names_variable[defcon-VariableCFF2-options1-TestVariableFont-CFF2-post3.ttx] _
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f8230190>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f82acd50>
> output_format = 'VariableCFF2', options = {}
> expected_ttx = 'TestVariableFont-CFF2-post3.ttx'
> 
>     @pytest.mark.parametrize(
>         "output_format, options, expected_ttx",
>         [
>             ("VariableTTF", {}, "TestVariableFont-TTF-post3.ttx"),
>             ("VariableCFF2", {}, "TestVariableFont-CFF2-post3.ttx"),
>         ],
>     )
>     def test_drop_glyph_names_variable(
>         self, designspace, output_format, options, expected_ttx
>     ):
>         # set keepGlyphNames in the default UFO.lib where postProcessor finds it
>         designspace.findDefault().font.lib[KEEP_GLYPH_NAMES] = False
>         compile_func = globals()[f"compile{output_format}"]
>         ttf = compile_func(designspace, **options)
> >       expectTTX(ttf, expected_ttx)
> 
> tests/integration_test.py:270: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f7c88a10>
> expectedTTX = 'TestVariableFont-CFF2-post3.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2-post3.ttx
> +++ <generated>
> @@ -444,28 +444,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> _______________ IntegrationTest.test_compileVariableTTFs[defcon] _______________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f83a4ed0>
> designspace_v5 = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f82af950>
> 
>     def test_compileVariableTTFs(self, designspace_v5):
>         fonts = compileVariableTTFs(designspace_v5)
>     
>         # NOTE: Test dumps were generated like this:
>         # for k, font in fonts.items():
>         #     font.recalcTimestamp = False
>         #     font["head"].created, font["head"].modified = 3570196637, 3601822698
>         #     font["head"].checkSumAdjustment = 0x12345678
>         #     font.saveXML(f"tests/data/DSv5/{k}-TTF.ttx")
>     
>         assert set(fonts.keys()) == {
>             "MutatorSansVariable_Weight_Width",
>             "MutatorSansVariable_Weight",
>             "MutatorSansVariable_Width",
>             "MutatorSerifVariable_Width",
>         }
>         # The STAT table is set to [SRIF=0, wght=[300, 700], wdth=[50, 200]] + S1 + S2
> >       expectTTX(
>             fonts["MutatorSansVariable_Weight_Width"],
>             "DSv5/MutatorSansVariable_Weight_Width-TTF.ttx",
>         )
> 
> tests/integration_test.py:364: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f7be99d0>
> expectedTTX = 'DSv5/MutatorSansVariable_Weight_Width-TTF.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- DSv5/MutatorSansVariable_Weight_Width-TTF.ttx
> +++ <generated>
> @@ -576,103 +576,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=2 -->
> -        <!-- RegionCount=8 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.7"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.0"/>
> -            <EndCoord value="0.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.7"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.0"/>
> -            <EndCoord value="0.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.0"/>
> -            <EndCoord value="0.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="3">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.7"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="4">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.7"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="5">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.7"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.5691"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="6">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.0"/>
> -            <EndCoord value="0.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="7">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> @@ -808,6 +712,7 @@
>    </STAT>
>  
>    <avar>
> +    <version major="1" minor="0"/>
>      <segment axis="wght">
>        <mapping from="-1.0" to="-1.0"/>
>        <mapping from="0.0" to="0.0"/>
> ______________ IntegrationTest.test_compileVariableCFF2s[defcon] _______________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f83a6b10>
> designspace_v5 = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f7beaa50>
> 
>     def test_compileVariableCFF2s(self, designspace_v5):
>         fonts = compileVariableCFF2s(designspace_v5)
>     
>         # NOTE: Test dumps were generated like this:
>         # for k, font in fonts.items():
>         #     font.recalcTimestamp = False
>         #     font["head"].created, font["head"].modified = 3570196637, 3601822698
>         #     font["head"].checkSumAdjustment = 0x12345678
>         #     font.saveXML(f"tests/data/DSv5/{k}-CFF2.ttx")
>     
>         assert set(fonts.keys()) == {
>             "MutatorSansVariable_Weight_Width",
>             "MutatorSansVariable_Weight",
>             "MutatorSansVariable_Width",
>             "MutatorSerifVariable_Width",
>         }
>         # The STAT table is set to [SRIF=0, wght=[300, 700], wdth=[50, 200]] + S1 + S2
> >       expectTTX(
>             fonts["MutatorSansVariable_Weight_Width"],
>             "DSv5/MutatorSansVariable_Weight_Width-CFF2.ttx",
>         )
> 
> tests/integration_test.py:401: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f7b11f10>
> expectedTTX = 'DSv5/MutatorSansVariable_Weight_Width-CFF2.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- DSv5/MutatorSansVariable_Weight_Width-CFF2.ttx
> +++ <generated>
> @@ -665,103 +665,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=2 -->
> -        <!-- RegionCount=8 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.7"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.0"/>
> -            <EndCoord value="0.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.7"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.0"/>
> -            <EndCoord value="0.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.0"/>
> -            <EndCoord value="0.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="3">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.7"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="4">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.7"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="5">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.7"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.5691"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="6">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.0"/>
> -            <EndCoord value="0.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="7">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> @@ -897,6 +801,7 @@
>    </STAT>
>  
>    <avar>
> +    <version major="1" minor="0"/>
>      <segment axis="wght">
>        <mapping from="-1.0" to="-1.0"/>
>        <mapping from="0.0" to="0.0"/>
> ______ KernFeatureWriterTest.test__groupScriptsByTagAndDirection[defcon] _______
> 
> self = <tests.featureWriters.kernFeatureWriter_test.KernFeatureWriterTest object at 0x7fd2f7da8e10>
> FontClass = <class 'defcon.objects.font.Font'>
> 
>     def test__groupScriptsByTagAndDirection(self, FontClass):
>         font = FontClass()
>         font.features.text = dedent(
>             """
>             languagesystem DFLT dflt;
>             languagesystem latn dflt;
>             languagesystem latn TRK;
>             languagesystem arab dflt;
>             languagesystem arab URD;
>             languagesystem deva dflt;
>             languagesystem dev2 dflt;
>             languagesystem math dflt;
>             """
>         )
>     
>         feaFile = parseLayoutFeatures(font)
>         scripts = ast.getScriptLanguageSystems(feaFile)
> >       scriptGroups = KernFeatureWriter._groupScriptsByTagAndDirection(scripts)
> 
> tests/featureWriters/kernFeatureWriter_test.py:508: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> ufo2ft/featureWriters/kernFeatureWriter.py:260: in _groupScriptsByTagAndDirection
>     direction = unicodedata.script_horizontal_direction(scriptCode)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> script_code = 'Zmth', default = <class 'KeyError'>
> 
>     def script_horizontal_direction(
>         script_code: str, default: T | type[KeyError] = KeyError
>     ) -> HorizDirection | T:
>         """Return "RTL" for scripts that contain right-to-left characters
>         according to the Bidi_Class property. Otherwise return "LTR".
>         """
>         if script_code not in Scripts.NAMES:
>             if isinstance(default, type) and issubclass(default, KeyError):
> >               raise default(script_code)
> E               KeyError: 'Zmth'
> 
> /usr/lib/python3/dist-packages/fontTools/unicodedata/__init__.py:223: KeyError
> ____________ IntegrationTest.test_compileVariableTTF[ufoLib2-None] _____________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f836f090>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f7951d10>
> useProductionNames = None
> 
>     def test_compileVariableTTF(self, designspace, useProductionNames):
>         varfont = compileVariableTTF(designspace, useProductionNames=useProductionNames)
> >       expectTTX(
>             varfont,
>             "TestVariableFont-TTF{}.ttx".format(
>                 "-useProductionNames" if useProductionNames else ""
>             ),
>         )
> 
> tests/integration_test.py:213: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f82f49d0>
> expectedTTX = 'TestVariableFont-TTF.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-TTF.ttx
> +++ <generated>
> @@ -461,28 +461,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> ____________ IntegrationTest.test_compileVariableTTF[ufoLib2-True] _____________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f836f110>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f7c97ed0>
> useProductionNames = True
> 
>     def test_compileVariableTTF(self, designspace, useProductionNames):
>         varfont = compileVariableTTF(designspace, useProductionNames=useProductionNames)
> >       expectTTX(
>             varfont,
>             "TestVariableFont-TTF{}.ttx".format(
>                 "-useProductionNames" if useProductionNames else ""
>             ),
>         )
> 
> tests/integration_test.py:213: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f7a71650>
> expectedTTX = 'TestVariableFont-TTF-useProductionNames.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-TTF-useProductionNames.ttx
> +++ <generated>
> @@ -464,28 +464,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> ____________ IntegrationTest.test_compileVariableTTF[ufoLib2-False] ____________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f836ef10>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f8168bd0>
> useProductionNames = False
> 
>     def test_compileVariableTTF(self, designspace, useProductionNames):
>         varfont = compileVariableTTF(designspace, useProductionNames=useProductionNames)
> >       expectTTX(
>             varfont,
>             "TestVariableFont-TTF{}.ttx".format(
>                 "-useProductionNames" if useProductionNames else ""
>             ),
>         )
> 
> tests/integration_test.py:213: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f7dab190>
> expectedTTX = 'TestVariableFont-TTF.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-TTF.ttx
> +++ <generated>
> @@ -461,28 +461,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> ____________ IntegrationTest.test_compileVariableCFF2[ufoLib2-None] ____________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f836d110>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f7c77790>
> useProductionNames = None
> 
>     def test_compileVariableCFF2(self, designspace, useProductionNames):
>         varfont = compileVariableCFF2(
>             designspace, useProductionNames=useProductionNames
>         )
> >       expectTTX(
>             varfont,
>             "TestVariableFont-CFF2{}.ttx".format(
>                 "-useProductionNames" if useProductionNames else ""
>             ),
>         )
> 
> tests/integration_test.py:224: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f7b371d0>
> expectedTTX = 'TestVariableFont-CFF2.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2.ttx
> +++ <generated>
> @@ -458,28 +458,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> ____________ IntegrationTest.test_compileVariableCFF2[ufoLib2-True] ____________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f836c190>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f79f7610>
> useProductionNames = True
> 
>     def test_compileVariableCFF2(self, designspace, useProductionNames):
>         varfont = compileVariableCFF2(
>             designspace, useProductionNames=useProductionNames
>         )
> >       expectTTX(
>             varfont,
>             "TestVariableFont-CFF2{}.ttx".format(
>                 "-useProductionNames" if useProductionNames else ""
>             ),
>         )
> 
> tests/integration_test.py:224: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f7bf6690>
> expectedTTX = 'TestVariableFont-CFF2-useProductionNames.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2-useProductionNames.ttx
> +++ <generated>
> @@ -461,28 +461,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> ___________ IntegrationTest.test_compileVariableCFF2[ufoLib2-False] ____________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f836c5d0>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f8114f90>
> useProductionNames = False
> 
>     def test_compileVariableCFF2(self, designspace, useProductionNames):
>         varfont = compileVariableCFF2(
>             designspace, useProductionNames=useProductionNames
>         )
> >       expectTTX(
>             varfont,
>             "TestVariableFont-CFF2{}.ttx".format(
>                 "-useProductionNames" if useProductionNames else ""
>             ),
>         )
> 
> tests/integration_test.py:224: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f79524d0>
> expectedTTX = 'TestVariableFont-CFF2.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2.ttx
> +++ <generated>
> @@ -458,28 +458,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> _______ IntegrationTest.test_compileVariableCFF2_subroutinized[ufoLib2] ________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f83b8250>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f8169c90>
> 
>     def test_compileVariableCFF2_subroutinized(self, designspace):
>         varfont = compileVariableCFF2(designspace, optimizeCFF=2)
> >       expectTTX(varfont, "TestVariableFont-CFF2-cffsubr.ttx")
> 
> tests/integration_test.py:233: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f7939cd0>
> expectedTTX = 'TestVariableFont-CFF2-cffsubr.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2-cffsubr.ttx
> +++ <generated>
> @@ -467,28 +467,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> _ IntegrationTest.test_drop_glyph_names_variable[ufoLib2-VariableTTF-options0-TestVariableFont-TTF-post3.ttx] _
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f8231790>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f6836510>
> output_format = 'VariableTTF', options = {}
> expected_ttx = 'TestVariableFont-TTF-post3.ttx'
> 
>     @pytest.mark.parametrize(
>         "output_format, options, expected_ttx",
>         [
>             ("VariableTTF", {}, "TestVariableFont-TTF-post3.ttx"),
>             ("VariableCFF2", {}, "TestVariableFont-CFF2-post3.ttx"),
>         ],
>     )
>     def test_drop_glyph_names_variable(
>         self, designspace, output_format, options, expected_ttx
>     ):
>         # set keepGlyphNames in the default UFO.lib where postProcessor finds it
>         designspace.findDefault().font.lib[KEEP_GLYPH_NAMES] = False
>         compile_func = globals()[f"compile{output_format}"]
>         ttf = compile_func(designspace, **options)
> >       expectTTX(ttf, expected_ttx)
> 
> tests/integration_test.py:270: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f7cd8910>
> expectedTTX = 'TestVariableFont-TTF-post3.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-TTF-post3.ttx
> +++ <generated>
> @@ -447,28 +447,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> _ IntegrationTest.test_drop_glyph_names_variable[ufoLib2-VariableCFF2-options1-TestVariableFont-CFF2-post3.ttx] _
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f82306d0>
> designspace = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f79d7b90>
> output_format = 'VariableCFF2', options = {}
> expected_ttx = 'TestVariableFont-CFF2-post3.ttx'
> 
>     @pytest.mark.parametrize(
>         "output_format, options, expected_ttx",
>         [
>             ("VariableTTF", {}, "TestVariableFont-TTF-post3.ttx"),
>             ("VariableCFF2", {}, "TestVariableFont-CFF2-post3.ttx"),
>         ],
>     )
>     def test_drop_glyph_names_variable(
>         self, designspace, output_format, options, expected_ttx
>     ):
>         # set keepGlyphNames in the default UFO.lib where postProcessor finds it
>         designspace.findDefault().font.lib[KEEP_GLYPH_NAMES] = False
>         compile_func = globals()[f"compile{output_format}"]
>         ttf = compile_func(designspace, **options)
> >       expectTTX(ttf, expected_ttx)
> 
> tests/integration_test.py:270: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f79d6710>
> expectedTTX = 'TestVariableFont-CFF2-post3.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- TestVariableFont-CFF2-post3.ttx
> +++ <generated>
> @@ -444,28 +444,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=1 -->
> -        <!-- RegionCount=3 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.36365"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.36365"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> ______________ IntegrationTest.test_compileVariableTTFs[ufoLib2] _______________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f83a5510>
> designspace_v5 = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f68050d0>
> 
>     def test_compileVariableTTFs(self, designspace_v5):
>         fonts = compileVariableTTFs(designspace_v5)
>     
>         # NOTE: Test dumps were generated like this:
>         # for k, font in fonts.items():
>         #     font.recalcTimestamp = False
>         #     font["head"].created, font["head"].modified = 3570196637, 3601822698
>         #     font["head"].checkSumAdjustment = 0x12345678
>         #     font.saveXML(f"tests/data/DSv5/{k}-TTF.ttx")
>     
>         assert set(fonts.keys()) == {
>             "MutatorSansVariable_Weight_Width",
>             "MutatorSansVariable_Weight",
>             "MutatorSansVariable_Width",
>             "MutatorSerifVariable_Width",
>         }
>         # The STAT table is set to [SRIF=0, wght=[300, 700], wdth=[50, 200]] + S1 + S2
> >       expectTTX(
>             fonts["MutatorSansVariable_Weight_Width"],
>             "DSv5/MutatorSansVariable_Weight_Width-TTF.ttx",
>         )
> 
> tests/integration_test.py:364: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f68bec10>
> expectedTTX = 'DSv5/MutatorSansVariable_Weight_Width-TTF.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- DSv5/MutatorSansVariable_Weight_Width-TTF.ttx
> +++ <generated>
> @@ -576,103 +576,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=2 -->
> -        <!-- RegionCount=8 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.7"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.0"/>
> -            <EndCoord value="0.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.7"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.0"/>
> -            <EndCoord value="0.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.0"/>
> -            <EndCoord value="0.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="3">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.7"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="4">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.7"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="5">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.7"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.5691"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="6">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.0"/>
> -            <EndCoord value="0.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="7">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> @@ -808,6 +712,7 @@
>    </STAT>
>  
>    <avar>
> +    <version major="1" minor="0"/>
>      <segment axis="wght">
>        <mapping from="-1.0" to="-1.0"/>
>        <mapping from="0.0" to="0.0"/>
> ______________ IntegrationTest.test_compileVariableCFF2s[ufoLib2] ______________
> 
> self = <tests.integration_test.IntegrationTest object at 0x7fd2f83a6b90>
> designspace_v5 = <fontTools.designspaceLib.DesignSpaceDocument object at 0x7fd2f682bc50>
> 
>     def test_compileVariableCFF2s(self, designspace_v5):
>         fonts = compileVariableCFF2s(designspace_v5)
>     
>         # NOTE: Test dumps were generated like this:
>         # for k, font in fonts.items():
>         #     font.recalcTimestamp = False
>         #     font["head"].created, font["head"].modified = 3570196637, 3601822698
>         #     font["head"].checkSumAdjustment = 0x12345678
>         #     font.saveXML(f"tests/data/DSv5/{k}-CFF2.ttx")
>     
>         assert set(fonts.keys()) == {
>             "MutatorSansVariable_Weight_Width",
>             "MutatorSansVariable_Weight",
>             "MutatorSansVariable_Width",
>             "MutatorSerifVariable_Width",
>         }
>         # The STAT table is set to [SRIF=0, wght=[300, 700], wdth=[50, 200]] + S1 + S2
> >       expectTTX(
>             fonts["MutatorSansVariable_Weight_Width"],
>             "DSv5/MutatorSansVariable_Weight_Width-CFF2.ttx",
>         )
> 
> tests/integration_test.py:401: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> font = <fontTools.ttLib.ttFont.TTFont object at 0x7fd2f68f8610>
> expectedTTX = 'DSv5/MutatorSansVariable_Weight_Width-CFF2.ttx', tables = None
> 
>     def expectTTX(font, expectedTTX, tables=None):
>         with open(getpath(expectedTTX), encoding="utf-8") as f:
>             expected = readLines(f)
>         font.recalcTimestamp = False
>         font["head"].created, font["head"].modified = 3570196637, 3601822698
>         font["head"].checkSumAdjustment = 0x12345678
>         f = io.StringIO()
>         font.saveXML(f, tables=tables)
>     
>         actual = readLines(f)
>         if actual != expected:
>             for line in difflib.unified_diff(
>                 expected, actual, fromfile=expectedTTX, tofile="<generated>"
>             ):
>                 sys.stderr.write(line)
> >           pytest.fail("TTX output is different from expected")
> E           Failed: TTX output is different from expected
> 
> tests/integration_test.py:61: Failed
> ----------------------------- Captured stderr call -----------------------------
> --- DSv5/MutatorSansVariable_Weight_Width-CFF2.ttx
> +++ <generated>
> @@ -665,103 +665,7 @@
>        <Format value="1"/>
>        <VarRegionList>
>          <!-- RegionAxisCount=2 -->
> -        <!-- RegionCount=8 -->
> -        <Region index="0">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.7"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.0"/>
> -            <EndCoord value="0.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="1">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.7"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.0"/>
> -            <EndCoord value="0.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="2">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.0"/>
> -            <EndCoord value="0.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="3">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.7"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="4">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.7"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="5">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.7"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.5691"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="6">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="0.0"/>
> -            <EndCoord value="0.0"/>
> -          </VarRegionAxis>
> -        </Region>
> -        <Region index="7">
> -          <VarRegionAxis index="0">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -          <VarRegionAxis index="1">
> -            <StartCoord value="0.0"/>
> -            <PeakCoord value="1.0"/>
> -            <EndCoord value="1.0"/>
> -          </VarRegionAxis>
> -        </Region>
> +        <!-- RegionCount=0 -->
>        </VarRegionList>
>        <!-- VarDataCount=1 -->
>        <VarData index="0">
> @@ -897,6 +801,7 @@
>    </STAT>
>  
>    <avar>
> +    <version major="1" minor="0"/>
>      <segment axis="wght">
>        <mapping from="-1.0" to="-1.0"/>
>        <mapping from="0.0" to="0.0"/>
> ______ KernFeatureWriterTest.test__groupScriptsByTagAndDirection[ufoLib2] ______
> 
> self = <tests.featureWriters.kernFeatureWriter_test.KernFeatureWriterTest object at 0x7fd2f7da8650>
> FontClass = <function FontClass.<locals>.ctor at 0x7fd2f7a8f420>
> 
>     def test__groupScriptsByTagAndDirection(self, FontClass):
>         font = FontClass()
>         font.features.text = dedent(
>             """
>             languagesystem DFLT dflt;
>             languagesystem latn dflt;
>             languagesystem latn TRK;
>             languagesystem arab dflt;
>             languagesystem arab URD;
>             languagesystem deva dflt;
>             languagesystem dev2 dflt;
>             languagesystem math dflt;
>             """
>         )
>     
>         feaFile = parseLayoutFeatures(font)
>         scripts = ast.getScriptLanguageSystems(feaFile)
> >       scriptGroups = KernFeatureWriter._groupScriptsByTagAndDirection(scripts)
> 
> tests/featureWriters/kernFeatureWriter_test.py:508: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> ufo2ft/featureWriters/kernFeatureWriter.py:260: in _groupScriptsByTagAndDirection
>     direction = unicodedata.script_horizontal_direction(scriptCode)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> script_code = 'Zmth', default = <class 'KeyError'>
> 
>     def script_horizontal_direction(
>         script_code: str, default: T | type[KeyError] = KeyError
>     ) -> HorizDirection | T:
>         """Return "RTL" for scripts that contain right-to-left characters
>         according to the Bidi_Class property. Otherwise return "LTR".
>         """
>         if script_code not in Scripts.NAMES:
>             if isinstance(default, type) and issubclass(default, KeyError):
> >               raise default(script_code)
> E               KeyError: 'Zmth'
> 
> /usr/lib/python3/dist-packages/fontTools/unicodedata/__init__.py:223: KeyError
> =============================== warnings summary ===============================
> ../../../../../../usr/lib/python3/dist-packages/fs/__init__.py:4
>   /usr/lib/python3/dist-packages/fs/__init__.py:4: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
>     __import__("pkg_resources").declare_namespace(__name__)  # type: ignore
> 
> ../../../../../../usr/lib/python3/dist-packages/fs/__init__.py:4
>   /usr/lib/python3/dist-packages/fs/__init__.py:4: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('fs')`.
>   Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages
>     __import__("pkg_resources").declare_namespace(__name__)  # type: ignore
> 
> ../../../../../../usr/lib/python3/dist-packages/fs/opener/__init__.py:6
>   /usr/lib/python3/dist-packages/fs/opener/__init__.py:6: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('fs.opener')`.
>   Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages
>     __import__("pkg_resources").declare_namespace(__name__)  # type: ignore
> 
> ../../../../../../usr/lib/python3/dist-packages/pkg_resources/__init__.py:2350
>   /usr/lib/python3/dist-packages/pkg_resources/__init__.py:2350: DeprecationWarning: Deprecated call to `pkg_resources.declare_namespace('fs')`.
>   Implementing implicit namespace packages (as specified in PEP 420) is preferred to `pkg_resources.declare_namespace`. See https://setuptools.pypa.io/en/latest/references/keywords.html#keyword-namespace-packages
>     declare_namespace(parent)
> 
> .pybuild/cpython3_3.11_ufo2ft/build/tests/integration_test.py: 18 warnings
> .pybuild/cpython3_3.11_ufo2ft/build/tests/outlineCompiler_test.py: 6 warnings
>   /usr/lib/python3/dist-packages/cffsubr/__init__.py:63: DeprecationWarning: path is deprecated. Use files() instead. Refer to https://importlib-resources.readthedocs.io/en/latest/using.html#migrating-from-legacy for migration advice.
>     with path(__name__, TX_EXE) as tx_cli:
> 
> -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
> =========================== short test summary info ============================
> SKIPPED [2] tests/integration_test.py:126: skia-pathops is unavailable in debian yet
> SKIPPED [2] tests/integration_test.py:135: skia-pathops is unavailable in debian yet
> SKIPPED [2] tests/preProcessor_test.py:94: skia-pathops is unavailable in debian yet
> SKIPPED [2] tests/preProcessor_test.py:200: skia-pathops is unavailable in debian yet
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTF[defcon-None]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTF[defcon-True]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTF[defcon-False]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2[defcon-None]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2[defcon-True]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2[defcon-False]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2_subroutinized[defcon]
> FAILED tests/integration_test.py::IntegrationTest::test_drop_glyph_names_variable[defcon-VariableTTF-options0-TestVariableFont-TTF-post3.ttx]
> FAILED tests/integration_test.py::IntegrationTest::test_drop_glyph_names_variable[defcon-VariableCFF2-options1-TestVariableFont-CFF2-post3.ttx]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTFs[defcon]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2s[defcon]
> FAILED tests/featureWriters/kernFeatureWriter_test.py::KernFeatureWriterTest::test__groupScriptsByTagAndDirection[defcon]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTF[ufoLib2-None]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTF[ufoLib2-True]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTF[ufoLib2-False]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2[ufoLib2-None]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2[ufoLib2-True]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2[ufoLib2-False]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2_subroutinized[ufoLib2]
> FAILED tests/integration_test.py::IntegrationTest::test_drop_glyph_names_variable[ufoLib2-VariableTTF-options0-TestVariableFont-TTF-post3.ttx]
> FAILED tests/integration_test.py::IntegrationTest::test_drop_glyph_names_variable[ufoLib2-VariableCFF2-options1-TestVariableFont-CFF2-post3.ttx]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableTTFs[ufoLib2]
> FAILED tests/integration_test.py::IntegrationTest::test_compileVariableCFF2s[ufoLib2]
> FAILED tests/featureWriters/kernFeatureWriter_test.py::KernFeatureWriterTest::test__groupScriptsByTagAndDirection[ufoLib2]
> ============ 24 failed, 631 passed, 8 skipped, 28 warnings in 6.74s ============
> E: pybuild pybuild:395: test: plugin distutils failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_ufo2ft/build; python3.11 -m pytest tests
> dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.12 3.11" returned exit code 13


The full build log is available from:
http://qa-logs.debian.net/2023/12/12/ufo2ft_2.30.0-1_unstable.log

All bugs filed during this archive rebuild are listed at:
https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20231212;users=lucas@debian.org
or:
https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20231212&fusertaguser=lucas@debian.org&allbugs=1&cseverity=1&ctags=1&caffected=1#results

A list of current common problems and possible solutions is available at
http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute!

If you reassign this bug to another package, please mark it as 'affects'-ing
this package. See https://www.debian.org/Bugs/server-control#affects

If you fail to reproduce this, please provide a build log and diff it with mine
so that we can identify if something relevant changed in the meantime.


Reply to: