ó
    oñ:iP&  ã                   óÜ   • S r SSKJrJrJr  SSKJrJr  SSKJ	r	  SS/r
 " S S5      r " S	 S\\	5      r " S
 S\\5      rSSS.S jjrS r\S:X  a  SSKr\" \R$                  SS 5        gg)z~Pen calculating area, center of mass, variance and standard-deviation,
covariance and correlation, and slant, of glyph shapes.é    )ÚsqrtÚdegreesÚatan)ÚBasePenÚOpenContourError)Ú
MomentsPenÚStatisticsPenÚStatisticsControlPenc                   ó&   • \ rS rSrS rS rS rSrg)ÚStatisticsBaseé   c                 ó$   • U R                  5         g ©N)Ú_zero©Úselfs    Ú_/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/fontTools/pens/statisticsPen.pyÚ__init__ÚStatisticsBase.__init__   s   € Ø�
‰
�ó    c                 ó�   • SU l         SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU l        SU l	        g )Nr   )
ÚareaÚmeanXÚmeanYÚ	varianceXÚ	varianceYÚstddevXÚstddevYÚ
covarianceÚcorrelationÚslantr   s    r   r   ÚStatisticsBase._zero   sI   € ØˆŒ	ØˆŒ
ØˆŒ
ØˆŒØˆŒØˆŒØˆŒØˆŒØˆÔØˆ�
r   c                 ó$  • [        U R                  5      U l        [        U R                  5      U l        [        U R                  5      =U l        n[        U R                  5      =U l        nX-  S:X  a  [        S5      nO'U R                  X-  -  n[        S[        SU5      5      n[        U5      S:”  a  UOSU l
        U R                  S:w  a  U R                  U R                  -  O
[        S5      n[        U5      S:”  a  X@l        g SU l        g )Nr   ÚNaNéÿÿÿÿé   gü©ñÒMbP?)Úabsr   r   r   r   r   Úfloatr   ÚmaxÚminr    r!   )r   r   r   r    r!   s        r   Ú_updateÚStatisticsBase._update   sà   € ô ˜TŸ^™^Ó,ˆŒÜ˜TŸ^™^Ó,ˆŒä!% d§n¡nÓ!5Ð5ˆŒ�wÜ!% d§n¡nÓ!5Ð5ˆŒ�wð Ñ Ó!Ü ›,‰Kð
 Ÿ/™/¨WÑ->Ñ?ˆKÜ˜b¤# a¨Ó"5Ó6ˆKÜ*-¨kÓ*:¸TÓ*A™;ÀqˆÔð 15·±À!Ó0CˆD�O‰O˜dŸn™nÒ,ÌÈuËð 	ô " %›j¨4Ó/�U�
°Qˆ�
r   )
r   r    r   r   r   r!   r   r   r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r+   Ú__static_attributes__© r   r   r   r      s   † òò
õ7r   r   c                   ó.   • \ rS rSrSrSS jrS rS rSrg)	r	   é7   a&  Pen calculating area, center of mass, variance and
standard-deviation, covariance and correlation, and slant,
of glyph shapes.

Note that if the glyph shape is self-intersecting, the values
are not correct (but well-defined). Moreover, area will be
negative if contour directions are clockwise.Nc                 óV   • [         R                  " XS9  [        R                  U 5        g )N©Úglyphset)r   r   r   ©r   r7   s     r   r   ÚStatisticsPen.__init__@   s   € Ü×Ò˜DÒ4Ü×Ñ Õ%r   c                 óP   • [         R                  " U 5        U R                  5         g r   )r   Ú
_closePathr+   r   s    r   r;   ÚStatisticsPen._closePathD   s   € Ü×Ò˜dÔ#Ø�‰�r   c                 ód  • U R                   nU(       d  U R                  5         g U R                  U-  =U l        nU R                  U-  =U l        nU R                  U-  X"-  -
  U l        U R                  U-  X3-  -
  U l	        U R                  U-  X#-  -
  U l        [        R                  U 5        g r   )r   r   ÚmomentXr   ÚmomentYr   ÚmomentXXr   ÚmomentYYr   ÚmomentXYr   r   r+   )r   r   r   r   s       r   r+   ÚStatisticsPen._updateH   s�   € Ø�y‰yˆÞØ�J‰JŒLØð "Ÿ\™\¨DÑ0Ð0ˆŒ
�UØ!Ÿ\™\¨DÑ0Ð0ˆŒ
�Uð Ÿ™¨Ñ-°±Ñ=ˆŒØŸ™¨Ñ-°±Ñ=ˆŒð Ÿ-™-¨$Ñ.°±Ñ>ˆŒä×Ñ˜tÕ$r   )r   r   r   r   r   r   )	r-   r.   r/   r0   Ú__doc__r   r;   r+   r1   r2   r   r   r	   r	   7   s   † ñ5ô&òõ%r   c                   óL   • \ rS rSrSrSS jrS rS rS rS r	S	 r
S
 rS rSrg)r
   é]   aF  Pen calculating area, center of mass, variance and
standard-deviation, covariance and correlation, and slant,
of glyph shapes, using the control polygon only.

Note that if the glyph shape is self-intersecting, the values
are not correct (but well-defined). Moreover, area will be
negative if contour directions are clockwise.Nc                 óh   • [         R                  " X5        [        R                  U 5        / U l        g r   )r   r   r   Ú_nodesr8   s     r   r   ÚStatisticsControlPen.__init__f   s%   € Ü×Ò˜Ô(Ü×Ñ Ô%Øˆ�r   c                 óR   • U R                   R                  [        U6 5        Xl        g r   )rH   ÚappendÚcomplexÚ_startPoint©r   Úpts     r   Ú_moveToÚStatisticsControlPen._moveTok   s   € Ø�‰×Ñœ7 B˜<Ô(ØÕr   c                 óF   • U R                   R                  [        U6 5        g r   ©rH   rK   rL   rN   s     r   Ú_lineToÚStatisticsControlPen._lineToo   s   € Ø�‰×Ñœ7 B˜<Õ(r   c                 óZ   • X4 H$  nU R                   R                  [        U6 5        M&     g r   rS   )r   Úpt1Úpt2rO   s       r   Ú_qCurveToOneÚ!StatisticsControlPen._qCurveToOner   s$   € Ø“*ˆBØ�K‰K×Ñœw¨˜|Ö,ò r   c                 ó\   • XU4 H$  nU R                   R                  [        U6 5        M&     g r   rS   )r   rW   rX   Úpt3rO   s        r   Ú_curveToOneÚ StatisticsControlPen._curveToOnev   s&   € Ø˜S“/ˆBØ�K‰K×Ñœw¨˜|Ö,ò "r   c                 ó˜   • U R                  5       nXR                  :w  a  U R                  U R                  5        U R                  5         g r   )Ú_getCurrentPointrM   rT   r+   ©r   Úp0s     r   r;   ÚStatisticsControlPen._closePathz   s7   € Ø×"Ñ"Ó$ˆØ×!Ñ!Ó!Ø�L‰L˜×)Ñ)Ô*Ø�‰�r   c                 óx   • U R                  5       nXR                  :w  a  [        S5      eU R                  5         g )Nz.Glyph statistics not defined on open contours.)r`   rM   r   r+   ra   s     r   Ú_endPathÚStatisticsControlPen._endPath€   s1   € Ø×"Ñ"Ó$ˆØ×!Ñ!Ó!Ü"Ð#SÓTÐTØ�‰�r   c           
      óÎ  • U R                   n[        U5      n[        S [        XSS  US S -   5       5       5      S-  U l        [        U5      nUR
                  U-  =U l        nUR                  U-  =U l        nUS:”  aµ  [        S U 5       5      UR
                  UR
                  -  U-  -
  US-
  -  =U l	        n[        S U 5       5      UR                  UR                  -  U-  -
  US-
  -  =U l
        n[        S U 5       5      UR
                  UR                  -  U-  -
  US-
  -  =U l        nOS=U l	        nS=U l
        nS=U l        n[        R                  U 5        g )Nc              3   óŒ   #   • U  H:  u  pUR                   UR                  -  UR                   UR                  -  -
  v •  M<     g 7fr   ©ÚrealÚimag)Ú.0rb   Úp1s      r   Ú	<genexpr>Ú/StatisticsControlPen._update.<locals>.<genexpr>Œ   s8   é € ð â?‘F�Bð —‘˜2Ÿ7™7Ñ" R§W¡W¨r¯w©wÑ%6Ö6Ú?ùs   ‚AAr&   é   c              3   óR   #   • U  H  oR                   UR                   -  v •  M     g 7fr   )rj   ©rl   Úps     r   rn   ro   �   ó   é € Ð3ªU¨—F‘F˜QŸV™V–OªUùó   ‚%'c              3   óR   #   • U  H  oR                   UR                   -  v •  M     g 7fr   )rk   rr   s     r   rn   ro   ¡   rt   ru   c              3   óR   #   • U  H  oR                   UR                  -  v •  M     g 7fr   ri   rr   s     r   rn   ro   §   rt   ru   r   )rH   ÚlenÚsumÚzipr   rj   r   rk   r   r   r   r   r   r+   )	r   ÚnodesÚnÚsumNodesr   r   r   r   r   s	            r   r+   ÚStatisticsControlPen._update†   s…  € Ø—‘ˆÜ�‹Jˆô ñ ä! %¨q¨r¨°U¸2¸A°YÑ)>Ô?óó ð ñ	ð 	Œ	ô �u“:ˆØ%Ÿ]™]¨QÑ.Ð.ˆŒ
�UØ%Ÿ]™]¨QÑ.Ð.ˆŒ
�Uàˆq‹5ô Ñ3©UÓ3Ó3Ø—=‘= 8§=¡=Ñ0°AÑ5ñ6à�Q‘ñ*ð ˆDŒN˜Yô
 Ñ3©UÓ3Ó3Ø—=‘= 8§=¡=Ñ0°AÑ5ñ6à�Q‘ñ*ð ˆDŒN˜Yô Ñ3©UÓ3Ó3Ø—=‘= 8§=¡=Ñ0°AÑ5ñ6à�Q‘ñ,ð ˆDŒO™jð
 *+Ð*ˆDŒN˜YØ)*Ð*ˆDŒN˜YØ+,Ð,ˆDŒO˜jä×Ñ˜tÕ$r   )rH   rM   r   r   r   r   r   r   r   )r-   r.   r/   r0   rD   r   rP   rT   rY   r]   r;   re   r+   r1   r2   r   r   r
   r
   ]   s/   † ñ5ôò
ò)ò-ò-òòõ)%r   F)Úcontrolc          
      ó’  • SSK Jn  SSKJn  SnSnSn	Sn
SnU Hà  nX   nU(       a
  [	        U S9nO	[        U S9nU" Xæ" SU-  5      5      nUR                  U5        [        UR                  5      nUR                  nUU-  nXŽR                  U-  -  nU	U-  n	X®R                  -  n
X¾R                  U-  -  nU(       a  M§  [        5         [        SU5        S H  n[        SU[        UU5      4-  5        M     Mâ     U(       d  [        5         [        S	5        [        S
Xq-  U	-  -  5        [        SX‰-  -  5        [        SX‘-  [        U5      -  -  5        U
[        U5      -  n[        SU-  5        [        S[        [        U5      5      * -  5        X¹-  n[        SU-  5        [        S[        [        U5      5      * -  5        g )Nr   )ÚTransformPen)ÚScaler6   g      ð?zglyph:)r   r>   r?   r@   rA   rB   r   r   r   r   r   r   r   r    r!   z%s: %gzfont:z
weight: %gzweight (perceptual): %gz
width:  %gz
slant:  %gzslant angle:  %gzslant (perceptual):  %gzslant (perceptual) angle:  %g)ÚfontTools.pens.transformPenr�   ÚfontTools.misc.transformr‚   r
   r	   Údrawr'   r   Úwidthr!   ÚprintÚgetattrrx   r   r   )r7   ÚupemÚglyphsÚquietr   r�   r‚   Úwght_sumÚwght_sum_perceptualÚwdth_sumÚslnt_sumÚslnt_sum_perceptualÚ
glyph_nameÚglyphÚpenÚtransformerr   r†   Úitemr!   Úslant_perceptuals                        r   Ú_testr—   ²   s¼  € Ý8Ý.à€HØÐØ€HØ€HØÐÛˆ
ØÑ$ˆÞÜ&°Ñ9‰Cä¨Ñ2ˆCÙ" 3¨¨c°D©jÓ(9Ó:ˆØ�
‰
�;Ôä�3—8‘8‹}ˆØ—‘ˆØ�DÑˆØŸx™x¨%Ñ/Ñ/ÐØ�EÑˆØ—I‘IÑˆØŸy™y¨5Ñ0Ñ0ÐæÙäŒÜˆh˜
Ô#ó
ˆDô" �(˜d¤G¨C°Ó$6Ð7Ñ7Ö8ó#
ñ/ öT ÜŒÜˆgŒä	ˆ,˜(™/¨HÑ4Ñ
5Ô6Ü	Ð
#Ð':Ñ'EÑ
FÔGÜ	ˆ,˜(™/¬C°«KÑ7Ñ
8Ô9Ø”s˜6“{Ñ"€EÜ	ˆ,˜Ñ
ÔÜ	Ð
¤¬¨U«Ó 4Ð4Ñ
4Ô5Ø*Ñ5ÐÜ	Ð
#Ð&6Ñ
6Ô7Ü	Ð
)¬W´TÐ:JÓ5KÓ-LÐ,LÑ
LÕMr   c                 ó2  • U c  SSK nUR                  SS n SSKnUR                  SS S9nUR	                  SSSS	9  UR	                  S
SSSS9  UR	                  SSSS	9  UR	                  SSSSS9  UR	                  SSSSS9  UR	                  SSSSS9  UR                  U 5      nUR                  nUR                  b  [        UR                  5      OSn0 nUR                  R                  5        H9  nUR                  S5      n	U	S   R                  5       n
[        U	S   5      nX·U
'   M;     SS KJn  U" UR                  US!9nU(       d  UR                  5       n[!        UR#                  US"9US#   R$                  UUR&                  UR(                  S$9  g)%z.Report font glyph shape geometricsl statisticsNr   r&   zfonttools pens.statisticsPen)ÚdescriptionÚfontzfont.ttfz
Font file.)ÚmetavarÚhelprŠ   z
glyph-namezGlyph names.Ú*)r›   rœ   Únargsz-yz<number>z1Face index into a collection to open. Zero based.z-cz	--controlÚ
store_truez4Use the control-box pen instead of the Green therem.)Úactionrœ   z-qz--quietz!Only report font-wide statistics.z--variationszAXIS=LOCÚ z¼List of space separated locations. A location consist in the name of a variation axis, followed by '=' and a number. E.g.: wght=700 wdth=80. The default is the location of the base master.)r›   Údefaultrœ   Ú=)ÚTTFont)Ú
fontNumber)ÚlocationÚhead)r‹   r   )ÚsysÚargvÚargparseÚArgumentParserÚadd_argumentÚ
parse_argsrŠ   ÚyÚintÚ
variationsÚsplitÚstripÚfontTools.ttLibr¤   rš   ÚgetGlyphOrderr—   ÚgetGlyphSetÚ
unitsPerEmr‹   r   )Úargsr¨   rª   ÚparserÚoptionsrŠ   r¥   r¦   Útag_vÚfieldsÚtagÚvr¤   rš   s                 r   Úmainr¾   ô   sÈ  € ð �|Ûà�x‰x˜˜ˆ|ˆãà×$Ñ$Ø&ØDð %ð €Fð ×Ñ˜¨
¸ÐÑFØ
×Ñ˜¨,¸^ÐSVÐÑWØ
×ÑØØØ@ð ñ ð
 ×ÑØØØØCð	 ñ ð ×ÑØˆi Ð3Vð ñ ð ×ÑØØØðLð	 ñ ð ×Ñ Ó%€Gà�^‰^€FØ#*§9¡9Ñ#8”�W—Y‘Y”¸a€Jà€HØ×#Ñ#×)Ñ)Ö+ˆØ—‘˜SÓ!ˆØ�Q‰i�o‰oÓˆÜ��q‘	‹NˆØ�‹ñ	 ,õ 'á�'—,‘,¨:Ñ6€DÞØ×#Ñ#Ó%ˆÜ	Ø×Ñ (ÐÐ+ØˆV‰×ÑØØ�m‰mØ—‘ór   Ú__main__Nr&   )F)rD   Úmathr   r   r   ÚfontTools.pens.basePenr   r   ÚfontTools.pens.momentsPenr   Ú__all__r   r	   r
   r—   r¾   r-   r¨   r©   r2   r   r   Ú<module>rÄ      s‡   ðñ;÷ %Ñ $ß <Ý 0àÐ2Ð
3€÷)7ñ )7ôX#%�N Jô #%ôLR%˜>¨7ô R%ðj?N¸%ö ?NòD>ðB ˆzÓÛáˆ�‰�!�"ˆÕð r   