§
    ¢”j«°  ã                   óö  — d Z ddlT ddlmZ ddlmZ ddlmZmZm	Z	 ddl
mZ ddlmZmZ dd	lmZ dd
lmZmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddl m!Z!m"Z"m#Z# ddl$Z$ddl%Z% e$j&        d¦  «        Z'dZ(dZ)dZ*dZ+ G d„ d¦  «        Z,	 	 	 d"de(e)e+dg dœd„Z- ee-¦  «        d„ ¦   «         Z.d„ Z/d„ Z0d#d „Z1e2d!k    r2ddl3Z3 e1¦   «         Z4 e3j5         e6 e7e4¦  «        ¦  «        ¦  «         dS dS )$z¯
Tool to find wrong contour order between different masters, and
other interpolatability (or lack thereof) issues.

Call as:
$ fonttools varLib.interpolatable font1 font2 ...
é   )Ú*)Útest_contour_order)Útest_starting_pointé    )ÚRecordingPenÚDecomposingRecordingPenÚlerpRecordings)ÚTransformPen)ÚStatisticsPenÚStatisticsControlPen)ÚOpenContourError)ÚpiecewiseLinearMapÚnormalizeLocation)ÚfloatToFixedToStr)Ú	Transform)Údefaultdict)ÚSimpleNamespace)Úwraps)Úpformat)ÚsqrtÚatan2ÚpiNzfontTools.varLib.interpolatablegffffffî?g      à?gü©ñÒMb`?iè  c                   ó,   — e Zd ZdZd„ Zd„ Zd„ Zdd„ZdS )ÚGlyph)	Ú
recordingsÚ
greenStatsÚcontrolStatsÚgreenVectorsÚcontrolVectorsÚ	nodeTypesÚisomorphismsÚpointsÚopenContoursc                 ót   — || _         | j        D ]}t          | |g ¦  «         Œ|                      |¦  «         d S ©N)ÚnameÚITEMSÚsetattrÚ	_populate)ÚselfÚ	glyphnameÚglyphsetÚitems       ún/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/fontTools/varLib/interpolatable.pyÚ__init__zGlyph.__init__4   sG   € ØˆŒ	Ø”Jð 	$ð 	$ˆDÝ�D˜$ Ñ#Ô#Ð#Ð#Ø�Š�xÑ Ô Ð Ð Ð ó    c                 ó¢   — | j         D ]F}t          t          | |¦  «        ¦  «        |k    r#t          | |¦  «                             d ¦  «         ŒGd S r%   )r'   ÚlenÚgetattrÚappend)r*   Úixr-   s      r.   Ú_fill_inzGlyph._fill_in:   sY   € Ø”Jð 	1ð 	1ˆDÝ•7˜4 Ñ&Ô&Ñ'Ô'¨2Ò-Ð-Ý˜˜dÑ#Ô#×*Ò*¨4Ñ0Ô0Ð0øð	1ð 	1r0   c                 óž  — || j                  }|d u | _        | j        rd S t          t          |¬¦  «        }	 |                     |d¬¦  «         n%# t
          $ r |                     |¦  «         Y nw xY w|j        | _        ~t          | j        ¦  «        D �]6\  }}d„ |j        D ¦   «         }| j	         
                    |¦  «         t          |¬¦  «        }t          |¬¦  «        }	 |                     |¦  «         |                     |¦  «         | j         
                    d¦  «         nF# t          $ r9}	| j         
                    d¦  «         |                      |¦  «         Y d }	~	ŒÕd }	~	ww xY w| j         
                    |¦  «         | j         
                    |¦  «         | j         
                    t)          |¦  «        ¦  «         | j         
                    t)          |¦  «        ¦  «         |d         dk    r|                      |¦  «         �Œ‚|d         dk    sJ ‚|d	         d
v sJ ‚t-          ¦   «         }
t/          |
d¦  «        }|                     |¦  «         | j         
                    |
j        ¦  «         g }| j         
                    |¦  «         t5          |
j        |d¦  «         t5          |
j        |d¦  «         �Œ8d S )N©r,   T)ÚoutputImpliedClosingLinec                 ó   — g | ]\  }}|‘ŒS © r;   )Ú.0ÚopÚargs      r.   ú
<listcomp>z#Glyph._populate.<locals>.<listcomp>N   s   € Ð9Ð9Ð9¡  C˜Ð9Ð9Ð9r0   Fr   ÚaddComponentÚmoveToéÿÿÿÿ)Ú	closePathÚendPath)r&   Údoesnt_existÚPerContourOrComponentPenr   ÚdrawÚ	TypeErrorÚvaluer   Ú	enumerater    r4   r   r   Úreplayr#   r   r6   r   r   r   Úcontour_vector_from_statsr   ÚSimpleRecordingPointPenÚSegmentToPointPenr"   r!   Úadd_isomorphisms)r*   r,   ÚglyphÚperContourPenr5   Úcontourr    r   r   Úer"   Ú	converterr!   s                r.   r)   zGlyph._populate?   sò  € Ø˜œÔ#ˆØ! T˜MˆÔØÔð 	ØˆFå0µÈÐQÑQÔQˆð	&Ø�JŠJ�}¸tˆJÑDÔDÐDÐDøÝð 	&ð 	&ð 	&Ø�JŠJ�}Ñ%Ô%Ð%Ð%Ð%ð	&øøøà'Ô-ˆŒØå$ T¤_Ñ5Ô5ð (	?ñ (	?‰KˆB�Ø9Ð9¨7¬=Ð9Ñ9Ô9ˆIØŒN×!Ò! )Ñ,Ô,Ð,å&°Ð9Ñ9Ô9ˆJÝ/¸ÐBÑBÔBˆLðØ—’˜zÑ*Ô*Ð*Ø—’˜|Ñ,Ô,Ð,ØÔ!×(Ò(¨Ñ/Ô/Ð/Ð/øÝ#ð ð ð ØÔ!×(Ò(¨Ñ.Ô.Ð.Ø—’˜bÑ!Ô!Ð!Ø����øøøøðøøøð ŒO×"Ò" :Ñ.Ô.Ð.ØÔ×$Ò$ \Ñ2Ô2Ð2ØÔ×$Ò$Õ%>¸zÑ%JÔ%JÑKÔKÐKØÔ×&Ò&Õ'@ÀÑ'NÔ'NÑOÔOÐOð ˜Œ|˜~Ò-Ð-Ø—’˜bÑ!Ô!Ð!Ùà˜Q”< 8Ò+Ð+Ð+Ð+Ø˜R”=Ð$<Ð<Ð<Ð<Ð<Ý,Ñ.Ô.ˆFÝ)¨&°%Ñ8Ô8ˆIØ�NŠN˜9Ñ%Ô%Ð%ð ŒK×Ò˜vœ|Ñ,Ô,Ð,àˆLØÔ×$Ò$ \Ñ2Ô2Ð2õ ˜Vœ\¨<¸Ñ?Ô?Ð?å˜Vœ\¨<¸Ñ>Ô>Ð>Ñ>ðQ(	?ð (	?s*   ·A ÁA1Á0A1Ã'AD,Ä,
E/Ä6/E*Å*E/Nc                 óŒ   — |€!| j         D ]}|                     |¦  «         Œd S | j         |                              |¦  «         d S r%   )r   rG   )r*   ÚpenÚcontour_idxrR   s       r.   rG   z
Glyph.draww   s[   € ØÐØœ?ð "ð "�Ø—’˜SÑ!Ô!Ð!Ð!ð"ð "ð ŒO˜KÔ(×-Ò-¨cÑ2Ô2Ð2Ð2Ð2r0   r%   )Ú__name__Ú
__module__Ú__qualname__r'   r/   r6   r)   rG   r;   r0   r.   r   r   '   s]   € € € € € ð
€Eð!ð !ð !ð1ð 1ð 1ð
6?ð 6?ð 6?ðp3ð 3ð 3ð 3ð 3ð 3r0   r   F)Ú	locationsÚ	toleranceÚ	kinkinessÚupemÚshow_allÚdiscrete_axesc             #   ól  ‡ ‡V‡W‡X‡Y‡Z‡[K  — |dk    r|dz  }d|cxk    rdk    sn J ‚|dk    r|dz  }d|k    sJ ‚|pd„ ‰ D ¦   «         }|€d„ ‰ D ¦   «         }t          ‰ ||	¬¦  «        \  ŠZ}
ˆ ˆZfd„}|D �
]ÀŠVt                               d	‰V¦  «         ˆVfd
„‰ D ¦   «         }t          d„ |D ¦   «         ¦  «        dk    rŒJt	          t          |‰ |¦  «        ¦  «        D ]`\  }\  }}}|j        r|s‰Vt          j        ||dœfV — Œ'd}t	          |j	        ¦  «        D ]\  }}|sŒd}‰Vt          j
        |||dœfV — Œ |rŒ`Œad gt          ‰ ¦  «        z  }|
D �	]à}||         }|�|j        sŒ ||‰V¦  «        }|€Œ$||         }|�|j        sŒ6|j        }|j        ŠWt          |¦  «        t          ‰W¦  «        k    r?‰Vt          j        ||         ||         ||t          |¦  «        t          ‰W¦  «        dœfV — Œ£|‰Wk    ràt	          t          |‰W¦  «        ¦  «        D ]Â\  }\  }}||k    rŒt          |¦  «        t          |¦  «        k    r@‰Vt          j        |||         ||         ||t          |¦  «        t          |¦  «        dœfV — Œot	          t          ||¦  «        ¦  «        D ]5\  }\  }}||k    r'‰Vt          j        ||||         ||         ||||dœ	fV — Œ5Œ6ŒÃt          ||¦  «        \  } }!| |k     rQ‰Vt          j        ||         ||         ||t#          t%          t          |!¦  «        ¦  «        ¦  «        |!| dœfV — |!||<   |j        }"|j        ŠX|j        }#|j        ŠY|j        }$|j        Š[||         }!|!�,‰Xr*ˆXfd„|!D ¦   «         ŠXˆYfd„|!D ¦   «         ŠYˆ[fd„|!D ¦   «         Š[g }%t          |$‰[¦  «        D ]z\  }&}'	 t-          ¦   «         }(t#          t/          |&j        |'j        ¦  «        ¦  «        |(_        |%                     |(¦  «         ŒV# t4          $ r |%                     d ¦  «         Y Œww xY wt	          t          |"‰X¦  «        ¦  «        D �]\  }\  })}*|)�5|*�3t          |)¦  «        dk    s t          |)¦  «        t          |*¦  «        k    rŒAt7          |||||!¦  «        \  } }+},| |k     r'‰Vt          j        |||         ||         ||d|+|,| dœ
fV — |%|         }-|-�r|#|         d         dk     ‰Y|         d         dk     k    �rXt;          d ¬¦  «        }.|-                     |.¦  «         t?          |.¦  «        }/|#|         }0‰Y|         }1|0d         |0d         z  }2|1d         |1d         z  }3|/d         |/d         z  }4t	          t          j         t          j!        f¦  «        D ]»\  }5}6|5rtE          |2|3¦  «        }7ŒtG          |2|3z  ¦  «        }7t           $                    d|6|4|7|2|3¦  «         |5s|7|z  |4dz   k    s|5rbd|7|z  z   |4k     rV	 |5r|7|4z  } n|4|7z  } n# tJ          $ r d} Y nw xY wt           $                    d| ¦  «         ‰V|6|||         ||         ||| dœfV — Œ¼�Œ|j&        }|j&        ŠW||         �‰WrˆWfd„||         D ¦   «         ŠWd}8|tN          z  tP          z  |z  }9t	          t          |‰W¦  «        ¦  «        D �]L\  }\  })}*|)�5|*�3t          |)¦  «        dk    s t          |)¦  «        t          |*¦  «        k    rŒAt%          t          |)¦  «        ¦  «        D �]í}:|)|:         };|*|:         }<|;d         r|<d         sŒ$|)|:dz
           }=|*|:dz
           }>|)|:dz   t          |)¦  «        z           }?|*|:dz   t          |*¦  «        z           }@|=d         r	|>d         rŒ�|?d         r	|@d         rŒ’tS          |;d         Ž };tS          |<d         Ž }<tS          |=d         Ž }=tS          |>d         Ž }>tS          |?d         Ž }?tS          |@d         Ž }@|;|=z
  }A|?|;z
  }B|<|>z
  }C|@|<z
  }D|Aj*        |Bj+        z  |Aj+        |Bj*        z  z
  }E|Cj*        |Dj+        z  |Cj+        |Dj*        z  z
  }F	 |EtY          |A¦  «        tY          |B¦  «        z  z  }E|FtY          |C¦  «        tY          |D¦  «        z  z  }Fn# tJ          $ r Y �Œ‘w xY wtY          |E¦  «        |8k    stY          |F¦  «        |8k    r�Œ½|Aj*        |Bj*        z  |Aj+        |Bj+        z  z   }G|Cj*        |Dj*        z  |Cj+        |Dj+        z  z   }H|Gdk     s|Hdk     r�Œ	tY          |A¦  «        tY          |A¦  «        tY          |B¦  «        z   z  }ItY          |C¦  «        tY          |C¦  «        tY          |D¦  «        z   z  }JtY          |I|Jz
  ¦  «        }KtY          |K¦  «        |8k     r�ŒŽ|;|<z   dz  }L|=|>z   dz  }M|?|@z   dz  }N|L|Mz
  }O|N|Lz
  }P|Oj*        |Pj+        z  |Oj+        |Pj*        z  z
  }Q	 |QtY          |O¦  «        tY          |P¦  «        z  z  }Qn# tJ          $ r Y �Œ w xY wtY          |Q¦  «        ||z  z  |8k    r�Œ|QtY          |O¦  «        z  tY          |P¦  «        z  }RtY          |O|Pz   ¦  «        }StY          |R|Sz  ¦  «        }T|T|9k     r�Œm|T|Sz  }U|U|8k    r�Œz|8tY          |Q¦  «        |z  z  } t           $                    d |T|U|Q|K¦  «         t           $                    d| ¦  «         ‰Vt          j-        |||         ||         |||:| d!œfV — �Œï�ŒN|r"‰Vt          j.        ||         ||         ||d"œfV — �	Œâ�
ŒÂd S )#Né
   g{®Gáz„?r   r   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r;   )Úrepr)r<   Úgs     r.   r?   ztest_gen.<locals>.<listcomp>“   s   € Ð1Ð1Ð1 !•d˜1‘g”gÐ1Ð1Ð1r0   c                 ó@   — h | ]}|                      ¦   «         D ]}|’ŒŒS r;   ©Úkeys)r<   r,   re   s      r.   ú	<setcomp>ztest_gen.<locals>.<setcomp>˜   s-   € ÐGÐGÐG˜°x·}²}±´ÐGÐG°!�!ÐGÐGÐGÐGr0   )r`   c                 ó�   •— | €d S ‰|          } | €d S ‰|          �,‰|          |         €‰|          } ‰|          �‰|          |         ®| S r%   r;   )Úir+   Ú	glyphsetsÚparentss     €€r.   Úgrand_parentztest_gen.<locals>.grand_parentž   s`   ø€ Øˆ9Ø�4Ø�AŒJˆØˆ9Ø�4Ø�aŒjÐ$¨°1¬°iÔ)@Ð)HØ˜”
ˆAð �aŒjÐ$¨°1¬°iÔ)@Ð)Hàˆr0   zTesting glyph %sc                 ó0   •— g | ]}t          ‰|¦  «        ‘ŒS r;   )r   )r<   r,   Ú
glyph_names     €r.   r?   ztest_gen.<locals>.<listcomp>ª   s#   ø€ ÐKÐKÐK°X•U˜: xÑ0Ô0ÐKÐKÐKr0   c                 ó    — g | ]}|j         °	d ‘ŒS )r   )rE   )r<   rP   s     r.   r?   ztest_gen.<locals>.<listcomp>«   s    € ÐCÐCÐC�e°Ô0BÐC�ÐCÐCÐCr0   )ÚtypeÚmasterÚ
master_idxFT)rr   rs   rt   rR   )rr   Úmaster_1Úmaster_2Úmaster_1_idxÚmaster_2_idxÚvalue_1Úvalue_2)rr   Úpathru   rv   rw   rx   ry   rz   )	rr   r{   Únoderu   rv   rw   rx   ry   rz   )rr   ru   rv   rw   rx   ry   rz   r\   c                 ó    •— g | ]
}‰|         ‘ŒS r;   r;   )r<   rk   Úm1Isomorphismss     €r.   r?   ztest_gen.<locals>.<listcomp>9  s   ø€ Ð!FÐ!FÐ!F¸ .°Ô"3Ð!FÐ!FÐ!Fr0   c                 ó    •— g | ]
}‰|         ‘ŒS r;   r;   )r<   rk   Ú	m1Vectorss     €r.   r?   ztest_gen.<locals>.<listcomp>:  s   ø€ Ð<Ð<Ð<¨a˜Y qœ\Ð<Ð<Ð<r0   c                 ó    •— g | ]
}‰|         ‘ŒS r;   r;   )r<   rk   Ú
recording1s     €r.   r?   ztest_gen.<locals>.<listcomp>;  s   ø€ Ð>Ð>Ð>°˜j¨œmÐ>Ð>Ð>r0   )
rr   rR   ru   rv   rw   rx   ry   rz   Úreversedr\   r8   z;%s: actual size %g; threshold size %g, master sizes: %g, %ggñhãˆµøä>ztolerance %g)rr   rR   ru   rv   rw   rx   r\   c                 ó    •— g | ]
}‰|         ‘ŒS r;   r;   )r<   rk   Úm1s     €r.   r?   ztest_gen.<locals>.<listcomp>³  s   ø€ Ð6Ð6Ð6 �b˜”eÐ6Ð6Ð6r0   gš™™™™™¹?é   z=kink: deviation %g; deviation_ratio %g; sin_mid %g; r_diff %g)rr   rR   ru   rv   rw   rx   rI   r\   )rr   ru   rv   rw   rx   )/Úfind_parents_and_orderÚlogÚinfor2   rJ   ÚziprE   ÚInterpolatableProblemÚMISSINGr#   Ú	OPEN_PATHr    Ú
PATH_COUNTÚ
NODE_COUNTÚNODE_INCOMPATIBILITYr   ÚCONTOUR_ORDERÚlistÚranger!   r   r   r   r	   rI   r4   Ú
ValueErrorr   ÚWRONG_START_POINTr   rK   rL   ÚUNDERWEIGHTÚ
OVERWEIGHTÚmaxr   ÚdebugÚZeroDivisionErrorr"   ÚDEFAULT_KINKINESS_LENGTHÚDEFAULT_KINKINESSÚcomplexÚrealÚimagÚabsÚKINKÚNOTHING)\rl   ÚglyphsÚnamesÚignore_missingr[   r\   r]   r^   r_   r`   Úorderrn   Ú	allGlyphsrt   rP   r,   r&   Úhas_openr5   ÚopenÚ	matchingsÚm1idxÚglyph1Úm0idxÚglyph0Úm0ÚpathIxÚnodes1Únodes2ÚnodeIxÚn1Ún2Úthis_toleranceÚmatchingÚm0IsomorphismsÚ	m0VectorsÚ
recording0ÚmidRecordingÚc0Úc1ÚrÚcontour0Úcontour1Úproposed_pointÚreverserR   ÚmidStatsÚ	midVectorÚm0VecÚm1VecÚsize0Úsize1ÚmidSizeÚ
overweightÚproblem_typeÚexpectedSizeÚtÚdeviation_thresholdrk   Úpt0Úpt1Úpt0_prevÚpt1_prevÚpt0_nextÚpt1_nextÚd0_prevÚd0_nextÚd1_prevÚd1_nextÚsin0Úsin1Údot0Údot1Úr0Úr1Úr_diffÚmidÚmid_prevÚmid_nextÚmid_d0Úmid_d1Úsin_midÚcrossÚarc_lenÚ	deviationÚdeviation_ratiorp   r…   r~   r€   rm   r‚   s\   `                                                                                     @@@@@@r.   Útest_genrê      sŽ  øøøøøøøè è € ð �B‚€Ø�TÑˆ	Ø�	ÐÐÒÐ˜QÒÐÐÐÐÐØ�B‚€Ø�TÑˆ	Ø�	Š>ˆ>ˆ>ˆ>àÐ1Ð1Ð1 yÐ1Ñ1Ô1€Eà€~ð HÐG IÐGÑGÔGˆå+Ø�9¨Mðñ ô �N€GˆUðð ð ð ð ð ð ð ^ñ ^ˆ
Ý�ŠÐ# ZÑ0Ô0Ð0ØKÐKÐKÐKÀÐKÑKÔKˆ	ÝÐCÐC˜yÐCÑCÔCÑDÔDÈÒIÐIØÝ3<Ý�	˜9 eÑ,Ô,ñ4
ô 4
ð 	ð 	Ñ/ˆJÑ/˜ ¨$ð Ô!ð 
Ø%ð à"å$9Ô$AØ&*Ø*4ðð ðð ð ð ð àˆHÝ% eÔ&8Ñ9Ô9ð ð ‘��DØð ØØ�àå 5Ô ?Ø"&Ø&0Ø#%ð	ð ðð ð ð ð ð ð Øðð �F�S ™^œ^Ñ+ˆ	àð w	ñ w	ˆEØ˜uÔ%ˆFØˆ~ VÔ%5ˆ~ØØ �L ¨
Ñ3Ô3ˆEØˆ}ØØ˜uÔ%ˆFØˆ~ VÔ%5ˆ~Øð Ô!ˆBØÔ!ˆBÝ�2‰wŒw�#˜b™'œ'Ò!Ð!àå 5Ô @Ø$)¨%¤LØ$)¨%¤LØ(-Ø(-Ý#& r¡7¤7Ý#& r¡7¤7ðð ðð ð ð ð à�RŠxˆxÝ09½#¸bÀ"¹+¼+Ñ0FÔ0Fð "%ð "%Ñ,�FÑ,˜V VØ Ò'Ð'Ø Ý˜6‘{”{¥c¨&¡k¤kÒ1Ð1à&å(=Ô(HØ(.Ø,1°%¬LØ,1°%¬LØ05Ø05Ý+.¨v©;¬;Ý+.¨v©;¬;ð	ð 	ðð ð ð ð !Ý,5µc¸&À&Ñ6IÔ6IÑ,JÔ,Jð %ð %Ñ(˜¡  RØ š8˜8à *å,AÔ,VØ,2Ø,2Ø05°e´Ø05°e´Ø49Ø49Ø/1Ø/1ð
!"ð 
!"ð#ð ð ð ð %ð $ð%õ, (:¸&À&Ñ'IÔ'IÑ$ˆN˜HØ 	Ò)Ð)àå 5Ô CØ$)¨%¤LØ$)¨%¤LØ(-Ø(-Ý#'­­c°(©m¬mÑ(<Ô(<Ñ#=Ô#=Ø#+Ø%3ð	ð 	ðð ð ð ð $,�	˜%Ñ ð $Ô0ˆNØ#Ô0ˆNØÔ+ˆIØÔ+ˆIØÔ*ˆJØÔ*ˆJð ! Ô'ˆHàÐ$¨Ð$à!FÐ!FÐ!FÐ!F¸XÐ!FÑ!FÔ!F�Ø<Ð<Ð<Ð<°8Ð<Ñ<Ô<�	Ø>Ð>Ð>Ð>°XÐ>Ñ>Ô>�
àˆLÝ˜j¨*Ñ5Ô5ð .ð .‘��Bð.Ý$™œ�AÝ"¥>°"´(¸B¼HÑ#EÔ#EÑFÔF�A”GØ ×'Ò'¨Ñ*Ô*Ð*Ð*øÝ!ð .ð .ð .à ×'Ò'¨Ñ-Ô-Ð-Ð-Ð-ð.øøøõ -6Ý�N NÑ3Ô3ñ-ô -ð bñ bÑ(�Ñ(�X˜xð Ð$ØÐ'Ý˜8‘}”}¨Ò)Ð)Ý˜8‘}”}­¨H©¬Ò5Ð5ð å:MØ˜F B¨	°8ñ;ô ;Ñ7� °ð " IÒ-Ð-à"å$9Ô$KØ')Ø(-¨e¬Ø(-¨e¬Ø,1Ø,1Ø'(Ø'5Ø(/Ø)7ðð ðð ð ð ð. ' rÔ*�àñ 7 	¨"¤¨aÔ 0°1Ò 4¸)ÀB¼-ÈÔ:JÈQÒ:NÒOÑOÝ,°dÐ;Ñ;Ô;�HØ—N’N 8Ñ,Ô,Ð,å 9¸(Ñ CÔ C�Ià% bœM�EØ% bœM�EØ! !œH u¨Q¤xÑ/�EØ! !œH u¨Q¤xÑ/�EØ'¨œl¨Y°q¬\Ñ9�Gå4=å1Ô=Ý1Ô<ðñ5ô 5ð +ð +Ñ0˜
 Lð &ð ?Ý+.¨u°eÑ+<Ô+<˜LØ$å+/°¸±Ñ+>Ô+>˜LåŸ	š	ØYØ(Ø#Ø(Ø!Ø!ñô ð ð !+ðØ/;¸iÑ/GÈ'ÐTXÉ.Ò/XÐ/XØ(ð 0YØ-1°LÀ9Ñ4LÑ-LÈwÒ-VÐ-Vð3Ø#-ð !LØ5AÀGÑ5K N Nà5<¸|Ñ5K NøøÝ#4ð 3ð 3ð 3Ø12   ð3øøøåŸIšI n°nÑEÔEÐEà *à,8Ø/1Ø05°e´Ø05°e´Ø49Ø49Ø1?ð!"ð !"ð#ð ð ð øùð  ”ˆBØ”ˆBð ˜ÔÐ+°Ð+Ø6Ð6Ð6Ð6 Y¨uÔ%5Ð6Ñ6Ô6�àˆAàÕ/Ñ/Õ2CÑCÀiÑOð  õ -6µc¸"¸b±k´kÑ,BÔ,Bð |ñ |Ñ(�Ñ(�X˜xàÐ$ØÐ'Ý˜8‘}”}¨Ò)Ð)Ý˜8‘}”}­¨H©¬Ò5Ð5ð õ
 �s 8™}œ}Ñ-Ô-ð nñ n�AØ" 1œ+�CØ" 1œ+�CØ˜qœ6ð !¨¨Q¬ð !à Ø'¨¨A©œ�HØ'¨¨A©œ�HØ'¨¨Q©µ#°h±-´-Ñ(?Ô@�HØ'¨¨Q©µ#°h±-´-Ñ(?Ô@�Hà ”{ð ! x°¤{ð !à Ø ”{ð ! x°¤{ð !à å! 3 q¤6Ð*�CÝ! 3 q¤6Ð*�CÝ&¨°¬Ð4�HÝ&¨°¬Ð4�HÝ&¨°¬Ð4�HÝ&¨°¬Ð4�Hð " H™n�GØ&¨™n�GØ! H™n�GØ&¨™n�Gà"œ<¨'¬,Ñ6¸¼ÈÌÑ9TÑT�DØ"œ<¨'¬,Ñ6¸¼ÈÌÑ9TÑT�Dð!Ø¥ G¡¤­s°7©|¬|Ñ ;Ñ;˜Ø¥ G¡¤­s°7©|¬|Ñ ;Ñ;˜˜øÝ,ð !ð !ð !Ø ™ð!øøøõ ˜4‘y”y 1’}�}­¨D©	¬	°Aª¨á ð #œ<¨'¬,Ñ6¸¼ÈÌÑ9TÑT�DØ"œ<¨'¬,Ñ6¸¼ÈÌÑ9TÑT�DØ˜a’x�x 4¨!¢8 8á õ ˜W™œ­¨W©¬½¸G¹¼Ñ)DÑE�BÝ˜W™œ­¨W©¬½¸G¹¼Ñ)DÑE�BÝ   b¡™\œ\�FÝ˜6‘{”{ Q’�á à ™9¨™/�CØ (¨8Ñ 3°qÑ8�HØ (¨8Ñ 3°qÑ8�Hà  8™^�FØ%¨™^�Fà$œk¨F¬KÑ7¸&¼+ÈÌÑ:SÑS�Gð!Ø¥3 v¡;¤;µ°V±´Ñ#<Ñ<˜˜øÝ,ð !ð !ð !Ø ™ð!øøøõ ˜7‘|”| y°9Ñ'<Ñ=ÀÒBÐBá ð $¥c¨&¡k¤kÑ1µC¸±K´KÑ?�EÝ! &¨6¡/Ñ2Ô2�GÝ # E¨G¡OÑ 4Ô 4�IØ Ð#6Ò6Ð6Ù Ø&/°'Ñ&9�OØ&¨Ò*Ð*Ù à%&­#¨g©,¬,¸Ñ*BÑ%C�Nå—I’IØWØ!Ø'ØØñô ð õ —I’I˜n¨nÑ=Ô=Ð=à"å$9Ô$>Ø')Ø(-¨e¬Ø(-¨e¬Ø,1Ø,1Ø%&Ø)7ð	ð 	ðð ð ð ñ ñEnðh ð 
àå 5Ô =Ø$)¨%¤LØ$)¨%¤LØ(-Ø(-ðð ð	ð 	ð 	ð 	ùñ]w	ðO^ð ^sJ   Î;APÐP-	Ð,P-	ØXØX#Ø"X#áAbâ
b-â,b-ç+"hè
hèhc                  óˆ   — t          t          ¦  «        }t          | i |¤ŽD ] \  }}||                              |¦  «         Œ!|S r%   )r   r’   rê   r4   )ÚargsÚkwargsÚproblemsr+   Úproblems        r.   Útestrð   I  sQ   € å�4Ñ Ô €HÝ&¨Ð7°Ð7Ð7ð ,ð ,Ñˆ	�7Ø�Ô×"Ò" 7Ñ+Ô+Ð+Ð+Ø€Or0   c                 óŠ   — | |v rd S ||          || <   t          ||          dg ¦  «        D ]}t          |j        |||¦  «         Œd S )NÚ
components)r3   ÚrecursivelyAddGlyphÚ	glyphName)r+   r,   Ú
ttGlyphSetÚglyfÚ	components        r.   ró   ró   Q  sh   € Ø�HÐÐØˆØ$ YÔ/€HˆYÑå˜T )œ_¨l¸BÑ?Ô?ð Mð Mˆ	Ý˜IÔ/°¸:ÀtÑLÔLÐLÐLðMð Mr0   c                 ót   — t           j                             | ¦  «        }|rt          j        |d¬¦  «         | S )NT)Úexist_ok)Úosr{   ÚdirnameÚmakedirs)r{   rû   s     r.   Úensure_parent_dirrý   Z  s7   € ÝŒg�oŠo˜dÑ#Ô#€GØð ,Ý
Œ�G dÐ+Ñ+Ô+Ð+Ø€Kr0   c                 óÖ'  ‡W‡X‡Y‡Z‡[‡\— ddl }ddl}|                     dt          j        ¬¦  «        }|                     ddd¬¦  «         |                     d	d
d¬¦  «         |                     ddt          dt          z  ¬¦  «         |                     ddt          dt          z  ¬¦  «         |                     dd
d¬¦  «         |                     ddd¬¦  «         |                     ddd¬¦  «         |                     ddd¬¦  «         |                     dd
d¬¦  «         |                     ddd¬¦  «         |                     dd
d¬¦  «         |                     dd t          d!d"¬#¦  «         |                     d$d%t          d&d'¬(¦  «         |                     d)d*d
d+¬¦  «         |                     d,d
d-¬¦  «         | 
                    | ¦  «        } dd.lm}  || j        rd/nd0¬1¦  «         | j        r |d2¬1¦  «         | j        r| j                             ¦   «         nd}dd3lm} g }g }g }	t'          ¦   «         Š[t(          }
t+          | j        ¦  «        }t/          | j        ¦  «        d4k    �r‡d}| j        d                              d5¦  «        r¤dd6lm} |                     | j        d         ¦  «        }d7„ |j        D ¦   «         | _        d8„ |j        D ¦   «         }	d9„ |j        D ¦   «         Š[ˆ[fd:„|j        D ¦   «         ŠZd;„ |j        D ¦   «         ŠYˆYfd<„‰Z                     ¦   «         D ¦   «         ŠZ�nÁ| j        d                              d=¦  «        r©dd>lm }m!}  || j        d         ¦  «        }|j"        }
 ||¦  «        }d?„ |j        D ¦   «         }d@„ |D ¦   «         }g | _        dA„ |j        D ¦   «         }	dB„ |j        D ¦   «         ŠZdC„ |j        D ¦   «         ŠYˆYfdD„‰Z                     ¦   «         D ¦   «         ŠZ�nø| j        d                              dE¦  «        s!| j        d                              dF¦  «        �r·ddGl#m$}  || j        d         ¦  «        }|dH         j%        }
|dI         }i ŠX|j        D ]}|j&        |j'        |j(        dJœ‰X|j)        <   Œ dK}dL|v r™|dL         }tU          |j+        dMd¦  «        rdN„ ‰XD ¦   «         ŠXdO}nl|j,                             ¦   «         D ]R\  }}‰X|          -                    ¦   «         }|                     ¦   «         D ]\  }}t]          ||¦  «        ‰X|         |<   ŒŒSi }t_          t`          ¦  «        }dP|v ró|dP         }|dQ         }|€&tc          |j2         3                    ¦   «         ¦  «        }|D ]¶} |j2        |          D ]¦}!i }"g }#tc          |!j                             ¦   «         ¦  «        D ]-\  }$}%|%d4         |"|$<   |# 4                    |$|%d4         f¦  «         Œ.t+          |#¦  «        }&|&|vr| 5                    |"dOdK¬R¦  «        ||&<   tm          | ||&         ||&         |¦  «         Œ§Œ·�n¶dS|v �r±|dI         j        }'|dS         j7        j8        d         }(|(j9        })|€!tc          |) 3                    ¦   «         ¦  «        }|D �]^} |)|          }*|*j:        }+tU          |+dTd¦  «        h},tU          |+dTd¦  «        }-d}.|*j;        D ]?}/|/dUk    r|, <                    |-¦  «         n|/dTk    rt{          |.t|          ¦  «        sJ ‚|.}-|/}.Œ@t          |+dV¦  «        sŒ�|+j@        jA        }0|,D ]À}-|0jB        |-         }1|1jC        D ]©}2|0jD        jE        |2         }3i }"g }#t�          |3jG        ¦  «        D ]5\  }4}|'|4         j)        }$|jH        }%|%|"|$<   |# 4                    |$|%f¦  «         Œ6t+          |#¦  «        }&|&|vr| 5                    |"dOdK¬R¦  «        ||&<   ||&         Š\||&         |          ‰\| <   ŒªŒÁ�Œ`dWg}| 5                    ¦   «         g}i g}	dX„ tc          ‰X 3                    ¦   «         ¦  «        D ¦   «         ŠZtc          | 3                    ¦   «         dY„ ¬Z¦  «        D ]‚}&d[d\ I                    ˆXfd]„|&D ¦   «         ¦  «        z   d[z   }5|r|5d^z  }5| 4                    |5¦  «         | 4                    ||&         ¦  «         |	 4                    ta          |&¦  «        ¦  «         ŒƒdO| _J        g | _        |	sd_„ |D ¦   «         }	| j        D ]Ó}6|6                     d`¦  «        rQddalKmL}7  |7|6¦  «        }t›          ¦   «         }8| N                    |8¦  «         |8j%        }
| 4                    |¦  «         n3ddGl#m$}  ||6¦  «        }|dH         j%        }
| 4                    |¦  «         | 4                     ||6¦  «         O                    dbd4¦  «        d         ¦  «         ŒÔt/          |¦  «        dck     rt            Q                    dd¦  «         dS g }|D ]\}t          |de¦  «        r| 5                    ¦   «         Š\n|Š\| 4                    ˆ\fdf„‰\ 3                    ¦   «         D ¦   «         ¦  «         Œ]| jR        rZt'          | jR        ¦  «        ŠWˆWfdg„t§          ||¦  «        D ¦   «         }ˆWfdh„t§          ||	¦  «        D ¦   «         }	ˆWfdi„|D ¦   «         }|s&tc          t'          dj„ |D ¦   «         ¦  «        ¦  «        }t'          |¦  «        }9|D ]4Š\t'          ‰\ 3                    ¦   «         ¦  «        }:|9|:z
  };|;r
|;D ]}<d‰\|<<   ŒŒ5ˆZˆ[fdk„|	D ¦   «         }	| jT        pt          }=| jU        �| jU        nt          }>	 t            V                    dlt/          |¦  «        ¦  «         t            V                    dmt¯          |	¦  «        ¦  «         t±          ||||	|
| jJ        |=|>| jY        ‰[¬n¦
  «
        }?t_          t´          ¦  «        }@| j[        €|j\        n!t»          t½          | j[        ¦  «        do¦  «        }A| j_        �sú| j`        rMddl`}B|?D ] \  } }C|@|           4                    |C¦  «         Œ!tÃ          |B b                    |@¦  «        |A¬p¦  «         �nÉd}D|?D �]Ÿ\  } }E|@|           4                    |E¦  «         | |Dk    rtÃ          dq| › dr�|A¬p¦  «         | }Dd}Fds|Ev r	|Eds         fn|Edt         |Edu         f}G|G|Fk    rFdv|Ev r	|Edv         fn|Edw         |Edx         f}HtÃ          dydz I                    |H¦  «        z  |A¬p¦  «         |G}F|Ed{         tÆ          jd        k    rtÃ          d||Edv         z  |A¬p¦  «         ŒÚ|Ed{         tÆ          je        k    rtÃ          d}|Edv         z  |A¬p¦  «         �Œ|Ed{         tÆ          jf        k    r2tÃ          d~|Ed         |Edw         |Ed€         |Edx         fz  |A¬p¦  «         �ŒT|Ed{         tÆ          jg        k    r9tÃ          d�|Ed‚         |Ed         |Edw         |Ed€         |Edx         fz  |A¬p¦  «         �Œ£|Ed{         tÆ          jh        k    r@tÃ          dƒ|Ed„         |Ed‚         |Ed         |Edw         |Ed€         |Edx         fz  |A¬p¦  «         �Œù|Ed{         tÆ          ji        k    r7tÃ          d…|Ed         ›d†|Edw         ›dz|Ed€         ›d†|Edx         ›�|A¬p¦  «         �ŒF|Ed{         tÆ          jj        k    r@tÃ          d‡|Edˆ         |Ed         |Edw         |Ed€         |Edx         |Ed‰         fz  |A¬p¦  «         �Œœ|Ed{         tÆ          jk        k    r+tÃ          dŠ|Edˆ         |Edw         |Edx         fz  |A¬p¦  «         �ŒÝ|Ed{         tÆ          jl        k    r+tÃ          d‹|Edˆ         |Edw         |Edx         fz  |A¬p¦  «         �Œ|Ed{         tÆ          jm        k    r2tÃ          dŒ|Edˆ         |Ed�         |Edw         |Edx         fz  |A¬p¦  «         �Œf|Ed{         tÆ          jn        k    r#tÃ          dŽ|Edw         ›d�|Edx         ›�|A¬p¦  «         �Œ¡n#|?D ] \  } }C|@|           4                    |C¦  «         Œ!tß          |@¦  «        }@d�D �]}EtU          | |E¦  «        }I|I€Œt            V                    d‘|E p                    ¦   «         |I¦  «         d4d’lqmr}Jms}K |Ed“k    r|Jn|K}L |Lt½          |I¦  «        ||¬”¦  «        5 }M|M t                    ||=|>¬•¦  «         |@r|M u                    |@¦  «         |M v                    |@¦  «         |@s| j_        s|M w                    ¦   «          |@r(|M x                    ¦   «          |M y                    ¦   «          ddd¦  «         n# 1 swxY w Y   �Œ| jz        �r#t            V                    d–| jz        ¦  «         d4d—lqm{}N g }Oi }P |N|O||¬”¦  «        5 }Q|Q t                    |dK|=|>¬˜¦  «         |@                     ¦   «         D ]1\  }R}S|R|Pt/          |O¦  «        <   |Q v                    |R|SidKdK¬™¦  «         Œ2|@s| j_        s|Q w                    ¦   «          ddd¦  «         n# 1 swxY w Y   ddl|}Tt»          t½          | jz        ¦  «        dš¦  «        5 }A|A }                    d›¦  «         |A }                    dœ¦  «         |A }                    d�¦  «         t�          |O¦  «        D ]µ\  }U}Q|U|Pv r2|A }                    dž|P|U         › dŸ� ~                    d ¦  «        ¦  «         |A }                    d¡ ~                    d ¦  «        ¦  «         |A }                    |T                     |Q¦  «        ¦  «         |A }                    d¢¦  «         |A }                    d£¦  «         Œ¶|A }                    d¤¦  «         ddd¦  «         n# 1 swxY w Y   n># �t           $ r0}V|Vxj�        |z  c_�        t            ‚                    |V¦  «         ‚ d}V~Vww xY w|@r|@S dS )¥z/Test for interpolatability issues between fontsr   Nzfonttools varLib.interpolatable)Údescriptionz--glyphsÚstorez&Space-separate name of glyphs to check)ÚactionÚhelpz
--show-allÚ
store_truez3Show all glyph pairs, even if no problems are foundz--tolerancez,Error tolerance. Between 0 and 1. Default %s)r  rr   r  z--kinkinessz)How aggressively report kinks. Default %sz--jsonzOutput report in JSON formatz--pdfzOutput report in PDF formatz--psz"Output report in PostScript formatz--htmlzOutput report in HTML formatz--quietz%Only exit with code 1 or 0, no outputz--outputz3Output file for the problem report; Default: stdoutz--ignore-missingz<Will not report glyphs missing from sparse masters as errorsÚinputsÚFILEú+zSInput a single variable font / DesignSpace / Glyphs file, or multiple TTF/UFO files)Úmetavarrr   Únargsr  z--nameÚNAMEr4   zGName of the master to use in the report. If not provided, all are used.)r  rr   r  r  z-vz	--verbosezRun verbosely.z--debugzRun with debug output.)ÚconfigLoggerÚINFOÚWARNING)ÚlevelÚDEBUG)Úbasenamer   z.designspace)ÚDesignSpaceDocumentc                 ó   — g | ]	}|j         ‘Œ
S r;   )r{   ©r<   rs   s     r.   r?   zmain.<locals>.<listcomp>Î  s   € ÐIÐIÐI¨6˜6œ;ÐIÐIÐIr0   c                 ó   — g | ]	}|j         ‘Œ
S r;   ©Úlocationr  s     r.   r?   zmain.<locals>.<listcomp>Ï  ó   € ÐKÐKÐK¨V˜œÐKÐKÐKr0   c                 ó<   — h | ]}t          |d ¦  «        °|j        ’ŒS )Úminimum)Úhasattrr&   ©r<   Úas     r.   ri   zmain.<locals>.<setcomp>Ð  s9   € ð ð ð Ø½ÀÀ9Ñ8MÔ8MðØ”ðð ð r0   c                 óV   •— i | ]%}|j         ‰v¯|j         |j        |j        |j        f“Œ&S r;   ©r&   r  ÚdefaultÚmaximum)r<   r  r`   s     €r.   ú
<dictcomp>zmain.<locals>.<dictcomp>Ó  sA   ø€ ð ð ð àØ”6 Ð.Ð.ð ”˜œ A¤I¨q¬yÐ9à.Ð.Ð.r0   c                 ó(   — i | ]}|j         |j        “ŒS r;   ©r&   Úmapr  s     r.   r   zmain.<locals>.<dictcomp>Ø  ó   € ÐEÐEÐE¨q˜QœV Q¤UÐEÐEÐEr0   c                 óR   •‡— i | ]"\  Š}‰t          ˆˆfd „|D ¦   «         ¦  «        “Œ#S )c              3   ó^   •K  — | ]'}t          |t          ‰‰         ¦  «        ¦  «        V — Œ(d S r%   ©r   Údict©r<   ÚvÚaxis_mappingsÚks     €€r.   ú	<genexpr>z"main.<locals>.<dictcomp>.<genexpr>Ú  ó;   øè è € ÐSÐSÈ1Õ+¨A­t°MÀ!Ô4DÑ/EÔ/EÑFÔFÐSÐSÐSÐSÐSÐSr0   ©Útuple©r<   Úvvr,  r+  s     @€r.   r   zmain.<locals>.<dictcomp>Ù  óQ   øø€ ð ð ð á�A�rð •5ÐSÐSÐSÐSÐSÐPRÐSÑSÔSÑSÔSðð ð r0   )z.glyphsz.glyphspackage)ÚGSFontÚto_designspacec                 ó   — g | ]	}|j         ‘Œ
S r;   )Úfont)r<   Úsources     r.   r?   zmain.<locals>.<listcomp>ä  s   € ÐCÐCÐC V�V”[ÐCÐCÐCr0   c                 óD   — g | ]}|j         j        ›d |j         j        ›�‘ŒS )ú-)r‰   Ú
familyNameÚ	styleName)r<   Úfs     r.   r?   zmain.<locals>.<listcomp>å  s0   € ÐTÐTÐTÈ ¤Ô 1Ð 1Ð 1°1´6Ô3CÐ3CÐDÐTÐTÐTr0   c                 ó   — g | ]	}|j         ‘Œ
S r;   r  r  s     r.   r?   zmain.<locals>.<listcomp>ç  r  r0   c                 óB   — i | ]}|j         |j        |j        |j        f“ŒS r;   r  r  s     r.   r   zmain.<locals>.<dictcomp>è  s6   € ð ð ð Ø>?�”˜œ A¤I¨q¬yÐ9ðð ð r0   c                 ó(   — i | ]}|j         |j        “ŒS r;   r"  r  s     r.   r   zmain.<locals>.<dictcomp>ë  r$  r0   c                 óR   •‡— i | ]"\  Š}‰t          ˆˆfd „|D ¦   «         ¦  «        “Œ#S )c              3   ó^   •K  — | ]'}t          |t          ‰‰         ¦  «        ¦  «        V — Œ(d S r%   r'  r)  s     €€r.   r-  z"main.<locals>.<dictcomp>.<genexpr>í  r.  r0   r/  r1  s     @€r.   r   zmain.<locals>.<dictcomp>ì  r3  r0   z.ttfz.otf)ÚTTFontÚheadÚfvar©rB   r   r   FÚavarÚVarStorec                 ó   — i | ]	}|d dddœ“Œ
S )rB   r   r   rF  r;   )r<   Útags     r.   r   zmain.<locals>.<dictcomp>  s$   € Ð"TÐ"TÐ"TÀ 3¨R°A¸!Ð(<Ð(<Ð"TÐ"TÐ"Tr0   TÚgvarrö   )r  Ú
normalizedÚrecalcBoundsÚCFF2ÚvsindexÚblendÚvstorez''c                 ó   — i | ]}|d “ŒS )rF  r;   r  s     r.   r   zmain.<locals>.<dictcomp>d  s   € ÐOÐOÐO¨q˜A˜{ÐOÐOÐOr0   c                 ó$   — t          | ¦  «        | fS r%   )r2   )r*  s    r.   ú<lambda>zmain.<locals>.<lambda>e  s   € ÅCÈÁFÄFÈAÀ;€ r0   )Úkeyú'ú c           
   3   óp   •K  — | ]0\  }}|›d t          t          |‰|         ¦  «        d¦  «        ›�V — Œ1dS )ú=é   N)r   r   )r<   r,  r*  ÚaxisMappings      €r.   r-  zmain.<locals>.<genexpr>h  sk   øè è € ð 	ð 	ñ !˜A˜qð ˜A˜AÝ-Ý 2°1°kÀ!´nÑ EÔ EÀrñô ð ðð	ð 	ð 	ð 	ð 	ð 	r0   z (normalized)c                 ó   — g | ]}i ‘ŒS r;   r;   )r<   Ú_s     r.   r?   zmain.<locals>.<listcomp>~  s   € Ð'Ð'Ð'˜A�RÐ'Ð'Ð'r0   z.ufo)Ú	UFOReaderú.r†   z9Font file does not seem to be variable. Nothing to check.ÚgetGlyphSetc                 ó"   •— i | ]}|‰|         “ŒS r;   r;   )r<   r,  r,   s     €r.   r   zmain.<locals>.<dictcomp>œ  s   ø€ ÐBÐBÐB¨Q˜!˜X aœ[ÐBÐBÐBr0   c                 ó"   •— g | ]\  }}|‰v ¯	|‘ŒS r;   r;   )r<   r&   r,   Úaccepted_namess      €r.   r?   zmain.<locals>.<listcomp>   ó2   ø€ ð 
ð 
ð 
á��hØ�~Ð%Ð%ð à%Ð%Ð%r0   c                 ó"   •— g | ]\  }}|‰v ¯	|‘ŒS r;   r;   )r<   r&   r  rc  s      €r.   r?   zmain.<locals>.<listcomp>¥  rd  r0   c                 ó   •— g | ]}|‰v ¯|‘Œ	S r;   r;   )r<   r&   rc  s     €r.   r?   zmain.<locals>.<listcomp>ª  s#   ø€ ÐBÐBÐB˜$¨4°>Ð+AÐ+A�Ð+AÐ+AÐ+Ar0   c                 ó@   — g | ]}|                      ¦   «         D ]}|‘ŒŒS r;   rg   )r<   r,   Úgns      r.   r?   zmain.<locals>.<listcomp>­  s-   € ÐTÐTÐT HÀHÇMÂMÁOÄOÐTÐT¸b˜RÐTÐTÐTÐTr0   c                 ót   •— g | ]4}i t          |‰¦  «        ¥ˆfd „|                     ¦   «         D ¦   «         ¥‘Œ5S )c                 ó$   •— i | ]\  }}|‰v ¯	||“ŒS r;   r;   )r<   r,  r*  r`   s      €r.   r   z#main.<locals>.<listcomp>.<dictcomp>»  s)   ø€ ÐBÐBÐB™˜˜1¨q°MÐ/AÐ/Aˆq�!Ð/AÐ/AÐ/Ar0   )r   Úitems)r<   ÚlocÚaxis_triplesr`   s     €€r.   r?   zmain.<locals>.<listcomp>¸  sa   ø€ ð ð ð ð
 ð		
Ý  \Ñ2Ô2ð	
àBÐBÐBÐB §	¢	¡¤ÐBÑBÔBð	
ðð ð r0   zRunning on %d glyphsetszLocations: %s)	r£   r¤   r[   r^   r¥   r\   r]   r_   r`   Úw)ÚfilezGlyph z was not compatible:rt   rw   rx   rs   ru   rv   z  Masters: %s:z, rr   z"    Glyph was missing in master %sz'    Glyph has an open path in master %sz*    Path count differs: %i in %s, %i in %sry   rz   z5    Node count differs in path %i: %i in %s, %i in %sr{   z7    Node %d incompatible in path %i: %s in %s, %s in %sr|   z    Contour order differs: z in zD    Contour %d start point differs: %s in %s, %s in %s; reversed: %srR   rƒ   z3    Contour %d interpolation is underweight: %s, %sz2    Contour %d interpolation is overweight: %s, %sz'    Contour %d has a kink at %s: %s, %srI   z    Showing z and )ÚpsÚpdfzWriting %s to %s)ÚInterpolatablePSÚInterpolatablePDFrp  )rl   r¤   )r\   r]   zWriting HTML to %s)ÚInterpolatableSVG)Úshow_tolerancer\   r]   )ru  Úshow_page_numberÚwbs   <!DOCTYPE html>
sN   <html><body align="center" style="font-family: sans-serif; text-color: #222">
s6   <title>fonttools varLib.interpolatable report</title>
z
<h1>Glyph z</h1>
zutf-8z$<img src='data:image/svg+xml;base64,s   ' />
s   <hr>
s   </body></html>
)ƒÚargparseÚsysÚArgumentParserÚmainÚ__doc__Úadd_argumentÚfloatÚDEFAULT_TOLERANCErœ   ÚstrÚ
parse_argsÚ	fontToolsr
  Úverboser™   r£   ÚsplitÚos.pathr  ÚsetÚDEFAULT_UPEMr0  r  r2   ÚendswithÚfontTools.designspaceLibr  ÚfromfileÚsourcesÚaxesrk  Ú	glyphsLibr4  r5  ÚupmÚfontTools.ttLibrC  Ú
unitsPerEmÚminValueÚdefaultValueÚmaxValueÚaxisTagr3   ÚtableÚsegmentsÚcopyr   r   r(  ÚsortedÚ
variationsrh   r4   r`  ró   ÚcffÚtopDictIndexÚCharStringsÚprivateÚprogramÚaddÚ
isinstanceÚintr  rQ  Ú
otVarStoreÚVarDataÚVarRegionIndexÚVarRegionListÚRegionrJ   ÚVarRegionAxisÚ	PeakCoordÚjoinr¥   ÚfontTools.ufoLibr^  r   ÚreadInfoÚrsplitrˆ   Úwarningr&   rŠ   r\   r]   r‰   r   rê   r_   r’   ÚoutputÚstdoutr©   rý   ÚquietÚjsonÚprintÚdumpsr‹   rŒ   r�   rŽ   r�   r�   r‘   r•   r–   r—   r¡   r¢   Úsort_problemsÚupperÚinterpolatablePlotrr  rs  Úadd_title_pageÚadd_summaryÚadd_problemsÚdraw_cupcakeÚ	add_indexÚadd_table_of_contentsÚhtmlrt  Úbase64ÚwriteÚencodeÚ	b64encodeÚ	Exceptionrì   Úerror)]rì   rx  ry  Úparserr
  r£   r  Úfontsr¤   r[   r^   Úoriginal_args_inputsÚdesignspacer  r4  r5  ÚgsfontrC  r7  rE  ÚaxisrL  rG  r”  r–  ÚfvarMappingr  rI   ÚttGlyphSetsrl   rK  rö   r+   ÚvarÚlocDictrl  rJ  ÚvalÚlocTupleÚfvarAxesÚcff2ÚcharstringsÚcsr�  Ú	vsindicesrO  Úlast_opr=   ÚvarStoreÚvarDataÚregionIndexÚregionÚ	axisIndexr&   Úfilenamer^  r‰   Ú	glyphsSetÚglyphSetGlyphNamesÚdiffrh  r\   r]   Úproblems_genrî   r=  r±  rï   Úlast_glyphnameÚpÚlast_master_idxsÚmaster_idxsÚmaster_namesr>   rr  rs  ÚPlotterClassÚdocrt  ÚsvgsÚglyph_startsÚsvgrP   Úglyph_problemsr¾  rk   rS   rc  r[  r+  rm  r`   r,   s]                                                                                          @@@@@@r.   r{  r{  a  sì  øøøøøø€ à€O€O€OØ€J€J€Jà×$Ò$Ø)Ý”Lð %ñ ô €Fð ×ÒØØØ5ð ñ ô ð ð
 ×ÒØØØBð ñ ô ð ð
 ×ÒØØÝØ;Õ>OÑOð	 ñ ô ð ð ×ÒØØÝØ8Õ;LÑLð	 ñ ô ð ð ×ÒØØØ+ð ñ ô ð ð
 ×ÒØØØ*ð ñ ô ð ð
 ×ÒØØØ1ð ñ ô ð ð
 ×ÒØØØ+ð ñ ô ð ð
 ×ÒØØØ4ð ñ ô ð ð
 ×ÒØØØBð ñ ô ð ð
 ×ÒØØØKð ñ ô ð ð
 ×ÒØØÝØØbð ñ ô ð ð ×ÒØØÝØØVð ñ ô ð ð ×Ò˜˜k°,ÐEUÐÑVÔVÐVØ
×Ò˜	¨,Ð=UÐÑVÔVÐVà×Ò˜TÑ"Ô"€Dà&Ð&Ð&Ð&Ð&Ð&à€L $¤,Ð=˜˜°IÐ?Ñ?Ô?Ð?Ø„zð $Øˆ˜7Ð#Ñ#Ô#Ð#à$(¤KÐ9ˆTŒ[×ÒÑ Ô Ð °T€Fà Ð Ð Ð Ð Ð à€EØ€EØ€IÝ‘E”E€MÝ€Då  ¤Ñ-Ô-Ðå
ˆ4Œ;ÑÔ˜1ÒÑØˆØŒ;�qŒ>×"Ò" >Ñ2Ô2ð q	ØDÐDÐDÐDÐDÐDà-×6Ò6°t´{À1´~ÑFÔFˆKØIÐI°[Ô5HÐIÑIÔIˆDŒKØKÐK°{Ô7JÐKÑKÔKˆIðð Ø +Ô 0ðñ ô ˆMðð ð ð à$Ô)ðñ ô ˆLð
 FÐE°KÔ4DÐEÑEÔEˆMðð ð ð à)×/Ò/Ñ1Ô1ðñ ô ˆL‰Lð
 Œ[˜Œ^×$Ò$Ð%BÑCÔCð ]	Ø8Ð8Ð8Ð8Ð8Ð8Ð8Ð8à�V˜DœK¨œNÑ+Ô+ˆFØ”:ˆDØ(˜.¨Ñ0Ô0ˆKØCÐC¨{Ô/BÐCÑCÔCˆEØTÐTÈeÐTÑTÔTˆEØˆDŒKØKÐK°{Ô7JÐKÑKÔKˆIðð ØCNÔCSðñ ô ˆLð FÐE°KÔ4DÐEÑEÔEˆMðð ð ð à)×/Ò/Ñ1Ô1ðñ ô ˆL‰Lð
 Œ[˜Œ^×$Ò$ VÑ,Ô,ð J	°´¸A´×0GÒ0GÈÑ0OÔ0Oñ J	Ø.Ð.Ð.Ð.Ð.Ð.ð �6˜$œ+ aœ.Ñ)Ô)ˆDØ˜”<Ô*ˆDà˜”<ˆDØˆKØœ	ð ð �àœØÔ(Ø”}ð-ð -�˜DœLÑ)Ð)ð
 ˆJØ˜ˆ~ˆ~Ø˜F”|�Ý˜4œ: z°4Ñ8Ô8ð 	Ø"TÐ"TÈÐ"TÑ"TÔ"T�KØ!%�J�Jà-1¬]×-@Ò-@Ñ-BÔ-Bð ð Ñ)˜ Ø&1°'Ô&:×&?Ò&?Ñ&AÔ&A˜Ø/7¯~ª~Ñ/?Ô/?ð ð ™O˜H eÝ:LØ (¨+ñ;ô ;˜K¨Ô0°Ñ7Ð7ðð ˆKÝ#¥DÑ)Ô)ˆIà˜ˆ~ˆ~Ø˜F”|�Ø˜F”|�à�>Ý# D¤O×$8Ò$8Ñ$:Ô$:Ñ;Ô;�FØ!'ð ð �IØ#œ¨yÔ9ð ð ˜Ø"$˜Ø ˜Ý(.¨s¬x¯~ª~Ñ/?Ô/?Ñ(@Ô(@ð 6ð 6™H˜C Ø+.¨q¬6˜G C™LØŸJšJ¨¨S°¬V }Ñ5Ô5Ð5Ð5å#(¨¡:¤:˜Ø#¨;Ð6Ð6Ø48×4DÒ4DØ)0¸TÐPUð 5Eñ 5ô 5˜K¨Ñ1õ ,Ø% y°Ô':¸KÈÔ<QÐSWñô ð ð ðñð$ ˜4�‘Ø œ<Ô,�Ø˜F”|Ô'Ô4°QÔ7�Ø"Ô.�à�>Ý# K×$4Ò$4Ñ$6Ô$6Ñ7Ô7�FØ!'ð -Sñ -S�IØ$ YÔ/�BØ œj�Gõ ")¨°)¸QÑ!?Ô!?Ð @�IÝ% g¨y¸!Ñ<Ô<�GØ�Gð !œjð %ð %˜Ø š=˜=Ø%ŸMšM¨'Ñ2Ô2Ð2Ð2Ø 9š_˜_Ý#-¨gµsÑ#;Ô#;Ð;Ð;Ð;Ø&-˜GØ"$˜˜å" 7¨HÑ5Ô5ð !Ø à&œ~Ô8�HØ#,ð Sð S˜Ø"*Ô"2°7Ô";˜Ø+2Ô+Að Sð S˜KØ%-Ô%;Ô%BÀ;Ô%O˜Fà&(˜GØ"$˜CÝ3<¸VÔ=QÑ3RÔ3Rð 7ð 7¡ 	¨4Ø&.¨yÔ&9Ô&A Ø&*¤n Ø/2 ¨¡Ø #§
¢
¨C°¨:Ñ 6Ô 6Ð 6Ð 6å',¨S¡z¤z˜HØ'¨{Ð:Ð:Ø8<×8HÒ8HØ-4Ø/3Ø16ð 9Iñ 9"ô 9" ¨HÑ 5ð (1°Ô':˜HØ2=¸hÔ2GÈ	Ô2R˜H YÑ/Ð/ð)SñSð0 �FˆEØ×%Ò%Ñ'Ô'Ð(ˆEØ˜ˆIØOÐOµF¸;×;KÒ;KÑ;MÔ;MÑ4NÔ4NÐOÑOÔOˆLÝ" 9§>¢>Ñ#3Ô#3Ð9NÐ9NÐOÑOÔOð 1ð 1�àØ—h’hð 	ð 	ð 	ð 	ð %-ð	ñ 	ô 	ñ 	ô 	ñ
ð ñð ð ð ,Ø˜OÑ+�DØ—’˜TÑ"Ô"Ð"Ø—’˜Y xÔ0Ñ1Ô1Ð1Ø× Ò ¥ h¡¤Ñ0Ô0Ð0Ð0à"&ˆDÔØˆDŒKàð (Ø'Ð' Ð'Ñ'Ô'ˆ	à”Kð ;ð ;ˆØ×Ò˜VÑ$Ô$ð 	Ø2Ð2Ð2Ð2Ð2Ð2à�9˜XÑ&Ô&ˆDÝ"Ñ$Ô$ˆDØ�MŠM˜$ÑÔÐØ”?ˆDØ�LŠL˜ÑÔÐÐà.Ð.Ð.Ð.Ð.Ð.à�6˜(Ñ#Ô#ˆDØ˜”<Ô*ˆDØ�LŠL˜ÑÔÐà�Š�X�X˜hÑ'Ô'×.Ò.¨s°AÑ6Ô6°qÔ9Ñ:Ô:Ð:Ð:å
ˆ5�z„z�A‚~€~Ý�ŠÐOÑPÔPÐPØˆà€IØð Dð DˆÝ�4˜Ñ'Ô'ð 	Ø×'Ò'Ñ)Ô)ˆHˆHàˆHØ×ÒÐBÐBÐBÐB°(·-²-±/´/ÐBÑBÔBÑCÔCÐCÐCà„yð CÝ˜TœY™œˆð
ð 
ð 
ð 
å"% e¨YÑ"7Ô"7ð
ñ 
ô 
ˆ	ð

ð 
ð 
ð 
å"% e¨YÑ"7Ô"7ð
ñ 
ô 
ˆ	ð
 CÐBÐBÐB %ÐBÑBÔBˆàð WÝ�ÐTÐT°	ÐTÑTÔTÑUÔUÑVÔVˆå�F‘”€IØð $ð $ˆÝ  §¢¡¤Ñ1Ô1ÐØÐ-Ñ-ˆØð 	$Øð $ð $�Ø#�˜‘�øðð ð ð ð ð
 ðñ ô €Ið ”Ð3Õ"3€IØ"&¤.Ð"<�”�ÕBS€IðmÝ�ŠÐ*­C°	©N¬NÑ;Ô;Ð;Ý�Š�¥'¨)Ñ"4Ô"4Ñ5Ô5Ð5ÝØØØØØØÔ.ØØØ”]Ø'ð
ñ 
ô 
ˆõ �tÑ$Ô$ˆð Œ{Ð"ð ŒJˆJåÕ'¨¬Ñ4Ô4°cÑ:Ô:ð 	
ð Œzñ O	4ØŒyð KØ���à*6ð 8ð 8Ñ&�I˜wØ˜YÔ'×.Ò.¨wÑ7Ô7Ð7Ð7å�d—j’j Ñ*Ô*°Ð3Ñ3Ô3Ð3Ñ3à!%�Ø$0ð Bñ B‘L�I˜qØ˜YÔ'×.Ò.¨qÑ1Ô1Ð1à  NÒ2Ð2ÝÐF yÐFÐFÐFÈQÐOÑOÔOÐOØ)2˜Ø+/Ð(ð (¨1Ð,Ð,ð ˜<œÐ*Ð*à Ô/°°>Ô1BÐCð  ð
 #Ð&6Ò6Ð6ð  (¨1˜}˜}ð ˜xœ[˜N˜Nà"# J¤-°°:´Ð!?ð %õ
 Ð/°$·)²)¸LÑ2IÔ2IÑIÐPQÐRÑRÔRÐRØ+6Ð(à˜”yÕ$9Ô$AÒAÐAÝØ@À1ÀXÄ;ÑNÐUVðñ ô ð ð ð ˜6œÕ&;Ô&EÒEÐEÝØEÈÈ(ÌÑSØ!"ðñ ô ð ñ ð ˜6œÕ&;Ô&FÒFÐFÝØHà ! )¤Ø ! *¤Ø ! )¤Ø ! *¤ð	ñð "#ð	ñ 	ô 	ð 	ñ 	ð ˜6œÕ&;Ô&FÒFÐFÝØSà ! &¤	Ø ! )¤Ø ! *¤Ø ! )¤Ø ! *¤ðñð "#ð
ñ 
ô 
ð 
ñ 
ð ˜6œÕ&;Ô&PÒPÐPÝØUà ! &¤	Ø ! &¤	Ø ! )¤Ø ! *¤Ø ! )¤Ø ! *¤ðñð "#ðñ ô ð ñ ð ˜6œÕ&;Ô&IÒIÐIÝ˜ð !" )¤  Ø ! *¤  Ø ! )¤  Ø ! *¤ ðð "#ð	ñ 	ô 	ð 	ñ 	ð ˜6œÕ&;Ô&MÒMÐMÝØbà ! )¤Ø ! )¤Ø ! *¤Ø ! )¤Ø ! *¤Ø ! *¤ðñð "#ðñ ô ð ñ ð ˜6œÕ&;Ô&GÒGÐGÝØQà ! )¤Ø ! *¤Ø ! *¤ðñð "#ðñ ô ð ñ ð ˜6œÕ&;Ô&FÒFÐFÝØPà ! )¤Ø ! *¤Ø ! *¤ðñð "#ðñ ô ð ñ ð ˜6œÕ&;Ô&@Ò@Ð@ÝØEà ! )¤Ø ! '¤
Ø ! *¤Ø ! *¤ð	ñð "#ð	ñ 	ô 	ð 	ñ 	ð ˜6œÕ&;Ô&CÒCÐCÝ˜ð !" *¤  Ø ! *¤ ðð
 "#ðñ ô ð ùðwBðH '3ð 4ð 4Ñ"�	˜7Ø˜Ô#×*Ò*¨7Ñ3Ô3Ð3Ð3å  Ñ*Ô*ˆàð 	0ñ 	0ˆAÝ˜$ Ñ"Ô"ˆCØˆ{ØÝ�HŠHÐ'¨¯ª©¬°CÑ8Ô8Ð8ØOÐOÐOÐOÐOÐOÐOÐOà/0°Dªy¨yÐ+Ð+Ð>OˆLà�Ý! #Ñ&Ô&°)À5ðñ ô ð 0àØ×"Ò"Ø(°IÈð #ñ ô ð ð ð .Ø—O’O HÑ-Ô-Ð-Ø× Ò  Ñ*Ô*Ð*Øð '¨¬
ð 'Ø×$Ò$Ñ&Ô&Ð&Øð 0Ø—M’M‘O”O�OØ×-Ò-Ñ/Ô/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ùð Œ9ñ &	-Ý�HŠHÐ)¨4¬9Ñ5Ô5Ð5Ø=Ð=Ð=Ð=Ð=Ð=àˆDØˆLØ"Ð" 4°9ÀEÐJÑJÔJð 'ÈcØ×"Ò"Ø(Ø#(Ø'Ø'ð	 #ñ ô ð ð .6¯^ª^Ñ-=Ô-=ð ð Ñ)�E˜>Ø.3�L¥ T¡¤Ñ+Ø×$Ò$Ø Ð/Ø',Ø).ð %ñ ô ð ð ð
  ð '¨¬
ð 'Ø×$Ò$Ñ&Ô&Ð&ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'ð" ˆMˆMˆMåÕ'¨¬	Ñ2Ô2°DÑ9Ô9ð -¸QØ—’Ð,Ñ-Ô-Ð-Ø—’Øfñô ð ð —’ÐRÑSÔSÐSÝ'¨™oœoð 'ð '‘F�A�sØ˜LÐ(Ð(ØŸšÐ E¨\¸!¬_Ð EÐ EÐ E× LÒ LÈWÑ UÔ UÑVÔVÐVØ—G’GÐB×IÒIÈ'ÑRÔRÑSÔSÐSØ—G’G˜F×,Ò,¨SÑ1Ô1Ñ2Ô2Ð2Ø—G’G˜IÑ&Ô&Ð&Ø—G’G˜IÑ&Ô&Ð&Ð&Ø—’Ð+Ñ,Ô,Ð,ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -øøö ð ð ð Ø	ˆŒÐ&Ñ&ˆŒÝ�	Š	�!‰ŒˆØøøøøðøøøð
 ð Øˆðð s´   í8UAN' ÁCBAE.ÁE"AN' ÁE.AE2	ÁE2AN' ÁE5AE2	ÁE6AAN' ÁF;A=AIÁH8AN' ÁIAIÁIAN' ÁIAIÁI)AN' ÁI5DANÁNAN' ÁNANÁNAN' ÁN"ANÁN#AN' ÁN'AO"ÁN2+AOÁOAO"Ú__main__)NNFr%   )8r|  ÚinterpolatableHelpersÚinterpolatableTestContourOrderr   ÚinterpolatableTestStartingPointr   ÚfontTools.pens.recordingPenr   r   r	   ÚfontTools.pens.transformPenr
   ÚfontTools.pens.statisticsPenr   r   ÚfontTools.pens.momentsPenr   ÚfontTools.varLib.modelsr   r   ÚfontTools.misc.fixedToolsr   ÚfontTools.misc.transformr   Úcollectionsr   Útypesr   Ú	functoolsr   Úpprintr   Úmathr   r   r   Úloggingrú   Ú	getLoggerrˆ   r  rœ   r›   r‡  r   rê   rð   ró   rý   r{  rX   ry  rî   Úexitr¡  Úboolr;   r0   r.   ú<module>rÿ     s´  ððð ð %Ð $Ð $Ð $Ø >Ð >Ð >Ð >Ð >Ð >Ø @Ð @Ð @Ð @Ð @Ð @ðð ð ð ð ð ð ð ð ð ð
 5Ð 4Ð 4Ð 4Ð 4Ð 4Ø LÐ LÐ LÐ LÐ LÐ LÐ LÐ LØ 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø .Ð .Ð .Ð .Ð .Ð .Ø #Ð #Ð #Ð #Ð #Ð #Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ø €€€Ø 	€	€	€	à€gÔÐ9Ñ:Ô:€àÐ ØÐ Ø Ð Ø€ðU3ð U3ð U3ð U3ð U3ñ U3ô U3ð U3ðt Ø
Øð	Gð ØØØ	ØØðGð Gð Gð Gð GðT €€x�„ðð ñ „ððMð Mð Mðð ð ðQ	ð Q	ð Q	ð Q	ðh ˆzÒÐØ€J€J€Jàˆt‰vŒv€HØ€C„HˆSˆS���h‘”Ñ Ô Ñ!Ô!Ð!Ð!Ð!ð	 Ðr0   