2016-01-14 10:27:54 +01:00
|
|
|
from __future__ import print_function, division, absolute_import
|
|
|
|
from __future__ import unicode_literals
|
2016-01-14 12:24:37 +01:00
|
|
|
from fontTools.misc.testTools import getXML
|
2016-01-14 10:27:54 +01:00
|
|
|
from fontTools.otlLib import builder
|
|
|
|
import unittest
|
|
|
|
|
|
|
|
|
|
|
|
class BuilderTest(unittest.TestCase):
|
2016-01-14 13:08:26 +01:00
|
|
|
def test_buildAnchor_format1(self):
|
|
|
|
anchor = builder.buildAnchor(23, 42)
|
|
|
|
self.assertEqual(getXML(anchor, ttFont=None),
|
|
|
|
'<Anchor Format="1">'
|
|
|
|
' <XCoordinate value="23"/>'
|
|
|
|
' <YCoordinate value="42"/>'
|
|
|
|
'</Anchor>')
|
|
|
|
|
|
|
|
def test_buildAnchor_format2(self):
|
|
|
|
anchor = builder.buildAnchor(23, 42, point=17)
|
|
|
|
self.assertEqual(getXML(anchor, ttFont=None),
|
|
|
|
'<Anchor Format="2">'
|
|
|
|
' <XCoordinate value="23"/>'
|
|
|
|
' <YCoordinate value="42"/>'
|
|
|
|
' <AnchorPoint value="17"/>'
|
|
|
|
'</Anchor>')
|
|
|
|
|
|
|
|
def test_buildAnchor_format3(self):
|
|
|
|
anchor = builder.buildAnchor(
|
|
|
|
23, 42,
|
|
|
|
deviceX=builder.buildDevice([(1, 1), (0, 0)]),
|
|
|
|
deviceY=builder.buildDevice([(7, 7)]))
|
|
|
|
self.assertEqual(getXML(anchor, ttFont=None),
|
|
|
|
'<Anchor Format="3">'
|
|
|
|
' <XCoordinate value="23"/>'
|
|
|
|
' <YCoordinate value="42"/>'
|
|
|
|
' <XDeviceTable>'
|
|
|
|
' <StartSize value="0"/>'
|
|
|
|
' <EndSize value="1"/>'
|
|
|
|
' <DeltaFormat value="1"/>'
|
|
|
|
' <DeltaValue value="[0, 1]"/>'
|
|
|
|
' </XDeviceTable>'
|
|
|
|
' <YDeviceTable>'
|
|
|
|
' <StartSize value="7"/>'
|
|
|
|
' <EndSize value="7"/>'
|
|
|
|
' <DeltaFormat value="2"/>'
|
|
|
|
' <DeltaValue value="[7]"/>'
|
|
|
|
' </YDeviceTable>'
|
|
|
|
'</Anchor>')
|
|
|
|
|
2016-01-14 12:24:37 +01:00
|
|
|
def test_buildDevice_format1(self):
|
|
|
|
device = builder.buildDevice([(1, 1), (0, 0)])
|
|
|
|
self.assertEqual(getXML(device, ttFont=None),
|
|
|
|
'<Device>'
|
|
|
|
' <StartSize value="0"/>'
|
|
|
|
' <EndSize value="1"/>'
|
|
|
|
' <DeltaFormat value="1"/>'
|
|
|
|
' <DeltaValue value="[0, 1]"/>'
|
|
|
|
'</Device>')
|
|
|
|
|
|
|
|
def test_buildDevice_format2(self):
|
|
|
|
device = builder.buildDevice([(1, 2), (-1, 1), (0, 0)])
|
|
|
|
self.assertEqual(getXML(device, ttFont=None),
|
|
|
|
'<Device>'
|
|
|
|
' <StartSize value="-1"/>'
|
|
|
|
' <EndSize value="1"/>'
|
|
|
|
' <DeltaFormat value="2"/>'
|
|
|
|
' <DeltaValue value="[1, 0, 2]"/>'
|
|
|
|
'</Device>')
|
|
|
|
|
|
|
|
def test_buildDevice_format3(self):
|
|
|
|
device = builder.buildDevice([(5, 3), (1, 77)])
|
|
|
|
self.assertEqual(getXML(device, ttFont=None),
|
|
|
|
'<Device>'
|
|
|
|
' <StartSize value="1"/>'
|
|
|
|
' <EndSize value="5"/>'
|
|
|
|
' <DeltaFormat value="3"/>'
|
|
|
|
' <DeltaValue value="[77, 0, 0, 0, 3]"/>'
|
|
|
|
'</Device>')
|
|
|
|
|
2016-01-14 10:27:54 +01:00
|
|
|
def test_getLigatureKey(self):
|
|
|
|
components = lambda s: [tuple(word) for word in s.split()]
|
|
|
|
c = components("fi fl ff ffi fff")
|
|
|
|
c.sort(key=builder.getLigatureKey)
|
2016-01-14 12:24:37 +01:00
|
|
|
self.assertEqual(c, components("fff ffi ff fi fl"))
|
2016-01-14 10:27:54 +01:00
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
unittest.main()
|