예제 #1
0
 def test_compileTupleVariationStore_roundTrip_gvar(self):
     deltas = [(1, 1), (2, 2), (3, 3), (4, 4)]
     variations = [
         TupleVariation({
             "wght": (0.5, 1.0, 1.0),
             "wdth": (1.0, 1.0, 1.0)
         }, deltas),
         TupleVariation({
             "wght": (1.0, 1.0, 1.0),
             "wdth": (1.0, 1.0, 1.0)
         }, deltas)
     ]
     tupleVariationCount, tuples, data = compileTupleVariationStore(
         variations,
         pointCount=4,
         axisTags=["wght", "wdth"],
         sharedTupleIndices={})
     self.assertEqual(
         decompileTupleVariationStore("gvar", ["wght", "wdth"],
                                      tupleVariationCount,
                                      pointCount=4,
                                      sharedTuples={},
                                      data=(tuples + data),
                                      pos=0,
                                      dataPos=len(tuples)), variations)
예제 #2
0
	def test_compileTupleVariationStore_allVariationsRedundant(self):
		axes = {"wght": (0.3, 0.4, 0.5), "opsz": (0.7, 0.8, 0.9)}
		variations = [
			TupleVariation(axes, [None] * 4),
			TupleVariation(axes, [None] * 4),
			TupleVariation(axes, [None] * 4)
		]
		self.assertEqual(
			compileTupleVariationStore(variations, pointCount=8,
			                           axisTags=["wght", "opsz"],
			                           sharedTupleIndices={}),
            (0, b"", b""))
예제 #3
0
	def test_compileTupleVariationStore_allVariationsRedundant(self):
		axes = {"wght": (0.3, 0.4, 0.5), "opsz": (0.7, 0.8, 0.9)}
		variations = [
			TupleVariation(axes, [None] * 4),
			TupleVariation(axes, [None] * 4),
			TupleVariation(axes, [None] * 4)
		]
		self.assertEqual(
			compileTupleVariationStore(variations, pointCount=8,
			                           axisTags=["wght", "opsz"],
			                           sharedTupleIndices={}),
            (0, b"", b""))
예제 #4
0
 def compile(self, ttFont):
     tupleVariationCount, tuples, data = compileTupleVariationStore(
         variations=[v for v in self.variations if v.hasImpact()],
         pointCount=len(ttFont["cvt "].values),
         axisTags=[axis.axisTag for axis in ttFont["fvar"].axes],
         sharedTupleIndices={})
     header = {
         "majorVersion": self.majorVersion,
         "minorVersion": self.minorVersion,
         "tupleVariationCount": tupleVariationCount,
         "offsetToData": CVAR_HEADER_SIZE + len(tuples),
     }
     return bytesjoin(
         [sstruct.pack(CVAR_HEADER_FORMAT, header), tuples, data])
예제 #5
0
	def test_compileTupleVariationStore_roundTrip_gvar(self):
		deltas = [(1,1), (2,2), (3,3), (4,4)]
		variations = [
			TupleVariation({"wght": (0.5, 1.0, 1.0), "wdth": (1.0, 1.0, 1.0)},
			               deltas),
			TupleVariation({"wght": (1.0, 1.0, 1.0), "wdth": (1.0, 1.0, 1.0)},
			               deltas)
		]
		tupleVariationCount, tuples, data = compileTupleVariationStore(
			variations, pointCount=4, axisTags=["wght", "wdth"],
			sharedTupleIndices={})
		self.assertEqual(
			decompileTupleVariationStore("gvar", ["wght", "wdth"],
			                             tupleVariationCount, pointCount=4,
			                             sharedTuples={}, data=(tuples + data),
			                             pos=0, dataPos=len(tuples)),
            variations)
예제 #6
0
 def compile(self, ttFont):
     tupleVariationCount, tuples, data = compileTupleVariationStore(
         variations=[v for v in self.variations if v.hasImpact()],
         pointCount=len(ttFont["cvt "].values),
         axisTags=[axis.axisTag for axis in ttFont["fvar"].axes],
         sharedTupleIndices={})
     header = {
         "majorVersion": self.majorVersion,
         "minorVersion": self.minorVersion,
         "tupleVariationCount": tupleVariationCount,
         "offsetToData": CVAR_HEADER_SIZE + len(tuples),
     }
     return bytesjoin([
         sstruct.pack(CVAR_HEADER_FORMAT, header),
         tuples,
         data
     ])
예제 #7
0
	def test_compileTupleVariationStore_noVariations(self):
		self.assertEqual(
			compileTupleVariationStore(variations=[], pointCount=8,
			                           axisTags=["wght", "opsz"],
			                           sharedTupleIndices={}),
            (0, b"", b""))
예제 #8
0
	def test_compileTupleVariationStore_noVariations(self):
		self.assertEqual(
			compileTupleVariationStore(variations=[], pointCount=8,
			                           axisTags=["wght", "opsz"],
			                           sharedTupleIndices={}),
            (0, b"", b""))