@@ -81,33 +81,53 @@ def cubic_to(self, a, b, c):
81
81
82
82
glyph .outline .decompose (d )
83
83
84
+ print (d .entries )
85
+
84
86
assert d .entries == [
85
- ('move_to' , (640.0 , 1088.0 )),
86
- ('line_to' , (640.0 , 256.0 )),
87
- ('line_to' , (1130.0 , 256.0 )),
88
- ('conic_to' , (1402.0 , 256.0 ), (1533.0 , 358.0 )),
89
- ('conic_to' , (1664.0 , 461.0 ), (1664.0 , 673.0 )),
90
- ('conic_to' , (1664.0 , 886.0 ), (1533.0 , 987.0 )),
91
- ('conic_to' , (1402.0 , 1088.0 ), (1130.0 , 1088.0 )),
92
- ('line_to' , (640.0 , 1088.0 )),
93
- ('move_to' , (640.0 , 2048.0 )),
94
- ('line_to' , (640.0 , 1344.0 )),
95
- ('line_to' ,(1093.0 , 1344.0 )),
96
- ('conic_to' , (1317.0 , 1344.0 ), (1426.0 , 1431.0 )),
97
- ('conic_to' , (1536.0 , 1518.0 ), (1536.0 , 1696.0 )),
98
- ('conic_to' , (1536.0 , 1873.0 ), (1426.0 , 1960.0 )),
99
- ('conic_to' , (1317.0 , 2048.0 ), (1093.0 , 2048.0 )),
100
- ('line_to' , (640.0 , 2048.0 )),
101
- ('move_to' , (320.0 , 2304.0 )),
102
- ('line_to' , (1115.0 , 2304.0 )),
103
- ('conic_to' , (1471.0 , 2304.0 ), (1663.0 , 2154.0 )),
104
- ('conic_to' , (1856.0 , 2005.0 ), (1856.0 , 1729.0 )),
105
- ('conic_to' , (1856.0 , 1516.0 ), (1756.0 , 1389.0 )),
106
- ('conic_to' , (1656.0 , 1263.0 ), (1462.0 , 1232.0 )),
107
- ('conic_to' , (1710.0 , 1183.0 ), (1847.0 , 1027.0 )),
108
- ('conic_to' , (1984.0 , 872.0 ), (1984.0 , 640.0 )),
109
- ('conic_to' , (1984.0 , 334.0 ), (1766.0 , 167.0 )),
110
- ('conic_to' , (1548.0 , 0.0 ), (1146.0 , 0.0 )),
111
- ('line_to' , (320.0 , 0.0 )),
112
- ('line_to' , (320.0 , 2304.0 ))
113
- ]
87
+ ('move_to' , (10.0 , 17.0 )),
88
+ ('line_to' , (10.0 , 4.0 )),
89
+ ('line_to' , (17.65625 , 4.0 )),
90
+ ('conic_to' , (21.90625 , 4.0 ), (23.953125 , 5.59375 )),
91
+ ('conic_to' , (26.0 , 7.203125 ), (26.0 , 10.515625 )),
92
+ ('conic_to' , (26.0 , 13.84375 ), (23.953125 , 15.421875 )),
93
+ ('conic_to' , (21.90625 , 17.0 ), (17.65625 , 17.0 )),
94
+ ('line_to' , (10.0 , 17.0 )),
95
+ ('move_to' , (10.0 , 32.0 )),
96
+ ('line_to' , (10.0 , 21.0 )),
97
+ ('line_to' , (17.078125 , 21.0 )),
98
+ ('conic_to' , (20.578125 , 21.0 ), (22.28125 , 22.359375 )),
99
+ ('conic_to' , (24.0 , 23.71875 ), (24.0 , 26.5 )),
100
+ ('conic_to' , (24.0 , 29.265625 ), (22.28125 , 30.625 )),
101
+ ('conic_to' , (20.578125 , 32.0 ), (17.078125 , 32.0 )),
102
+ ('line_to' , (10.0 , 32.0 )),
103
+ ('move_to' , (5.0 , 36.0 )),
104
+ ('line_to' , (17.421875 , 36.0 )),
105
+ ('conic_to' , (22.984375 , 36.0 ), (25.984375 , 33.65625 )),
106
+ ('conic_to' , (29.0 , 31.328125 ), (29.0 , 27.015625 )),
107
+ ('conic_to' , (29.0 , 23.6875 ), (27.4375 , 21.703125 )),
108
+ ('conic_to' , (25.875 , 19.734375 ), (22.84375 , 19.25 )),
109
+ ('conic_to' , (26.71875 , 18.484375 ), (28.859375 , 16.046875 )),
110
+ ('conic_to' , (31.0 , 13.625 ), (31.0 , 10.0 )),
111
+ ('conic_to' , (31.0 , 5.21875 ), (27.59375 , 2.609375 )),
112
+ ('conic_to' , (24.1875 , 0.0 ), (17.90625 , 0.0 )),
113
+ ('line_to' , (5.0 , 0.0 )),
114
+ ('line_to' , (5.0 , 36.0 ))
115
+ ]
116
+
117
+ def test_outline_to_string ():
118
+ face = ft .Face (vera_path ())
119
+ face .set_charmap (0 )
120
+ face .set_char_size (12 , 12 , 300 , 300 )
121
+ glyph = face .load_char (ord ('B' ))
122
+
123
+ s = glyph .outline .to_string (' M ' , ' L ' , ' C ' , ' Q ' )
124
+
125
+ print (s )
126
+
127
+ assert s == b'10 17 M 10 4 L 17.65625 4 L 21.90625 4 23.953125 5.59375 Q 26 7.203125 26 10.515625 Q 26 13.84375 23.953125 15.421875 Q 21.90625 17 17.65625 17 Q 10 17 L 10 32 M 10 21 L 17.078125 21 L 20.578125 21 22.28125 22.359375 Q 24 23.71875 24 26.5 Q 24 29.265625 22.28125 30.625 Q 20.578125 32 17.078125 32 Q 10 32 L 5 36 M 17.421875 36 L 22.984375 36 25.984375 33.65625 Q 29 31.328125 29 27.015625 Q 29 23.6875 27.4375 21.703125 Q 25.875 19.734375 22.84375 19.25 Q 26.71875 18.484375 28.859375 16.046875 Q 31 13.625 31 10 Q 31 5.21875 27.59375 2.609375 Q 24.1875 0 17.90625 0 Q 5 0 L 5 36 L '
128
+
129
+ s = glyph .outline .to_string (' M ' , ' L ' , ' C ' , ' Q ' , prefix = True )
130
+
131
+ print (s )
132
+
133
+ assert s == b' M 10 17 L 10 4 L 17.65625 4 Q 21.90625 4 23.953125 5.59375 Q 26 7.203125 26 10.515625 Q 26 13.84375 23.953125 15.421875 Q 21.90625 17 17.65625 17 L 10 17 M 10 32 L 10 21 L 17.078125 21 Q 20.578125 21 22.28125 22.359375 Q 24 23.71875 24 26.5 Q 24 29.265625 22.28125 30.625 Q 20.578125 32 17.078125 32 L 10 32 M 5 36 L 17.421875 36 Q 22.984375 36 25.984375 33.65625 Q 29 31.328125 29 27.015625 Q 29 23.6875 27.4375 21.703125 Q 25.875 19.734375 22.84375 19.25 Q 26.71875 18.484375 28.859375 16.046875 Q 31 13.625 31 10 Q 31 5.21875 27.59375 2.609375 Q 24.1875 0 17.90625 0 L 5 0 L 5 36'
0 commit comments