def test_copyDataFromGlyph(self): source = Glyph() source.name = "a" source.width = 1 source.height = 2 source.unicodes = [3, 4] source.note = "test image" source.image = dict(fileName="test image", xScale=1, xyScale=1, yxScale=1, yScale=1, xOffset=0, yOffset=0, color=None) source.anchors = [dict(x=100, y=200, name="test anchor")] source.guidelines = [dict(x=10, y=20, name="test guideline")] source.lib = {"foo": "bar"} pen = source.getPointPen() pen.beginPath() pen.addPoint((100, 200), segmentType="line") pen.addPoint((300, 400), segmentType="line") pen.endPath() component = Component() component.base = "b" source.appendComponent(component) dest = Glyph() dest.copyDataFromGlyph(source) self.assertNotEqual(source.name, dest.name) self.assertEqual(source.width, dest.width) self.assertEqual(source.height, dest.height) self.assertEqual(source.unicodes, dest.unicodes) self.assertEqual(source.note, dest.note) self.assertEqual(source.image.items(), dest.image.items()) self.assertEqual([g.items() for g in source.guidelines], [g.items() for g in dest.guidelines]) self.assertEqual([g.items() for g in source.anchors], [g.items() for g in dest.anchors]) self.assertEqual(len(source), len(dest)) self.assertEqual(len(source.components), len(dest.components)) sourceContours = [] for contour in source: sourceContours.append([]) for point in contour: sourceContours[-1].append( (point.x, point.x, point.segmentType, point.name)) destContours = [] for contour in dest: destContours.append([]) for point in contour: destContours[-1].append( (point.x, point.x, point.segmentType, point.name)) self.assertEqual(sourceContours, destContours) self.assertEqual(source.components[0].baseGlyph, dest.components[0].baseGlyph)
def test_copyDataFromGlyph(self): source = Glyph() source.name = "a" source.width = 1 source.height = 2 source.unicodes = [3, 4] source.note = "test image" source.image = dict(fileName="test image", xScale=1, xyScale=1, yxScale=1, yScale=1, xOffset=0, yOffset=0, color=None) source.anchors = [dict(x=100, y=200, name="test anchor")] source.guidelines = [dict(x=10, y=20, name="test guideline")] source.lib = {"foo": "bar"} pen = source.getPointPen() pen.beginPath() pen.addPoint((100, 200), segmentType="line") pen.addPoint((300, 400), segmentType="line") pen.endPath() component = Component() component.base = "b" source.appendComponent(component) dest = Glyph() dest.copyDataFromGlyph(source) self.assertNotEqual(source.name, dest.name) self.assertEqual(source.width, dest.width) self.assertEqual(source.height, dest.height) self.assertEqual(source.unicodes, dest.unicodes) self.assertEqual(source.note, dest.note) self.assertEqual(source.image.items(), dest.image.items()) self.assertEqual([g.items() for g in source.guidelines], [g.items() for g in dest.guidelines]) self.assertEqual([g.items() for g in source.anchors], [g.items() for g in dest.anchors]) self.assertEqual(len(source), len(dest)) self.assertEqual(len(source.components), len(dest.components)) sourceContours = [] for contour in source: sourceContours.append([]) for point in contour: sourceContours[-1].append((point.x, point.x, point.segmentType, point.name)) destContours = [] for contour in dest: destContours.append([]) for point in contour: destContours[-1].append((point.x, point.x, point.segmentType, point.name)) self.assertEqual(sourceContours, destContours) self.assertEqual(source.components[0].baseGlyph, dest.components[0].baseGlyph)
def createGlyphs(self): self.UFO.newGlyph('.notdef') missing = '' for glf in self.GDB.Master2Search: glfUnicode = int(self.GDB.Master2Unicode[glf], 16) print('') layer = 0 stopAt = 'arAlef.fina.la' glfSrc = self.GDB.Master2Search[glf].split(',') if glf == stopAt: m = 1 log = (glf + ' ' * 50)[0:20] if glf in self.GDB.MAPPING: try: mgName = [self.GDB.MAPPING[glf]] glyph = Glyph() glyph.copyDataFromGlyph(self.srcUFO[mgName[0]]) glyph.name = glf if layer == 0: glyph.unicode = glfUnicode glyph.unicodes = [glfUnicode] else: glyph.unicode = None glyph.anchors = [] glyph.decomposeAllComponents() if layer > 0: currentLayer = self.getLayer(layer) currentLayer.insertGlyph(glyph) else: self.UFO.insertGlyph(glyph) layer += 1 # print(g + ' found :)' + ' L ' + str(layer)) gLog = log + (mgName[0] + ' ' * 50)[0:20] print(gLog + '[' + str(layer) + '] *') except: pass for g in glfSrc: mgName = None gCode = None gLog = log + (g + ' ' * 50)[0:20] try: try: gCode = self.GDB.Prod2Decimal[g] mgName = self.srcUFO.unicodeData[gCode] except: try: mgName = [g] except: pass glyph = Glyph() glyph.copyDataFromGlyph(self.srcUFO[mgName[0]]) glyph.name = glf if layer == 0: glyph.unicode = glfUnicode glyph.unicodes = [glfUnicode] else: glyph.unicode = None glyph.anchors = [] glyph.decomposeAllComponents() if layer > 0: currentLayer = self.getLayer(layer) currentLayer.insertGlyph(glyph) else: self.UFO.insertGlyph(glyph) layer += 1 print(gLog + '[' + str(layer) + ']') except: print(gLog + '[ ]') glyph = None if layer == 0: self.UFO.newGlyph(glf) missing += log + "\n" if len(missing) > 1: print('\n') print('=' * 60) print('Missing glyphes ' + str(len(missing.splitlines()))) print('=' * 60) print(missing) print('=' * 60)