§
    ¢”jP&  ã                   óô   — d Z ddlmZmZmZ ddlmZmZ ddlm	Z	 ddgZ
 G d„ d¦  «        Z G d	„ dee	¦  «        Z G d
„ dee¦  «        Zdddœd„Zd„ Zedk    rddlZ eej        dd…         ¦  «         dS dS )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                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚStatisticsBasec                 ó.   — |                       ¦   «          d S ©N)Ú_zero©Úselfs    úk/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/fontTools/pens/statisticsPen.pyÚ__init__zStatisticsBase.__init__   s   € Ø�
Š
‰Œˆˆˆó    c                 ó’   — d| _         d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _	        d S )Nr   )
ÚareaÚmeanXÚmeanYÚ	varianceXÚ	varianceYÚstddevXÚstddevYÚ
covarianceÚcorrelationÚslantr   s    r   r   zStatisticsBase._zero   sM   € ØˆŒ	ØˆŒ
ØˆŒ
ØˆŒØˆŒØˆŒØˆŒØˆŒØˆÔØˆŒ
ˆ
ˆ
r   c                 ó   — t          | j        ¦  «        | _        t          | j        ¦  «        | _        t          | j        ¦  «        x| _        }t          | j        ¦  «        x| _        }||z  dk    rt          d¦  «        }n+| j        ||z  z  }t          dt          d|¦  «        ¦  «        }t          |¦  «        dk    r|nd| _
        | j        dk    r| j        | j        z  nt          d¦  «        }t          |¦  «        dk    r|nd| _        d S )Nr   ÚNaNéÿÿÿÿé   gü©ñÒMbP?)Úabsr   r   r   r   r   Úfloatr   ÚmaxÚminr   r   )r   r   r   r   r   s        r   Ú_updatezStatisticsBase._update   s  € õ ˜Tœ^Ñ,Ô,ˆŒÝ˜Tœ^Ñ,Ô,ˆŒå!% d¤nÑ!5Ô!5Ð5ˆŒ�wÝ!% d¤nÑ!5Ô!5Ð5ˆŒ�wð �WÑ Ò!Ð!Ý ™,œ,ˆKˆKð
 œ/¨W°wÑ->Ñ?ˆKÝ˜b¥# a¨Ñ"5Ô"5Ñ6Ô6ˆKÝ*-¨kÑ*:Ô*:¸TÒ*AÐ*A˜;˜;ÀqˆÔð 15´À!Ò0CÐ0CˆDŒO˜dœnÑ,Ð,ÍÈuÉÌð 	õ " %™jœj¨4Ò/Ð/�U�U°QˆŒ
ˆ
ˆ
r   N)Ú__name__Ú
__module__Ú__qualname__r   r   r(   © r   r   r   r      sA   € € € € € ðð ð ð
ð 
ð 
ð7ð 7ð 7ð 7ð 7r   r   c                   ó&   — e Zd ZdZdd„Zd„ Zd„ ZdS )r	   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                 óf   — t          j        | |¬¦  «         t                               | ¦  «         d S )N©Úglyphset)r   r   r   ©r   r0   s     r   r   zStatisticsPen.__init__@   s2   € ÝÔ˜D¨8Ð4Ñ4Ô4Ð4Ý×Ò Ñ%Ô%Ð%Ð%Ð%r   c                 óV   — t          j        | ¦  «         |                      ¦   «          d S r   )r   Ú
_closePathr(   r   s    r   r3   zStatisticsPen._closePathD   s$   € ÝÔ˜dÑ#Ô#Ð#Ø�Š‰Œˆˆˆr   c                 ó:  — | j         }|s|                      ¦   «          d S | j        |z  x| _        }| j        |z  x| _        }| j        |z  ||z  z
  | _        | j        |z  ||z  z
  | _	        | j
        |z  ||z  z
  | _        t                               | ¦  «         d S r   )r   r   ÚmomentXr   ÚmomentYr   ÚmomentXXr   ÚmomentYYr   ÚmomentXYr   r   r(   )r   r   r   r   s       r   r(   zStatisticsPen._updateH   s®   € ØŒyˆØð 	Ø�JŠJ‰LŒLˆLØˆFð "œ\¨DÑ0Ð0ˆŒ
�UØ!œ\¨DÑ0Ð0ˆŒ
�Uð œ¨Ñ-°¸±Ñ=ˆŒØœ¨Ñ-°¸±Ñ=ˆŒð œ-¨$Ñ.°¸±Ñ>ˆŒå×Ò˜tÑ$Ô$Ð$Ð$Ð$r   r   )r)   r*   r+   Ú__doc__r   r3   r(   r,   r   r   r	   r	   7   sP   € € € € € ð5ð 5ð&ð &ð &ð &ðð ð ð%ð %ð %ð %ð %r   c                   óD   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ ZdS )r
   aZ  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                 ór   — t          j        | |¦  «         t                               | ¦  «         g | _        d S r   )r   r   r   Ú_nodesr1   s     r   r   zStatisticsControlPen.__init__f   s4   € ÝÔ˜˜xÑ(Ô(Ð(Ý×Ò Ñ%Ô%Ð%ØˆŒˆˆr   c                 óV   — | j                              t          |Ž ¦  «         || _        d S r   )r=   ÚappendÚcomplexÚ_startPoint©r   Úpts     r   Ú_moveTozStatisticsControlPen._moveTok   s*   € ØŒ×Ò�7 B˜<Ñ(Ô(Ð(ØˆÔÐÐr   c                 óH   — | j                              t          |Ž ¦  «         d S r   ©r=   r?   r@   rB   s     r   Ú_lineTozStatisticsControlPen._lineToo   s"   € ØŒ×Ò�7 B˜<Ñ(Ô(Ð(Ð(Ð(r   c                 óV   — ||fD ]#}| j                              t          |Ž ¦  «         Œ$d S r   rF   )r   Úpt1Úpt2rC   s       r   Ú_qCurveToOnez!StatisticsControlPen._qCurveToOner   s<   € Ø˜�*ð 	-ð 	-ˆBØŒK×Ò�w¨˜|Ñ,Ô,Ð,Ð,ð	-ð 	-r   c                 óX   — |||fD ]#}| j                              t          |Ž ¦  «         Œ$d S r   rF   )r   rI   rJ   Úpt3rC   s        r   Ú_curveToOnez StatisticsControlPen._curveToOnev   s>   € Ø˜˜S�/ð 	-ð 	-ˆBØŒK×Ò�w¨˜|Ñ,Ô,Ð,Ð,ð	-ð 	-r   c                 ó    — |                       ¦   «         }|| j        k    r|                      | j        ¦  «         |                      ¦   «          d S r   )Ú_getCurrentPointrA   rG   r(   ©r   Úp0s     r   r3   zStatisticsControlPen._closePathz   sG   € Ø×"Ò"Ñ$Ô$ˆØ�Ô!Ò!Ð!Ø�LŠL˜Ô)Ñ*Ô*Ð*Ø�Š‰Œˆˆˆr   c                 óŠ   — |                       ¦   «         }|| j        k    rt          d¦  «        ‚|                      ¦   «          d S )Nz.Glyph statistics not defined on open contours.)rP   rA   r   r(   rQ   s     r   Ú_endPathzStatisticsControlPen._endPath€   sA   € Ø×"Ò"Ñ$Ô$ˆØ�Ô!Ò!Ð!Ý"Ð#SÑTÔTÐTØ�Š‰Œˆˆˆr   c           
      óæ  — | j         }t          |¦  «        }t          d„ t          ||dd …         |d d…         z   ¦  «        D ¦   «         ¦  «        dz  | _        t          |¦  «        }|j        |z  x| _        }|j        |z  x| _        }|dk    r¬t          d„ |D ¦   «         ¦  «        |j        |j        z  |z  z
  |dz
  z  x| _	        }t          d„ |D ¦   «         ¦  «        |j        |j        z  |z  z
  |dz
  z  x| _
        }t          d„ |D ¦   «         ¦  «        |j        |j        z  |z  z
  |dz
  z  x| _        }ndx| _	        }dx| _
        }dx| _        }t                               | ¦  «         d S )Nc              3   óZ   K  — | ]&\  }}|j         |j        z  |j         |j        z  z
  V — Œ'd S r   ©ÚrealÚimag)Ú.0rR   Úp1s      r   ú	<genexpr>z/StatisticsControlPen._update.<locals>.<genexpr>Œ   sQ   è è € ð ð á�B˜ð ”˜2œ7Ñ" R¤W¨r¬wÑ%6Ñ6ðð ð ð ð ð r   r#   é   c              3   ó4   K  — | ]}|j         |j         z  V — Œd S r   )rX   ©rZ   Úps     r   r\   z/StatisticsControlPen._update.<locals>.<genexpr>�   ó*   è è € Ð3Ð3¨�A”F˜QœV‘OÐ3Ð3Ð3Ð3Ð3Ð3r   c              3   ó4   K  — | ]}|j         |j         z  V — Œd S r   )rY   r_   s     r   r\   z/StatisticsControlPen._update.<locals>.<genexpr>¡   ra   r   c              3   ó4   K  — | ]}|j         |j        z  V — Œd S r   rW   r_   s     r   r\   z/StatisticsControlPen._update.<locals>.<genexpr>§   ra   r   r   )r=   ÚlenÚsumÚzipr   rX   r   rY   r   r   r   r   r   r(   )	r   ÚnodesÚnÚsumNodesr   r   r   r   r   s	            r   r(   zStatisticsControlPen._update†   sÈ  € Ø”ˆÝ�‰JŒJˆõ ð ð å! %¨¨q¨r¨r¬°U¸2¸A¸2´YÑ)>Ñ?Ô?ðñ ô ñ ô ð ñ	ð 	Œ	õ �u‘:”:ˆØ%œ]¨QÑ.Ð.ˆŒ
�UØ%œ]¨QÑ.Ð.ˆŒ
�UàˆqŠ5ˆ5õ Ð3Ð3¨UÐ3Ñ3Ô3Ñ3Ô3Ø”= 8¤=Ñ0°AÑ5ñ6à�Q‘ñ*ð ˆDŒN˜Yõ
 Ð3Ð3¨UÐ3Ñ3Ô3Ñ3Ô3Ø”= 8¤=Ñ0°AÑ5ñ6à�Q‘ñ*ð ˆDŒN˜Yõ Ð3Ð3¨UÐ3Ñ3Ô3Ñ3Ô3Ø”= 8¤=Ñ0°AÑ5ñ6à�Q‘ñ,ð ˆDŒO˜j˜jð
 *+Ð*ˆDŒN˜YØ)*Ð*ˆDŒN˜YØ+,Ð,ˆDŒO˜jå×Ò˜tÑ$Ô$Ð$Ð$Ð$r   r   )r)   r*   r+   r:   r   rD   rG   rK   rN   r3   rT   r(   r,   r   r   r
   r
   ]   s›   € € € € € ð5ð 5ðð ð ð ð
ð ð ð)ð )ð )ð-ð -ð -ð-ð -ð -ðð ð ðð ð ð)%ð )%ð )%ð )%ð )%r   F)Úcontrolc          
      ó  — ddl m} ddlm} d}d}d}	d}
d}|D ]ë}| |         }|rt	          | ¬¦  «        }nt          | ¬¦  «        } || |d|z  ¦  «        ¦  «        }|                     |¦  «         t          |j        ¦  «        }|j	        }||z  }||j        |z  z  }|	|z  }	|
|j
        z  }
||j
        |z  z  }|rŒ¦t          ¦   «          t          d|¦  «         dD ]$}t          d|t          ||¦  «        fz  ¦  «         Œ%Œì|st          ¦   «          t          d	¦  «         t          d
||z  |	z  z  ¦  «         t          d||	z  z  ¦  «         t          d|	|z  t          |¦  «        z  z  ¦  «         |
t          |¦  «        z  }t          d|z  ¦  «         t          dt          t          |¦  «        ¦  «         z  ¦  «         ||	z  }t          d|z  ¦  «         t          dt          t          |¦  «        ¦  «         z  ¦  «         d S )Nr   )ÚTransformPen)ÚScaler/   g      ð?zglyph:)r   r5   r6   r7   r8   r9   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.transformPenrl   ÚfontTools.misc.transformrm   r
   r	   Údrawr$   r   Úwidthr   ÚprintÚgetattrrd   r   r   )r0   ÚupemÚglyphsÚquietrj   rl   rm   Úwght_sumÚwght_sum_perceptualÚwdth_sumÚslnt_sumÚslnt_sum_perceptualÚ
glyph_nameÚglyphÚpenÚtransformerr   rq   Úitemr   Úslant_perceptuals                        r   Ú_testr‚   ²   sz  € Ø8Ð8Ð8Ð8Ð8Ð8Ø.Ð.Ð.Ð.Ð.Ð.à€HØÐØ€HØ€HØÐØð (9ð (9ˆ
Ø˜Ô$ˆØð 	3Ý&°Ð9Ñ9Ô9ˆCˆCå¨Ð2Ñ2Ô2ˆCØ"�l 3¨¨¨c°D©jÑ(9Ô(9Ñ:Ô:ˆØ�
Š
�;ÑÔÐå�3”8‰}Œ}ˆØ”ˆØ�DÑˆØ˜sœx¨%Ñ/Ñ/ÐØ�EÑˆØ�C”IÑˆØ˜sœy¨5Ñ0Ñ0Ðàð 	Øå‰ŒˆÝˆh˜
Ñ#Ô#Ð#ð
ð 	9ð 	9ˆDõ" �(˜d¥G¨C°Ñ$6Ô$6Ð7Ñ7Ñ8Ô8Ð8Ð8ð#	9ð& ð Ý‰ŒˆÝˆg‰Œˆå	ˆ,˜( T™/¨HÑ4Ñ
5Ñ6Ô6Ð6Ý	Ð
#Ð':¸XÑ'EÑ
FÑGÔGÐGÝ	ˆ,˜( T™/­C°©K¬KÑ7Ñ
8Ñ9Ô9Ð9Ø•s˜6‘{”{Ñ"€EÝ	ˆ,˜Ñ
ÑÔÐÝ	Ð
¥­¨U©¬Ñ 4Ô 4Ð4Ñ
4Ñ5Ô5Ð5Ø*¨XÑ5ÐÝ	Ð
#Ð&6Ñ
6Ñ7Ô7Ð7Ý	Ð
)­WµTÐ:JÑ5KÔ5KÑ-LÔ-LÐ,LÑ
LÑMÔMÐMÐMÐMr   c                 ó¤  — | €ddl }|j        dd…         } ddl}|                     dd ¬¦  «        }|                     ddd¬	¦  «         |                     d
ddd¬¦  «         |                     ddd¬	¦  «         |                     dddd¬¦  «         |                     dddd¬¦  «         |                     dddd¬¦  «         |                     | ¦  «        }|j        }|j        �t          |j        ¦  «        nd}i }|j	         
                    ¦   «         D ]K}| 
                    d¦  «        }	|	d                              ¦   «         }
t          |	d         ¦  «        }|||
<   ŒLdd lm}  ||j        |¬!¦  «        }|s|                     ¦   «         }t!          |                     |¬"¦  «        |d#         j        ||j        |j        ¬$¦  «         dS )%z.Report font glyph shape geometricsl statisticsNr   r#   zfonttools pens.statisticsPen)ÚdescriptionÚfontzfont.ttfz
Font file.)ÚmetavarÚhelpru   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)rv   rj   )ÚsysÚargvÚargparseÚArgumentParserÚadd_argumentÚ
parse_argsru   ÚyÚintÚ
variationsÚsplitÚstripÚfontTools.ttLibr�   r…   ÚgetGlyphOrderr‚   ÚgetGlyphSetÚ
unitsPerEmrv   rj   )Úargsr“   r•   ÚparserÚoptionsru   r�   r‘   Útag_vÚfieldsÚtagÚvr�   r…   s                 r   Úmainr©   ô   sO  € ð €|Øˆ
ˆ
ˆ
àŒx˜˜˜Œ|ˆà€O€O€Oà×$Ò$Ø&ØDð %ñ ô €Fð ×Ò˜¨
¸ÐÑFÔFÐFØ
×Ò˜¨,¸^ÐSVÐÑWÔWÐWØ
×ÒØØØ@ð ñ ô ð ð
 ×ÒØØØØCð	 ñ ô ð ð ×ÒØˆi Ð3Vð ñ ô ð ð ×ÒØØØðLð	 ñ ô ð ð ×Ò Ñ%Ô%€GàŒ^€FØ#*¤9Ð#8•�W”Y‘”�¸a€Jà€HØÔ#×)Ò)Ñ+Ô+ð ð ˆØ—’˜SÑ!Ô!ˆØ�QŒi�oŠoÑÔˆÝ��q”	‰NŒNˆØˆ�‰ˆà&Ð&Ð&Ð&Ð&Ð&àˆ6�'”,¨:Ð6Ñ6Ô6€DØð &Ø×#Ò#Ñ%Ô%ˆÝ	Ø×Ò (ÐÑ+Ô+ØˆVŒÔØØŒmØ”ðñ ô ð ð ð r   Ú__main__Nr#   )F)r:   Úmathr   r   r   ÚfontTools.pens.basePenr   r   ÚfontTools.pens.momentsPenr   Ú__all__r   r	   r
   r‚   r©   r)   r“   r”   r,   r   r   ú<module>r¯      sd  ðð;ð ;ð %Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0àÐ2Ð
3€ð)7ð )7ð )7ð )7ð )7ñ )7ô )7ð )7ðX#%ð #%ð #%ð #%ð #%�N Jñ #%ô #%ð #%ðLR%ð R%ð R%ð R%ð R%˜>¨7ñ R%ô R%ð R%ðj?N¸%ð ?Nð ?Nð ?Nð ?Nð ?NðD>ð >ð >ðB ˆzÒÐØ€J€J€Jà€DˆŒ�!�"�"ŒÑÔÐÐÐð Ðr   