Skip to content

Commit 3165cc1

Browse files
committed
[interpolatable] Add mirrored rotated contour for starting-point check
This further found an issue in NotoSansArabic which I visually verified: Glyph qafLamAlefMaksuraabove-ar was not compatible: Contour start point differs: NotoSansArabic-CondensedLight, NotoSansArabic-CondensedSemiBold Contour start point differs: NotoSansArabic-CondensedLight, NotoSansArabic-CondensedSemiBold Contour start point differs: NotoSansArabic-CondensedSemiBold, NotoSansArabic-Condensed Contour start point differs: NotoSansArabic-CondensedSemiBold, NotoSansArabic-Condensed
1 parent 9e96b95 commit 3165cc1

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

Lib/fontTools/varLib/interpolatable.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,15 @@ def add_problem(glyphname, problem):
224224
b = ((bits << i) & mask) | ((bits >> (n - i)))
225225
if b == bits:
226226
isomorphisms.append(_rot_list ([complex(*pt) for pt,bl in points.value], i))
227-
# TODO Add mirrors
227+
# Add mirrored rotations
228+
mirrored = list(reversed(points.value))
229+
reversed_bits = 0
230+
for pt,b in mirrored:
231+
reversed_bits = (reversed_bits << 1) | b
232+
for i in range(n):
233+
b = ((reversed_bits << i) & mask) | ((reversed_bits >> (n - i)))
234+
if b == bits:
235+
isomorphisms.append(_rot_list ([complex(*pt) for pt,bl in mirrored], i))
228236

229237
# Check each master against the next one in the list.
230238
for i, (m0, m1) in enumerate(zip(allNodeTypes[:-1], allNodeTypes[1:])):

0 commit comments

Comments
 (0)