Ë
    £ehP&  ã                   óÖ   — 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 «       yy)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y)ÚStatisticsBasec                 ó$   — | j                  «        y ©N)Ú_zero©Úselfs    úZ/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/fontTools/pens/statisticsPen.pyÚ__init__zStatisticsBase.__init__   s   € Ø�
‰
�ó    c                 ó�   — d| _         d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _	        y )Nr   )
ÚareaÚmeanXÚmeanYÚ	varianceXÚ	varianceYÚstddevXÚstddevYÚ
covarianceÚcorrelationÚslantr   s    r   r   zStatisticsBase._zero   sI   € ØˆŒ	ØˆŒ
ØˆŒ
ØˆŒØˆŒØˆŒØˆŒØˆŒØˆÔØˆ�
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kD  r|nd| _
        | j                  dk7  r| j                  | j                  z  n
t        d«      }t        |«      dkD  r|| _        y d| _        y )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¡nÓ!5Ð5ˆŒ�wÜ!% d§n¡nÓ!5Ð5ˆŒ�wð �WÑ Ò!Ü ›,‰Kð
 Ÿ/™/¨W°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   N)Ú__name__Ú
__module__Ú__qualname__r   r   r(   © r   r   r   r      s   „ òò
ó7r   r   c                   ó$   — e Zd ZdZdd„Zd„ Zd„ Zy)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                 ó\   — t        j                  | |¬«       t        j                  | «       y )N©Úglyphset)r   r   r   ©r   r0   s     r   r   zStatisticsPen.__init__@   s    € Ü×Ñ˜D¨8Õ4Ü×Ñ Õ%r   c                 óN   — t        j                  | «       | j                  «        y r   )r   Ú
_closePathr(   r   s    r   r3   zStatisticsPen._closePathD   s   € Ü×Ñ˜dÔ#Ø�‰�r   c                 ó`  — | j                   }|s| j                  «        y | j                  |z  x| _        }| j                  |z  x| _        }| j                  |z  ||z  z
  | _        | j                  |z  ||z  z
  | _	        | j                  |z  ||z  z
  | _        t        j                  | «       y r   )r   r   ÚmomentXr   ÚmomentYr   ÚmomentXXr   ÚmomentYYr   ÚmomentXYr   r   r(   )r   r   r   r   s       r   r(   zStatisticsPen._updateH   s£   € Ø�y‰yˆÙØ�J‰JŒLØð "Ÿ\™\¨DÑ0Ð0ˆŒ
�UØ!Ÿ\™\¨DÑ0Ð0ˆŒ
�Uð Ÿ™¨Ñ-°¸±Ñ=ˆŒØŸ™¨Ñ-°¸±Ñ=ˆŒð Ÿ-™-¨$Ñ.°¸±Ñ>ˆŒä×Ñ˜tÕ$r   r   )r)   r*   r+   Ú__doc__r   r3   r(   r,   r   r   r	   r	   7   s   „ ñ5ó&òó%r   c                   óB   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zy)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                 óh   — t        j                  | |«       t        j                  | «       g | _        y r   )r   r   r   Ú_nodesr1   s     r   r   zStatisticsControlPen.__init__f   s'   € Ü×Ñ˜˜xÔ(Ü×Ñ Ô%Øˆ�r   c                 óT   — | j                   j                  t        |Ž «       || _        y r   )r=   ÚappendÚcomplexÚ_startPoint©r   Úpts     r   Ú_moveTozStatisticsControlPen._moveTok   s    € Ø�‰×Ñœ7 B˜<Ô(ØˆÕr   c                 óF   — | j                   j                  t        |Ž «       y r   ©r=   r?   r@   rB   s     r   Ú_lineTozStatisticsControlPen._lineToo   s   € Ø�‰×Ñœ7 B˜<Õ(r   c                 óX   — ||fD ]#  }| j                   j                  t        |Ž «       Œ% y r   rF   )r   Úpt1Úpt2rC   s       r   Ú_qCurveToOnez!StatisticsControlPen._qCurveToOner   s+   € Ø˜�*ò 	-ˆBØ�K‰K×Ñœw¨˜|Õ,ñ	-r   c                 óZ   — |||fD ]#  }| j                   j                  t        |Ž «       Œ% y r   rF   )r   rI   rJ   Úpt3rC   s        r   Ú_curveToOnez StatisticsControlPen._curveToOnev   s-   € Ø˜˜S�/ò 	-ˆBØ�K‰K×Ñœw¨˜|Õ,ñ	-r   c                 ó˜   — | j                  «       }|| j                  k7  r| j                  | j                  «       | j                  «        y r   )Ú_getCurrentPointrA   rG   r(   ©r   Úp0s     r   r3   zStatisticsControlPen._closePathz   s9   € Ø×"Ñ"Ó$ˆØ�×!Ñ!Ò!Ø�L‰L˜×)Ñ)Ô*Ø�‰�r   c                 óx   — | j                  «       }|| j                  k7  rt        d«      ‚| j                  «        y )Nz.Glyph statistics not defined on open contours.)rP   rA   r   r(   rQ   s     r   Ú_endPathzStatisticsControlPen._endPath€   s3   € Ø×"Ñ"Ó$ˆØ�×!Ñ!Ò!Ü"Ð#SÓ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kD  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        j                  | «       y )Nc              3   óˆ   K  — | ]:  \  }}|j                   |j                  z  |j                   |j                  z  z
  –— Œ< y ­wr   ©ÚrealÚimag)Ú.0rR   Úp1s      r   ú	<genexpr>z/StatisticsControlPen._update.<locals>.<genexpr>Œ   s;   è ø€ ò á�B˜ð —‘˜2Ÿ7™7Ñ" R§W¡W¨r¯w©wÑ%6Õ6ñùs   ‚A Ar#   é   c              3   óN   K  — | ]  }|j                   |j                   z  –— Œ y ­wr   )rX   ©rZ   Úps     r   r\   z/StatisticsControlPen._update.<locals>.<genexpr>�   ó   è ø€ Ò3¨�A—F‘F˜QŸV™V•OÑ3ùó   ‚#%c              3   óN   K  — | ]  }|j                   |j                   z  –— Œ y ­wr   )rY   r_   s     r   r\   z/StatisticsControlPen._update.<locals>.<genexpr>¡   ra   rb   c              3   óN   K  — | ]  }|j                   |j                  z  –— Œ y ­wr   rW   r_   s     r   r\   z/StatisticsControlPen._update.<locals>.<genexpr>§   ra   rb   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ˆô ñ ä! %¨¨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   r   )r)   r*   r+   r:   r   rD   rG   rK   rN   r3   rT   r(   r,   r   r   r
   r
   ]   s/   „ ñ5óò
ò)ò-ò-òòó)%r   F)Úcontrolc          
      óˆ  — ddl m} ddlm} d}d}d}	d}
d}|D ]Ý  }| |   }|rt	        | ¬«      }nt        | ¬«      } || |d|z  «      «      }|j                  |«       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  «       y )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.transformPenrm   ÚfontTools.misc.transformrn   r
   r	   Údrawr$   r   Úwidthr   ÚprintÚgetattrre   r   r   )r0   ÚupemÚglyphsÚquietrk   rm   rn   Úwght_sumÚwght_sum_perceptualÚwdth_sumÚslnt_sumÚslnt_sum_perceptualÚ
glyph_nameÚglyphÚpenÚtransformerr   rr   Úitemr   Úslant_perceptuals                        r   Ú_testrƒ   ²   sÖ  € Ý8Ý.à€HØÐØ€HØ€HØÐØò (9ˆ
Ø˜Ñ$ˆÙÜ&°Ô9‰Cä¨Ô2ˆCÙ" 3©¨c°D©jÓ(9Ó:ˆØ�
‰
�;Ôä�3—8‘8‹}ˆØ—‘ˆØ�DÑˆØ˜sŸx™x¨%Ñ/Ñ/ÐØ�EÑˆØ�C—I‘IÑˆØ˜sŸy™y¨5Ñ0Ñ0ÐáØäŒÜˆh˜
Ô#ð
ò 	9ˆDô" �(˜d¤G¨C°Ó$6Ð7Ñ7Õ8ñ#	9ð/(9ñT ÜŒÜˆgŒä	ˆ,˜( T™/¨HÑ4Ñ
5Ô6Ü	Ð
#Ð':¸XÑ'EÑ
FÔGÜ	ˆ,˜( T™/¬C°«KÑ7Ñ
8Ô9Ø”s˜6“{Ñ"€EÜ	ˆ,˜Ñ
ÔÜ	Ð
¤¬¨U«Ó 4Ð4Ñ
4Ô5Ø*¨XÑ5ÐÜ	Ð
#Ð&6Ñ
6Ô7Ü	Ð
)¬W´TÐ:JÓ5KÓ-LÐ,LÑ
LÕMr   c                 ó^  — | €ddl }|j                  dd } ddl}|j                  dd ¬«      }|j	                  ddd¬	«       |j	                  d
ddd¬«       |j	                  ddd¬	«       |j	                  dddd¬«       |j	                  dddd¬«       |j	                  dddd¬«       |j                  | «      }|j                  }|j                  �t        |j                  «      nd}i }|j                  j                  «       D ]9  }|j                  d«      }	|	d   j                  «       }
t        |	d   «      }|||
<   Œ; dd lm}  ||j                  |¬!«      }|s|j                  «       }t!        |j#                  |¬"«      |d#   j$                  ||j&                  |j(                  ¬$«       y)%z.Report font glyph shape geometricsl statisticsNr   r#   zfonttools pens.statisticsPen)ÚdescriptionÚfontzfont.ttfz
Font file.)ÚmetavarÚhelprv   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)rw   rk   )ÚsysÚargvÚargparseÚArgumentParserÚadd_argumentÚ
parse_argsrv   ÚyÚintÚ
variationsÚsplitÚstripÚfontTools.ttLibr�   r†   ÚgetGlyphOrderrƒ   ÚgetGlyphSetÚ
unitsPerEmrw   rk   )Úargsr”   r–   ÚparserÚoptionsrv   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)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°      s‡   ðñ;÷ %Ñ $ß <Ý 0àÐ2Ð
3€÷)7ñ )7ôX#%�N Jô #%ôLR%˜>¨7ô R%ðj?N¸%ô ?NòD>ðB ˆzÒÛáˆ�‰�!�"ˆÕð r   