diff options
author | Rasmus Andersson <rasmus@notion.se> | 2018-09-03 22:55:49 +0300 |
---|---|---|
committer | Rasmus Andersson <rasmus@notion.se> | 2018-09-03 22:55:49 +0300 |
commit | c833e252c925e8dd68108660710ca835d95daa6f (patch) | |
tree | 6b2e28264ed45efd7f054e453b622098d0d875b8 /misc/pylib/robofab/test/test_ufoLib.py | |
parent | 8c1a4c181ef12000179dfec541f1af87e9b03122 (diff) | |
download | inter-c833e252c925e8dd68108660710ca835d95daa6f.tar.xz |
Major overhaul, moving from UFO2 to Glyphs and UFO3, plus a brand new and much simpler fontbuild
Diffstat (limited to 'misc/pylib/robofab/test/test_ufoLib.py')
-rw-r--r-- | misc/pylib/robofab/test/test_ufoLib.py | 1659 |
1 files changed, 0 insertions, 1659 deletions
diff --git a/misc/pylib/robofab/test/test_ufoLib.py b/misc/pylib/robofab/test/test_ufoLib.py deleted file mode 100644 index e1da807bb..000000000 --- a/misc/pylib/robofab/test/test_ufoLib.py +++ /dev/null @@ -1,1659 +0,0 @@ -import os -import shutil -import unittest -import tempfile -from plistlib import writePlist, readPlist -from robofab.ufoLib import UFOReader, UFOWriter, UFOLibError, \ - convertUFOFormatVersion1ToFormatVersion2, convertUFOFormatVersion2ToFormatVersion1 -from robofab.test.testSupport import fontInfoVersion1, fontInfoVersion2, expectedFontInfo1To2Conversion, expectedFontInfo2To1Conversion - - -# the format version 1 lib.plist contains some data -# that these tests shouldn't be concerned about. -removeFromFormatVersion1Lib = [ - "org.robofab.opentype.classes", - "org.robofab.opentype.features", - "org.robofab.opentype.featureorder", - "org.robofab.postScriptHintData" -] - - -class TestInfoObject(object): pass - - -class ReadFontInfoVersion1TestCase(unittest.TestCase): - - def setUp(self): - self.dstDir = tempfile.mktemp() - os.mkdir(self.dstDir) - metaInfo = { - "creator": "test", - "formatVersion": 1 - } - path = os.path.join(self.dstDir, "metainfo.plist") - writePlist(metaInfo, path) - - def tearDown(self): - shutil.rmtree(self.dstDir) - - def _writeInfoToPlist(self, info): - path = os.path.join(self.dstDir, "fontinfo.plist") - writePlist(info, path) - - def testRead(self): - originalData = dict(fontInfoVersion1) - self._writeInfoToPlist(originalData) - infoObject = TestInfoObject() - reader = UFOReader(self.dstDir) - reader.readInfo(infoObject) - for attr in dir(infoObject): - if attr not in fontInfoVersion2: - continue - originalValue = fontInfoVersion2[attr] - readValue = getattr(infoObject, attr) - self.assertEqual(originalValue, readValue) - - def testFontStyleConversion(self): - fontStyle1To2 = { - 64 : "regular", - 1 : "italic", - 32 : "bold", - 33 : "bold italic" - } - for old, new in fontStyle1To2.items(): - info = dict(fontInfoVersion1) - info["fontStyle"] = old - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - infoObject = TestInfoObject() - reader.readInfo(infoObject) - self.assertEqual(new, infoObject.styleMapStyleName) - - def testWidthNameConversion(self): - widthName1To2 = { - "Ultra-condensed" : 1, - "Extra-condensed" : 2, - "Condensed" : 3, - "Semi-condensed" : 4, - "Medium (normal)" : 5, - "Semi-expanded" : 6, - "Expanded" : 7, - "Extra-expanded" : 8, - "Ultra-expanded" : 9 - } - for old, new in widthName1To2.items(): - info = dict(fontInfoVersion1) - info["widthName"] = old - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - infoObject = TestInfoObject() - reader.readInfo(infoObject) - self.assertEqual(new, infoObject.openTypeOS2WidthClass) - - -class ReadFontInfoVersion2TestCase(unittest.TestCase): - - def setUp(self): - self.dstDir = tempfile.mktemp() - os.mkdir(self.dstDir) - metaInfo = { - "creator": "test", - "formatVersion": 2 - } - path = os.path.join(self.dstDir, "metainfo.plist") - writePlist(metaInfo, path) - - def tearDown(self): - shutil.rmtree(self.dstDir) - - def _writeInfoToPlist(self, info): - path = os.path.join(self.dstDir, "fontinfo.plist") - writePlist(info, path) - - def testRead(self): - originalData = dict(fontInfoVersion2) - self._writeInfoToPlist(originalData) - infoObject = TestInfoObject() - reader = UFOReader(self.dstDir) - reader.readInfo(infoObject) - readData = {} - for attr in fontInfoVersion2.keys(): - readData[attr] = getattr(infoObject, attr) - self.assertEqual(originalData, readData) - - def testGenericRead(self): - # familyName - info = dict(fontInfoVersion2) - info["familyName"] = 123 - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # styleName - info = dict(fontInfoVersion2) - info["styleName"] = 123 - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # styleMapFamilyName - info = dict(fontInfoVersion2) - info["styleMapFamilyName"] = 123 - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # styleMapStyleName - ## not a string - info = dict(fontInfoVersion2) - info["styleMapStyleName"] = 123 - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - ## out of range - info = dict(fontInfoVersion2) - info["styleMapStyleName"] = "REGULAR" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # versionMajor - info = dict(fontInfoVersion2) - info["versionMajor"] = "1" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # versionMinor - info = dict(fontInfoVersion2) - info["versionMinor"] = "0" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # copyright - info = dict(fontInfoVersion2) - info["copyright"] = 123 - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # trademark - info = dict(fontInfoVersion2) - info["trademark"] = 123 - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # unitsPerEm - info = dict(fontInfoVersion2) - info["unitsPerEm"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # descender - info = dict(fontInfoVersion2) - info["descender"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # xHeight - info = dict(fontInfoVersion2) - info["xHeight"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # capHeight - info = dict(fontInfoVersion2) - info["capHeight"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # ascender - info = dict(fontInfoVersion2) - info["ascender"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # italicAngle - info = dict(fontInfoVersion2) - info["italicAngle"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - - def testHeadRead(self): - # openTypeHeadCreated - ## not a string - info = dict(fontInfoVersion2) - info["openTypeHeadCreated"] = 123 - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - ## invalid format - info = dict(fontInfoVersion2) - info["openTypeHeadCreated"] = "2000-Jan-01 00:00:00" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeHeadLowestRecPPEM - info = dict(fontInfoVersion2) - info["openTypeHeadLowestRecPPEM"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeHeadFlags - info = dict(fontInfoVersion2) - info["openTypeHeadFlags"] = [-1] - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - - def testHheaRead(self): - # openTypeHheaAscender - info = dict(fontInfoVersion2) - info["openTypeHheaAscender"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeHheaDescender - info = dict(fontInfoVersion2) - info["openTypeHheaDescender"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeHheaLineGap - info = dict(fontInfoVersion2) - info["openTypeHheaLineGap"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeHheaCaretSlopeRise - info = dict(fontInfoVersion2) - info["openTypeHheaCaretSlopeRise"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeHheaCaretSlopeRun - info = dict(fontInfoVersion2) - info["openTypeHheaCaretSlopeRun"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeHheaCaretOffset - info = dict(fontInfoVersion2) - info["openTypeHheaCaretOffset"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - - def testNameRead(self): - # openTypeNameDesigner - info = dict(fontInfoVersion2) - info["openTypeNameDesigner"] = 123 - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeNameDesignerURL - info = dict(fontInfoVersion2) - info["openTypeNameDesignerURL"] = 123 - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeNameManufacturer - info = dict(fontInfoVersion2) - info["openTypeNameManufacturer"] = 123 - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeNameManufacturerURL - info = dict(fontInfoVersion2) - info["openTypeNameManufacturerURL"] = 123 - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeNameLicense - info = dict(fontInfoVersion2) - info["openTypeNameLicense"] = 123 - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeNameLicenseURL - info = dict(fontInfoVersion2) - info["openTypeNameLicenseURL"] = 123 - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeNameVersion - info = dict(fontInfoVersion2) - info["openTypeNameVersion"] = 123 - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeNameUniqueID - info = dict(fontInfoVersion2) - info["openTypeNameUniqueID"] = 123 - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeNameDescription - info = dict(fontInfoVersion2) - info["openTypeNameDescription"] = 123 - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeNamePreferredFamilyName - info = dict(fontInfoVersion2) - info["openTypeNamePreferredFamilyName"] = 123 - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeNamePreferredSubfamilyName - info = dict(fontInfoVersion2) - info["openTypeNamePreferredSubfamilyName"] = 123 - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeNameCompatibleFullName - info = dict(fontInfoVersion2) - info["openTypeNameCompatibleFullName"] = 123 - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeNameSampleText - info = dict(fontInfoVersion2) - info["openTypeNameSampleText"] = 123 - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeNameWWSFamilyName - info = dict(fontInfoVersion2) - info["openTypeNameWWSFamilyName"] = 123 - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeNameWWSSubfamilyName - info = dict(fontInfoVersion2) - info["openTypeNameWWSSubfamilyName"] = 123 - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - - def testOS2Read(self): - # openTypeOS2WidthClass - ## not an int - info = dict(fontInfoVersion2) - info["openTypeOS2WidthClass"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - ## out or range - info = dict(fontInfoVersion2) - info["openTypeOS2WidthClass"] = 15 - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeOS2WeightClass - info = dict(fontInfoVersion2) - ## not an int - info["openTypeOS2WeightClass"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - ## out of range - info["openTypeOS2WeightClass"] = -50 - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeOS2Selection - info = dict(fontInfoVersion2) - info["openTypeOS2Selection"] = [-1] - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeOS2VendorID - info = dict(fontInfoVersion2) - info["openTypeOS2VendorID"] = 1234 - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeOS2Panose - ## not an int - info = dict(fontInfoVersion2) - info["openTypeOS2Panose"] = [0, 1, 2, 3, 4, 5, 6, 7, 8, str(9)] - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - ## too few values - info = dict(fontInfoVersion2) - info["openTypeOS2Panose"] = [0, 1, 2, 3] - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - ## too many values - info = dict(fontInfoVersion2) - info["openTypeOS2Panose"] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeOS2FamilyClass - ## not an int - info = dict(fontInfoVersion2) - info["openTypeOS2FamilyClass"] = [1, str(1)] - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - ## too few values - info = dict(fontInfoVersion2) - info["openTypeOS2FamilyClass"] = [1] - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - ## too many values - info = dict(fontInfoVersion2) - info["openTypeOS2FamilyClass"] = [1, 1, 1] - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - ## out of range - info = dict(fontInfoVersion2) - info["openTypeOS2FamilyClass"] = [1, 201] - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeOS2UnicodeRanges - ## not an int - info = dict(fontInfoVersion2) - info["openTypeOS2UnicodeRanges"] = ["0"] - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - ## out of range - info = dict(fontInfoVersion2) - info["openTypeOS2UnicodeRanges"] = [-1] - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeOS2CodePageRanges - ## not an int - info = dict(fontInfoVersion2) - info["openTypeOS2CodePageRanges"] = ["0"] - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - ## out of range - info = dict(fontInfoVersion2) - info["openTypeOS2CodePageRanges"] = [-1] - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeOS2TypoAscender - info = dict(fontInfoVersion2) - info["openTypeOS2TypoAscender"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeOS2TypoDescender - info = dict(fontInfoVersion2) - info["openTypeOS2TypoDescender"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeOS2TypoLineGap - info = dict(fontInfoVersion2) - info["openTypeOS2TypoLineGap"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeOS2WinAscent - info = dict(fontInfoVersion2) - info["openTypeOS2WinAscent"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeOS2WinDescent - info = dict(fontInfoVersion2) - info["openTypeOS2WinDescent"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeOS2Type - ## not an int - info = dict(fontInfoVersion2) - info["openTypeOS2Type"] = ["1"] - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - ## out of range - info = dict(fontInfoVersion2) - info["openTypeOS2Type"] = [-1] - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeOS2SubscriptXSize - info = dict(fontInfoVersion2) - info["openTypeOS2SubscriptXSize"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeOS2SubscriptYSize - info = dict(fontInfoVersion2) - info["openTypeOS2SubscriptYSize"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeOS2SubscriptXOffset - info = dict(fontInfoVersion2) - info["openTypeOS2SubscriptXOffset"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeOS2SubscriptYOffset - info = dict(fontInfoVersion2) - info["openTypeOS2SubscriptYOffset"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeOS2SuperscriptXSize - info = dict(fontInfoVersion2) - info["openTypeOS2SuperscriptXSize"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeOS2SuperscriptYSize - info = dict(fontInfoVersion2) - info["openTypeOS2SuperscriptYSize"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeOS2SuperscriptXOffset - info = dict(fontInfoVersion2) - info["openTypeOS2SuperscriptXOffset"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeOS2SuperscriptYOffset - info = dict(fontInfoVersion2) - info["openTypeOS2SuperscriptYOffset"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeOS2StrikeoutSize - info = dict(fontInfoVersion2) - info["openTypeOS2StrikeoutSize"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeOS2StrikeoutPosition - info = dict(fontInfoVersion2) - info["openTypeOS2StrikeoutPosition"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - - def testVheaRead(self): - # openTypeVheaVertTypoAscender - info = dict(fontInfoVersion2) - info["openTypeVheaVertTypoAscender"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeVheaVertTypoDescender - info = dict(fontInfoVersion2) - info["openTypeVheaVertTypoDescender"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeVheaVertTypoLineGap - info = dict(fontInfoVersion2) - info["openTypeVheaVertTypoLineGap"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeVheaCaretSlopeRise - info = dict(fontInfoVersion2) - info["openTypeVheaCaretSlopeRise"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeVheaCaretSlopeRun - info = dict(fontInfoVersion2) - info["openTypeVheaCaretSlopeRun"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # openTypeVheaCaretOffset - info = dict(fontInfoVersion2) - info["openTypeVheaCaretOffset"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - - def testFONDRead(self): - # macintoshFONDFamilyID - info = dict(fontInfoVersion2) - info["macintoshFONDFamilyID"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # macintoshFONDName - info = dict(fontInfoVersion2) - info["macintoshFONDName"] = 123 - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - - def testPostscriptRead(self): - # postscriptFontName - info = dict(fontInfoVersion2) - info["postscriptFontName"] = 123 - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # postscriptFullName - info = dict(fontInfoVersion2) - info["postscriptFullName"] = 123 - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # postscriptSlantAngle - info = dict(fontInfoVersion2) - info["postscriptSlantAngle"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject()) - # postscriptUniqueID - info = dict(fontInfoVersion2) - info["postscriptUniqueID"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject()) - # postscriptUnderlineThickness - info = dict(fontInfoVersion2) - info["postscriptUnderlineThickness"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject()) - # postscriptUnderlinePosition - info = dict(fontInfoVersion2) - info["postscriptUnderlinePosition"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject()) - # postscriptIsFixedPitch - info = dict(fontInfoVersion2) - info["postscriptIsFixedPitch"] = 2 - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject()) - # postscriptBlueValues - ## not a list - info = dict(fontInfoVersion2) - info["postscriptBlueValues"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject()) - ## uneven value count - info = dict(fontInfoVersion2) - info["postscriptBlueValues"] = [500] - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject()) - ## too many values - info = dict(fontInfoVersion2) - info["postscriptBlueValues"] = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160] - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject()) - # postscriptOtherBlues - ## not a list - info = dict(fontInfoVersion2) - info["postscriptOtherBlues"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject()) - ## uneven value count - info = dict(fontInfoVersion2) - info["postscriptOtherBlues"] = [500] - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject()) - ## too many values - info = dict(fontInfoVersion2) - info["postscriptOtherBlues"] = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160] - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject()) - # postscriptFamilyBlues - ## not a list - info = dict(fontInfoVersion2) - info["postscriptFamilyBlues"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject()) - ## uneven value count - info = dict(fontInfoVersion2) - info["postscriptFamilyBlues"] = [500] - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject()) - ## too many values - info = dict(fontInfoVersion2) - info["postscriptFamilyBlues"] = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160] - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject()) - # postscriptFamilyOtherBlues - ## not a list - info = dict(fontInfoVersion2) - info["postscriptFamilyOtherBlues"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject()) - ## uneven value count - info = dict(fontInfoVersion2) - info["postscriptFamilyOtherBlues"] = [500] - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject()) - ## too many values - info = dict(fontInfoVersion2) - info["postscriptFamilyOtherBlues"] = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160] - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject()) - # postscriptStemSnapH - ## not list - info = dict(fontInfoVersion2) - info["postscriptStemSnapH"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject()) - ## too many values - info = dict(fontInfoVersion2) - info["postscriptStemSnapH"] = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160] - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject()) - # postscriptStemSnapV - ## not list - info = dict(fontInfoVersion2) - info["postscriptStemSnapV"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject()) - ## too many values - info = dict(fontInfoVersion2) - info["postscriptStemSnapV"] = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160] - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject()) - # postscriptBlueFuzz - info = dict(fontInfoVersion2) - info["postscriptBlueFuzz"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject()) - # postscriptBlueShift - info = dict(fontInfoVersion2) - info["postscriptBlueShift"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject()) - # postscriptBlueScale - info = dict(fontInfoVersion2) - info["postscriptBlueScale"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject()) - # postscriptForceBold - info = dict(fontInfoVersion2) - info["postscriptForceBold"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject()) - # postscriptDefaultWidthX - info = dict(fontInfoVersion2) - info["postscriptDefaultWidthX"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject()) - # postscriptNominalWidthX - info = dict(fontInfoVersion2) - info["postscriptNominalWidthX"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject()) - # postscriptWeightName - info = dict(fontInfoVersion2) - info["postscriptWeightName"] = 123 - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject()) - # postscriptDefaultCharacter - info = dict(fontInfoVersion2) - info["postscriptDefaultCharacter"] = 123 - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject()) - # postscriptWindowsCharacterSet - info = dict(fontInfoVersion2) - info["postscriptWindowsCharacterSet"] = -1 - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject()) - # macintoshFONDFamilyID - info = dict(fontInfoVersion2) - info["macintoshFONDFamilyID"] = "abc" - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject()) - # macintoshFONDName - info = dict(fontInfoVersion2) - info["macintoshFONDName"] = 123 - self._writeInfoToPlist(info) - reader = UFOReader(self.dstDir) - self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject()) - - -class WriteFontInfoVersion1TestCase(unittest.TestCase): - - def setUp(self): - self.dstDir = tempfile.mktemp() - os.mkdir(self.dstDir) - - def tearDown(self): - shutil.rmtree(self.dstDir) - - def makeInfoObject(self): - infoObject = TestInfoObject() - for attr, value in fontInfoVersion2.items(): - setattr(infoObject, attr, value) - return infoObject - - def readPlist(self): - path = os.path.join(self.dstDir, "fontinfo.plist") - return readPlist(path) - - def testWrite(self): - infoObject = self.makeInfoObject() - writer = UFOWriter(self.dstDir, formatVersion=1) - writer.writeInfo(infoObject) - writtenData = self.readPlist() - for attr, originalValue in fontInfoVersion1.items(): - newValue = writtenData[attr] - self.assertEqual(newValue, originalValue) - - def testFontStyleConversion(self): - fontStyle1To2 = { - 64 : "regular", - 1 : "italic", - 32 : "bold", - 33 : "bold italic" - } - for old, new in fontStyle1To2.items(): - infoObject = self.makeInfoObject() - infoObject.styleMapStyleName = new - writer = UFOWriter(self.dstDir, formatVersion=1) - writer.writeInfo(infoObject) - writtenData = self.readPlist() - self.assertEqual(writtenData["fontStyle"], old) - - def testWidthNameConversion(self): - widthName1To2 = { - "Ultra-condensed" : 1, - "Extra-condensed" : 2, - "Condensed" : 3, - "Semi-condensed" : 4, - "Medium (normal)" : 5, - "Semi-expanded" : 6, - "Expanded" : 7, - "Extra-expanded" : 8, - "Ultra-expanded" : 9 - } - for old, new in widthName1To2.items(): - infoObject = self.makeInfoObject() - infoObject.openTypeOS2WidthClass = new - writer = UFOWriter(self.dstDir, formatVersion=1) - writer.writeInfo(infoObject) - writtenData = self.readPlist() - self.assertEqual(writtenData["widthName"], old) - - -class WriteFontInfoVersion2TestCase(unittest.TestCase): - - def setUp(self): - self.dstDir = tempfile.mktemp() - os.mkdir(self.dstDir) - - def tearDown(self): - shutil.rmtree(self.dstDir) - - def makeInfoObject(self): - infoObject = TestInfoObject() - for attr, value in fontInfoVersion2.items(): - setattr(infoObject, attr, value) - return infoObject - - def readPlist(self): - path = os.path.join(self.dstDir, "fontinfo.plist") - return readPlist(path) - - def testWrite(self): - infoObject = self.makeInfoObject() - writer = UFOWriter(self.dstDir) - writer.writeInfo(infoObject) - writtenData = self.readPlist() - for attr, originalValue in fontInfoVersion2.items(): - newValue = writtenData[attr] - self.assertEqual(newValue, originalValue) - - def testGenericWrite(self): - # familyName - infoObject = self.makeInfoObject() - infoObject.familyName = 123 - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # styleName - infoObject = self.makeInfoObject() - infoObject.styleName = 123 - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # styleMapFamilyName - infoObject = self.makeInfoObject() - infoObject.styleMapFamilyName = 123 - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # styleMapStyleName - ## not a string - infoObject = self.makeInfoObject() - infoObject.styleMapStyleName = 123 - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - ## out of range - infoObject = self.makeInfoObject() - infoObject.styleMapStyleName = "REGULAR" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # versionMajor - infoObject = self.makeInfoObject() - infoObject.versionMajor = "1" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # versionMinor - infoObject = self.makeInfoObject() - infoObject.versionMinor = "0" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # copyright - infoObject = self.makeInfoObject() - infoObject.copyright = 123 - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # trademark - infoObject = self.makeInfoObject() - infoObject.trademark = 123 - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # unitsPerEm - infoObject = self.makeInfoObject() - infoObject.unitsPerEm = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # descender - infoObject = self.makeInfoObject() - infoObject.descender = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # xHeight - infoObject = self.makeInfoObject() - infoObject.xHeight = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # capHeight - infoObject = self.makeInfoObject() - infoObject.capHeight = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # ascender - infoObject = self.makeInfoObject() - infoObject.ascender = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # italicAngle - infoObject = self.makeInfoObject() - infoObject.italicAngle = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - - def testHeadWrite(self): - # openTypeHeadCreated - ## not a string - infoObject = self.makeInfoObject() - infoObject.openTypeHeadCreated = 123 - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - ## invalid format - infoObject = self.makeInfoObject() - infoObject.openTypeHeadCreated = "2000-Jan-01 00:00:00" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeHeadLowestRecPPEM - infoObject = self.makeInfoObject() - infoObject.openTypeHeadLowestRecPPEM = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeHeadFlags - infoObject = self.makeInfoObject() - infoObject.openTypeHeadFlags = [-1] - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - - def testHheaWrite(self): - # openTypeHheaAscender - infoObject = self.makeInfoObject() - infoObject.openTypeHheaAscender = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeHheaDescender - infoObject = self.makeInfoObject() - infoObject.openTypeHheaDescender = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeHheaLineGap - infoObject = self.makeInfoObject() - infoObject.openTypeHheaLineGap = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeHheaCaretSlopeRise - infoObject = self.makeInfoObject() - infoObject.openTypeHheaCaretSlopeRise = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeHheaCaretSlopeRun - infoObject = self.makeInfoObject() - infoObject.openTypeHheaCaretSlopeRun = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeHheaCaretOffset - infoObject = self.makeInfoObject() - infoObject.openTypeHheaCaretOffset = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - - def testNameWrite(self): - # openTypeNameDesigner - infoObject = self.makeInfoObject() - infoObject.openTypeNameDesigner = 123 - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeNameDesignerURL - infoObject = self.makeInfoObject() - infoObject.openTypeNameDesignerURL = 123 - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeNameManufacturer - infoObject = self.makeInfoObject() - infoObject.openTypeNameManufacturer = 123 - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeNameManufacturerURL - infoObject = self.makeInfoObject() - infoObject.openTypeNameManufacturerURL = 123 - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeNameLicense - infoObject = self.makeInfoObject() - infoObject.openTypeNameLicense = 123 - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeNameLicenseURL - infoObject = self.makeInfoObject() - infoObject.openTypeNameLicenseURL = 123 - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeNameVersion - infoObject = self.makeInfoObject() - infoObject.openTypeNameVersion = 123 - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeNameUniqueID - infoObject = self.makeInfoObject() - infoObject.openTypeNameUniqueID = 123 - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeNameDescription - infoObject = self.makeInfoObject() - infoObject.openTypeNameDescription = 123 - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeNamePreferredFamilyName - infoObject = self.makeInfoObject() - infoObject.openTypeNamePreferredFamilyName = 123 - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeNamePreferredSubfamilyName - infoObject = self.makeInfoObject() - infoObject.openTypeNamePreferredSubfamilyName = 123 - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeNameCompatibleFullName - infoObject = self.makeInfoObject() - infoObject.openTypeNameCompatibleFullName = 123 - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeNameSampleText - infoObject = self.makeInfoObject() - infoObject.openTypeNameSampleText = 123 - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeNameWWSFamilyName - infoObject = self.makeInfoObject() - infoObject.openTypeNameWWSFamilyName = 123 - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeNameWWSSubfamilyName - infoObject = self.makeInfoObject() - infoObject.openTypeNameWWSSubfamilyName = 123 - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - - def testOS2Write(self): - # openTypeOS2WidthClass - ## not an int - infoObject = self.makeInfoObject() - infoObject.openTypeOS2WidthClass = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - ## out or range - infoObject = self.makeInfoObject() - infoObject.openTypeOS2WidthClass = 15 - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeOS2WeightClass - infoObject = self.makeInfoObject() - ## not an int - infoObject.openTypeOS2WeightClass = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - ## out of range - infoObject.openTypeOS2WeightClass = -50 - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeOS2Selection - infoObject = self.makeInfoObject() - infoObject.openTypeOS2Selection = [-1] - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeOS2VendorID - infoObject = self.makeInfoObject() - infoObject.openTypeOS2VendorID = 1234 - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeOS2Panose - ## not an int - infoObject = self.makeInfoObject() - infoObject.openTypeOS2Panose = [0, 1, 2, 3, 4, 5, 6, 7, 8, str(9)] - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - ## too few values - infoObject = self.makeInfoObject() - infoObject.openTypeOS2Panose = [0, 1, 2, 3] - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - ## too many values - infoObject = self.makeInfoObject() - infoObject.openTypeOS2Panose = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeOS2FamilyClass - ## not an int - infoObject = self.makeInfoObject() - infoObject.openTypeOS2FamilyClass = [0, str(1)] - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - ## too few values - infoObject = self.makeInfoObject() - infoObject.openTypeOS2FamilyClass = [1] - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - ## too many values - infoObject = self.makeInfoObject() - infoObject.openTypeOS2FamilyClass = [1, 1, 1] - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - ## out of range - infoObject = self.makeInfoObject() - infoObject.openTypeOS2FamilyClass = [1, 20] - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeOS2UnicodeRanges - ## not an int - infoObject = self.makeInfoObject() - infoObject.openTypeOS2UnicodeRanges = ["0"] - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - ## out of range - infoObject = self.makeInfoObject() - infoObject.openTypeOS2UnicodeRanges = [-1] - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeOS2CodePageRanges - ## not an int - infoObject = self.makeInfoObject() - infoObject.openTypeOS2CodePageRanges = ["0"] - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - ## out of range - infoObject = self.makeInfoObject() - infoObject.openTypeOS2CodePageRanges = [-1] - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeOS2TypoAscender - infoObject = self.makeInfoObject() - infoObject.openTypeOS2TypoAscender = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeOS2TypoDescender - infoObject = self.makeInfoObject() - infoObject.openTypeOS2TypoDescender = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeOS2TypoLineGap - infoObject = self.makeInfoObject() - infoObject.openTypeOS2TypoLineGap = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeOS2WinAscent - infoObject = self.makeInfoObject() - infoObject.openTypeOS2WinAscent = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeOS2WinDescent - infoObject = self.makeInfoObject() - infoObject.openTypeOS2WinDescent = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeOS2Type - ## not an int - infoObject = self.makeInfoObject() - infoObject.openTypeOS2Type = ["1"] - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - ## out of range - infoObject = self.makeInfoObject() - infoObject.openTypeOS2Type = [-1] - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeOS2SubscriptXSize - infoObject = self.makeInfoObject() - infoObject.openTypeOS2SubscriptXSize = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeOS2SubscriptYSize - infoObject = self.makeInfoObject() - infoObject.openTypeOS2SubscriptYSize = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeOS2SubscriptXOffset - infoObject = self.makeInfoObject() - infoObject.openTypeOS2SubscriptXOffset = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeOS2SubscriptYOffset - infoObject = self.makeInfoObject() - infoObject.openTypeOS2SubscriptYOffset = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeOS2SuperscriptXSize - infoObject = self.makeInfoObject() - infoObject.openTypeOS2SuperscriptXSize = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeOS2SuperscriptYSize - infoObject = self.makeInfoObject() - infoObject.openTypeOS2SuperscriptYSize = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeOS2SuperscriptXOffset - infoObject = self.makeInfoObject() - infoObject.openTypeOS2SuperscriptXOffset = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeOS2SuperscriptYOffset - infoObject = self.makeInfoObject() - infoObject.openTypeOS2SuperscriptYOffset = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeOS2StrikeoutSize - infoObject = self.makeInfoObject() - infoObject.openTypeOS2StrikeoutSize = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeOS2StrikeoutPosition - infoObject = self.makeInfoObject() - infoObject.openTypeOS2StrikeoutPosition = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - - def testVheaWrite(self): - # openTypeVheaVertTypoAscender - infoObject = self.makeInfoObject() - infoObject.openTypeVheaVertTypoAscender = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeVheaVertTypoDescender - infoObject = self.makeInfoObject() - infoObject.openTypeVheaVertTypoDescender = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeVheaVertTypoLineGap - infoObject = self.makeInfoObject() - infoObject.openTypeVheaVertTypoLineGap = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeVheaCaretSlopeRise - infoObject = self.makeInfoObject() - infoObject.openTypeVheaCaretSlopeRise = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeVheaCaretSlopeRun - infoObject = self.makeInfoObject() - infoObject.openTypeVheaCaretSlopeRun = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # openTypeVheaCaretOffset - infoObject = self.makeInfoObject() - infoObject.openTypeVheaCaretOffset = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - - def testFONDWrite(self): - # macintoshFONDFamilyID - infoObject = self.makeInfoObject() - infoObject.macintoshFONDFamilyID = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # macintoshFONDName - infoObject = self.makeInfoObject() - infoObject.macintoshFONDName = 123 - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - - def testPostscriptWrite(self): - # postscriptFontName - infoObject = self.makeInfoObject() - infoObject.postscriptFontName = 123 - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # postscriptFullName - infoObject = self.makeInfoObject() - infoObject.postscriptFullName = 123 - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # postscriptSlantAngle - infoObject = self.makeInfoObject() - infoObject.postscriptSlantAngle = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # postscriptUniqueID - infoObject = self.makeInfoObject() - infoObject.postscriptUniqueID = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # postscriptUnderlineThickness - infoObject = self.makeInfoObject() - infoObject.postscriptUnderlineThickness = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # postscriptUnderlinePosition - infoObject = self.makeInfoObject() - infoObject.postscriptUnderlinePosition = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # postscriptIsFixedPitch - infoObject = self.makeInfoObject() - infoObject.postscriptIsFixedPitch = 2 - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # postscriptBlueValues - ## not a list - infoObject = self.makeInfoObject() - infoObject.postscriptBlueValues = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - ## uneven value count - infoObject = self.makeInfoObject() - infoObject.postscriptBlueValues = [500] - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - ## too many values - infoObject = self.makeInfoObject() - infoObject.postscriptBlueValues = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160] - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # postscriptOtherBlues - ## not a list - infoObject = self.makeInfoObject() - infoObject.postscriptOtherBlues = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - ## uneven value count - infoObject = self.makeInfoObject() - infoObject.postscriptOtherBlues = [500] - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - ## too many values - infoObject = self.makeInfoObject() - infoObject.postscriptOtherBlues = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160] - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # postscriptFamilyBlues - ## not a list - infoObject = self.makeInfoObject() - infoObject.postscriptFamilyBlues = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - ## uneven value count - infoObject = self.makeInfoObject() - infoObject.postscriptFamilyBlues = [500] - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - ## too many values - infoObject = self.makeInfoObject() - infoObject.postscriptFamilyBlues = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160] - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # postscriptFamilyOtherBlues - ## not a list - infoObject = self.makeInfoObject() - infoObject.postscriptFamilyOtherBlues = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - ## uneven value count - infoObject = self.makeInfoObject() - infoObject.postscriptFamilyOtherBlues = [500] - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - ## too many values - infoObject = self.makeInfoObject() - infoObject.postscriptFamilyOtherBlues = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160] - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # postscriptStemSnapH - ## not list - infoObject = self.makeInfoObject() - infoObject.postscriptStemSnapH = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - ## too many values - infoObject = self.makeInfoObject() - infoObject.postscriptStemSnapH = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160] - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # postscriptStemSnapV - ## not list - infoObject = self.makeInfoObject() - infoObject.postscriptStemSnapV = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - ## too many values - infoObject = self.makeInfoObject() - infoObject.postscriptStemSnapV = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160] - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # postscriptBlueFuzz - infoObject = self.makeInfoObject() - infoObject.postscriptBlueFuzz = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # postscriptBlueShift - infoObject = self.makeInfoObject() - infoObject.postscriptBlueShift = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # postscriptBlueScale - infoObject = self.makeInfoObject() - infoObject.postscriptBlueScale = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # postscriptForceBold - infoObject = self.makeInfoObject() - infoObject.postscriptForceBold = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # postscriptDefaultWidthX - infoObject = self.makeInfoObject() - infoObject.postscriptDefaultWidthX = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # postscriptNominalWidthX - infoObject = self.makeInfoObject() - infoObject.postscriptNominalWidthX = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # postscriptWeightName - infoObject = self.makeInfoObject() - infoObject.postscriptWeightName = 123 - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # postscriptDefaultCharacter - infoObject = self.makeInfoObject() - infoObject.postscriptDefaultCharacter = 123 - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # postscriptWindowsCharacterSet - infoObject = self.makeInfoObject() - infoObject.postscriptWindowsCharacterSet = -1 - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # macintoshFONDFamilyID - infoObject = self.makeInfoObject() - infoObject.macintoshFONDFamilyID = "abc" - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - # macintoshFONDName - infoObject = self.makeInfoObject() - infoObject.macintoshFONDName = 123 - writer = UFOWriter(self.dstDir) - self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject) - - - - -class ConversionFunctionsTestCase(unittest.TestCase): - - def tearDown(self): - path = self.getFontPath("TestFont1 (UFO1) converted.ufo") - if os.path.exists(path): - shutil.rmtree(path) - path = self.getFontPath("TestFont1 (UFO2) converted.ufo") - if os.path.exists(path): - shutil.rmtree(path) - - def getFontPath(self, fileName): - import robofab - path = os.path.dirname(robofab.__file__) - path = os.path.dirname(path) - path = os.path.dirname(path) - path = os.path.join(path, "TestData", fileName) - return path - - def compareFileStructures(self, path1, path2, expectedInfoData, testFeatures): - # result - metainfoPath1 = os.path.join(path1, "metainfo.plist") - fontinfoPath1 = os.path.join(path1, "fontinfo.plist") - kerningPath1 = os.path.join(path1, "kerning.plist") - groupsPath1 = os.path.join(path1, "groups.plist") - libPath1 = os.path.join(path1, "lib.plist") - featuresPath1 = os.path.join(path1, "features.plist") - glyphsPath1 = os.path.join(path1, "glyphs") - glyphsPath1_contents = os.path.join(glyphsPath1, "contents.plist") - glyphsPath1_A = os.path.join(glyphsPath1, "A_.glif") - glyphsPath1_B = os.path.join(glyphsPath1, "B_.glif") - # expected result - metainfoPath2 = os.path.join(path2, "metainfo.plist") - fontinfoPath2 = os.path.join(path2, "fontinfo.plist") - kerningPath2 = os.path.join(path2, "kerning.plist") - groupsPath2 = os.path.join(path2, "groups.plist") - libPath2 = os.path.join(path2, "lib.plist") - featuresPath2 = os.path.join(path2, "features.plist") - glyphsPath2 = os.path.join(path2, "glyphs") - glyphsPath2_contents = os.path.join(glyphsPath2, "contents.plist") - glyphsPath2_A = os.path.join(glyphsPath2, "A_.glif") - glyphsPath2_B = os.path.join(glyphsPath2, "B_.glif") - # look for existence - self.assertEqual(os.path.exists(metainfoPath1), True) - self.assertEqual(os.path.exists(fontinfoPath1), True) - self.assertEqual(os.path.exists(kerningPath1), True) - self.assertEqual(os.path.exists(groupsPath1), True) - self.assertEqual(os.path.exists(libPath1), True) - self.assertEqual(os.path.exists(glyphsPath1), True) - self.assertEqual(os.path.exists(glyphsPath1_contents), True) - self.assertEqual(os.path.exists(glyphsPath1_A), True) - self.assertEqual(os.path.exists(glyphsPath1_B), True) - if testFeatures: - self.assertEqual(os.path.exists(featuresPath1), True) - # look for aggrement - data1 = readPlist(metainfoPath1) - data2 = readPlist(metainfoPath2) - self.assertEqual(data1, data2) - data1 = readPlist(fontinfoPath1) - self.assertEqual(sorted(data1.items()), sorted(expectedInfoData.items())) - data1 = readPlist(kerningPath1) - data2 = readPlist(kerningPath2) - self.assertEqual(data1, data2) - data1 = readPlist(groupsPath1) - data2 = readPlist(groupsPath2) - self.assertEqual(data1, data2) - data1 = readPlist(libPath1) - data2 = readPlist(libPath2) - if "UFO1" in libPath1: - for key in removeFromFormatVersion1Lib: - if key in data1: - del data1[key] - if "UFO1" in libPath2: - for key in removeFromFormatVersion1Lib: - if key in data2: - del data2[key] - self.assertEqual(data1, data2) - data1 = readPlist(glyphsPath1_contents) - data2 = readPlist(glyphsPath2_contents) - self.assertEqual(data1, data2) - data1 = readPlist(glyphsPath1_A) - data2 = readPlist(glyphsPath2_A) - self.assertEqual(data1, data2) - data1 = readPlist(glyphsPath1_B) - data2 = readPlist(glyphsPath2_B) - self.assertEqual(data1, data2) - - def test1To2(self): - path1 = self.getFontPath("TestFont1 (UFO1).ufo") - path2 = self.getFontPath("TestFont1 (UFO1) converted.ufo") - path3 = self.getFontPath("TestFont1 (UFO2).ufo") - convertUFOFormatVersion1ToFormatVersion2(path1, path2) - self.compareFileStructures(path2, path3, expectedFontInfo1To2Conversion, False) - - def test2To1(self): - path1 = self.getFontPath("TestFont1 (UFO2).ufo") - path2 = self.getFontPath("TestFont1 (UFO2) converted.ufo") - path3 = self.getFontPath("TestFont1 (UFO1).ufo") - convertUFOFormatVersion2ToFormatVersion1(path1, path2) - self.compareFileStructures(path2, path3, expectedFontInfo2To1Conversion, False) - - -if __name__ == "__main__": - from robofab.test.testSupport import runTests - runTests() |