ó
    oñ:i^.  ã                   ó"  • S SK J r   S SKJrJrJrJrJr  S SKJrJ	r	  S SK
Jr  S SKJr  S SKJr  S SKJrJr  S SKJrJr  S S	KJr  S S
KJrJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKrSS/r  " S S5      r! " S S\!\5      r" " S S\!\\5      r#g)é    )Úarray)ÚAnyÚCallableÚDictÚOptionalÚTuple)ÚMAX_F2DOT14ÚfloatToFixedToFloat)ÚLogMixin)ÚAbstractPointPen©ÚotRound)Ú
LoggingPenÚPenError)ÚTransformPenÚTransformPointPen)Ú	ttProgram)ÚflagOnCurveÚ	flagCubic)ÚGlyph)ÚGlyphComponent)ÚGlyphCoordinates)ÚdropImpliedOnCurvePointsNÚ
TTGlyphPenÚTTGlyphPointPenc                   óì   • \ rS rSr SS\\\\4      S\SS4S jjr	S\S\
\\\\\\4   4S	 jrS
 rSS jr SS\S\
\\\\\\4   S\\   S\SS4
S jjrS r  S\S.S\S\S\\/\4   S\4S jjjrSrg)Ú_TTGlyphBasePené   ÚglyphSetÚhandleOverflowingTransformsÚreturnNc                 ó<   • Xl         X l        U R                  5         g)a  
Construct a new pen.

Args:
    glyphSet (Dict[str, Any]): A glyphset object, used to resolve components.
    handleOverflowingTransforms (bool): See below.

If ``handleOverflowingTransforms`` is True, the components' transform values
are checked that they don't overflow the limits of a F2Dot14 number:
-2.0 <= v < +2.0. If any transform value exceeds these, the composite
glyph is decomposed.

An exception to this rule is done for values that are very close to +2.0
(both for consistency with the -2.0 case, and for the relative frequency
these occur in real fonts). When almost +2.0 values occur (and all other
values are within the range -2.0 <= x <= +2.0), they are clamped to the
maximum positive value that can still be encoded as an F2Dot14: i.e.
1.99993896484375.

If False, no check is done and all components are translated unmodified
into the glyf table, followed by an inevitable ``struct.error`` once an
attempt is made to compile them.

If both contours and components are present in a glyph, the components
are decomposed.
N)r   r    Úinit)Úselfr   r    s      Ú\/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/fontTools/pens/ttGlyphPen.pyÚ__init__Ú_TTGlyphBasePen.__init__   s   € ð> !ŒØ+FÔ(Ø�	‰	�ó    Ú	glyphNameÚtransformationc                 óx   • U R                  X5      n[        U R                  U   U R                  5      " U5        g ©N)ÚtransformPenÚgetattrr   Ú
drawMethod)r$   r)   r*   Útpens       r%   Ú
_decomposeÚ_TTGlyphBasePen._decompose9   s0   € ð
 × Ñ  Ó6ˆÜ�—‘˜iÑ(¨$¯/©/Ô:¸4Õ@r(   c                 ó   • [         e)z&
Check if the current path is closed.
)ÚNotImplementedError©r$   s    r%   Ú	_isClosedÚ_TTGlyphBasePen._isClosedA   s
   € ô "Ð!r(   c                 ó<   • / U l         / U l        / U l        / U l        g r,   )ÚpointsÚendPtsÚtypesÚ
componentsr5   s    r%   r#   Ú_TTGlyphBasePen.initG   s   € ØˆŒØˆŒØˆŒ
Øˆ�r(   ÚbaseGlyphNameÚ
identifierÚkwargsc                 ó<   • U R                   R                  X45        g)z
Add a sub glyph.
N)r<   Úappend)r$   r>   r*   r?   r@   s        r%   ÚaddComponentÚ_TTGlyphBasePen.addComponentM   s   € ð 	�‰×Ñ Ð>Õ?r(   c                 ó²  • U R                   (       a  [        S U R                   5       5      n/ nU R                   GH  u  pEX@R                  ;  a!  U R                  R                  SU S35        M6  U R                  (       d  U R                   (       a  W(       a  U R                  XE5        Mr  [        5       nXFl	        S USS   5       u  Ul
        Ul        [        S US S  5       5      nUS:w  aI  U R                   (       a)  [        S U 5       5      (       a  [        S	 U 5       5      nUS S
 US
S  4Ul        Xl        UR                  U5        GM     U$ )Nc              3   ób   #   • U  H%  u  pUS S   H  nUS:„  =(       d    US:  v •  M     M'     g 7f)Né   é   éþÿÿÿ© )Ú.0r)   r*   Úss       r%   Ú	<genexpr>Ú3_TTGlyphBasePen._buildComponents.<locals>.<genexpr>]   s<   é € ð â3BÑ/�YØ'¨¨Ô+�Að �A‘—˜˜R™”á+ñ  Ú3Bùs   ‚-/z skipped non-existing component 'Ú'c              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr,   r   ©rK   Úvs     r%   rM   rN   n   s   é € Ð'OÒ<N°q¬°¯
¨
Ò<Nùs   ‚rG   c              3   ó:   #   • U  H  n[        US 5      v •  M     g7f)é   N)r
   rQ   s     r%   rM   rN   q   s   é € ð #Ú4F¨qÔ# A r×*Ð*Ò4Fùs   ‚)é   r   r   rU   c              3   óT   #   • U  H  n[         Us=:  =(       a    S :*  Os  v •  M      g7f©rH   N©r	   ©rK   rL   s     r%   rM   rN   u   s#   é € ð <Ú2@¨Q”K !×(Ó( q×(Ñ(².ùs   ‚&(c              3   óZ   #   • U  H!  n[         Us=:  a  S ::  a	  O  O[         OUv •  M#     g7frW   rX   rY   s     r%   rM   rN   y   s(   é € ð +â!/˜Aô (3°QÕ';¸!Ö';�ÀÔBÚ!/ùs   ‚)+rH   )r    Úanyr<   r   ÚlogÚwarningr9   r1   r   r)   ÚxÚyÚtupleÚ	transformÚflagsrB   )r$   ÚcomponentFlagsÚoverflowingr<   r)   r*   Ú	components          r%   Ú_buildComponentsÚ _TTGlyphBasePen._buildComponentsY   sN  € Ø×+×+ô ñ à37·?²?óó ˆKð
 ˆ
Ø)-¯­Ñ%ˆIØ§¡Ó-Ø—‘× Ñ Ð#CÀIÀ;ÈaÐ!PÔQÙØ�{�{˜t×?×?ÆKà—‘ 	Ô:Ùä&Ó(ˆIØ"+ÔÙ'O¸NÈ1È2Ñ<NÓ'OÑ$ˆIŒK˜œô #ñ #Ø4BÀ2ÀAÑ4Fó#ó ˆNð  Ó-Ø×3×3¼ñ <Ù2@ó<÷ 9ñ 9ô &+ñ +á!/ó+ó &�Nð (6°b°qÐ'9¸>È!È"Ð;MÐ&N�	Ô#Ø,ŒOØ×Ñ˜i×(ñ9 *9ð: Ðr(   ©Úroundrc   ÚdropImpliedOnCurvesri   c                óH  • U R                  5       (       d  [        S5      eU R                  U5      n[        5       n[	        U R
                  5      Ul        U R                  Ul        [        SU R                  5      Ul        U R                  5         U(       a  XEl        SUl        U$ [        UR                  5      Ul        [         R"                  " 5       Ul        UR$                  R'                  S5        U(       a  [)        U5        UR                  R+                  US9  U$ )zê
Returns a :py:class:`~._g_l_y_f.Glyph` object representing the glyph.

Args:
    componentFlags: Flags to use for component glyphs. (default: 0x04)

    dropImpliedOnCurves: Whether to remove implied-oncurve points. (default: False)
zDidn't close last contour.ÚBéÿÿÿÿr(   rh   )r6   r   rf   r   r   r9   Úcoordinatesr:   ÚendPtsOfContoursr   r;   rb   r#   r<   ÚnumberOfContoursÚlenr   ÚProgramÚprogramÚfromBytecoder   ÚtoInt)r$   rc   rj   ri   r<   Úglyphs         r%   rv   Ú_TTGlyphBasePen.glyph‚   sä   € ð �~‰~×ÑÜÐ7Ó8Ð8Ø×*Ñ*¨>Ó:ˆ
ä“ˆÜ,¨T¯[©[Ó9ˆÔØ!%§¡ˆÔÜ˜C §¡Ó,ˆŒØ�	‰	Œæð  *ÔØ%'ˆEÔ"ð ˆô &)¨×)?Ñ)?Ó%@ˆEÔ"Ü%×-Ò-Ó/ˆEŒMØ�M‰M×&Ñ& sÔ+Þ"Ü(¨Ô/Ø×Ñ×#Ñ#¨%Ð#Ñ0àˆr(   )r<   r:   r   r    r9   r;   )T©r!   Nr,   )rG   F)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   Ústrr   Úboolr&   r   Úfloatr1   r6   r#   rC   rf   r   Úintr   r   rv   Ú__static_attributes__rJ   r(   r%   r   r      s  † ð -1ñ!à˜4  S ™>Ñ*ð!ð &*ð!ð 
õ	!ðFAàðAð ˜e U¨E°5¸%ÀÐFÑGôAò"ôð %)ñ	
@àð
@ð ˜e U¨E°5¸%ÀÐFÑGð
@ð ˜S‘Mð	
@ð
 ð
@ð 
õ
@ò'ðV #Ø$)ð&ð
 )0ò&àð&ð "ð&ð
 ˜˜ ˜Ñ%ð&ð 
÷&ñ &r(   r   c            	       óú   ^ • \ rS rSrSrSr\r   SS\\	\
\4      S\S\SS4U 4S	 jjjrS
\\\4   S\SS4S jrSS jrS\4S jrS
\\\4   SS4S jrS
\\\4   SS4S jrSS jrSS jrSS jrSS jrSrU =r$ )r   é«   zý
Pen used for drawing to a TrueType glyph.

This pen can be used to construct or modify glyphs in a TrueType format
font. After using the pen to draw, use the ``.glyph()`` method to retrieve
a :py:class:`~._g_l_y_f.Glyph` object representing the glyph.
ÚdrawNr   r    ÚoutputImpliedClosingLiner!   c                 ó0   >• [         TU ]  X5        X0l        g r,   )Úsuperr&   r…   )r$   r   r    r…   Ú	__class__s       €r%   r&   ÚTTGlyphPen.__init__·   s   ø€ ô 	‰Ñ˜Ô?Ø(@Õ%r(   ÚptÚtpc                 óp   • U R                   R                  U5        U R                  R                  U5        g r,   )r9   rB   r;   )r$   rŠ   r‹   s      r%   Ú	_addPointÚTTGlyphPen._addPointÀ   s&   € Ø�‰×Ñ˜2ÔØ�
‰
×Ñ˜"Õr(   c                 ól   • U R                   R                  5         U R                  R                  5         g r,   )r9   Úpopr;   r5   s    r%   Ú	_popPointÚTTGlyphPen._popPointÄ   s   € Ø�‰�‰ÔØ�
‰
�‰Õr(   c                 ó¨   • U R                   (       + =(       d;    U R                  =(       a(    U R                  S   [        U R                   5      S-
  :H  $ )Nrm   rU   )r9   r:   rq   r5   s    r%   r6   ÚTTGlyphPen._isClosedÈ   s<   € Ø—K‘K”÷ 
Ø�K‰K×C˜DŸK™K¨™O¬s°4·;±;Ó/?À!Ñ/CÑCð	
r(   c                 ó0   • U R                  U[        5        g r,   )r�   r   ©r$   rŠ   s     r%   ÚlineToÚTTGlyphPen.lineToÍ   s   € Ø�‰�rœ;Õ'r(   c                 óp   • U R                  5       (       d  [        S5      eU R                  U[        5        g )Nz+"move"-type point must begin a new contour.)r6   r   r�   r   r–   s     r%   ÚmoveToÚTTGlyphPen.moveToÐ   s)   € Ø�~‰~×ÑÜÐHÓIÐIØ�‰�rœ;Õ'r(   c                 ó¨   • [        U5      S-  S:X  d   eUS S  H  nU R                  U[        5        M     US   b  U R                  US   S5        g g )NrH   rU   rm   )rq   r�   r   ©r$   r9   rŠ   s      r%   ÚcurveToÚTTGlyphPen.curveToÕ   sY   € Ü�6‹{˜Q‰ !Ó#Ð#Ð#Ø˜˜"“+ˆBØ�N‰N˜2œyÖ)ñ ð �"‰:Ñ!Ø�N‰N˜6 "™: qÕ)ð "r(   c                 óš   • [        U5      S:¼  d   eUS S  H  nU R                  US5        M     US   b  U R                  US   S5        g g )NrU   rm   r   )rq   r�   r�   s      r%   ÚqCurveToÚTTGlyphPen.qCurveToÞ   sU   € Ü�6‹{˜aÓÐÐØ˜˜"“+ˆBØ�N‰N˜2˜qÖ!ñ ð �"‰:Ñ!Ø�N‰N˜6 "™: qÕ)ð "r(   c                 óº  • [        U R                  5      S-
  nUS:X  d&  U R                  (       a&  XR                  S   S-   :X  a  U R                  5         g U R                  (       dZ  SnU R                  (       a  U R                  S   S-   nU R                  U   U R                  U   :X  a  U R                  5         US-  nU R                  R                  U5        g )NrU   r   rm   )rq   r9   r:   r‘   r…   rB   )r$   ÚendPtÚstartPts      r%   Ú	closePathÚTTGlyphPen.closePathç   s©   € Ü�D—K‘KÓ  1Ñ$ˆð �A‹:˜$Ÿ+Ÿ+¨%·;±;¸r±?ÀQÑ3FÓ*FØ�N‰NÔØà×,×,àˆGØ�{�{ØŸ+™+ b™/¨AÑ-�Ø�{‰{˜7Ñ# t§{¡{°5Ñ'9Ó9Ø—‘Ô Ø˜‘
�à�‰×Ñ˜5Õ!r(   c                 ó$   • U R                  5         g r,   )r¦   r5   s    r%   ÚendPathÚTTGlyphPen.endPathú   s   € à�‰Õr(   )r…   )NTFrx   )ry   rz   r{   r|   Ú__doc__r/   r   r-   r   r   r}   r   r~   r&   r   r   r€   r�   r‘   r6   r—   rš   rž   r¡   r¦   r©   r�   Ú__classcell__©rˆ   s   @r%   r   r   «   sç   ø† ñð €JØ€Lð .2Ø,0Ø).ñ	Aà˜4  S ™>Ñ*ðAð &*ðAð #'ð	Að
 
÷Að Að˜E %¨ ,Ñ/ð °Sð ¸Tô ôð
˜4ô 
ð
(˜˜u e˜|Ñ,ð (°ô (ð(˜˜u e˜|Ñ,ð (°ô (ô
*ô*ô"÷&ò r(   c                   ó¾   ^ • \ rS rSrSrSr\rSU 4S jjrS\	4S jr
SS\\   S	\SS4S
 jjrSS jr    SS\\\4   S\\   S\	S\\   S\\   S	\SS4S jjrSrU =r$ )r   éÿ   a  
Point pen used for drawing to a TrueType glyph.

This pen can be used to construct or modify glyphs in a TrueType format
font. After using the pen to draw, use the ``.glyph()`` method to retrieve
a :py:class:`~._g_l_y_f.Glyph` object representing the glyph.
Ú
drawPointsr!   Nc                 ó0   >• [         TU ]  5         S U l        g r,   )r‡   r#   Ú_currentContourStartIndex)r$   rˆ   s    €r%   r#   ÚTTGlyphPointPen.init  s   ø€ Ü‰‰ŒØ)-ˆÕ&r(   c                 ó   • U R                   S L $ r,   ©r²   r5   s    r%   r6   ÚTTGlyphPointPen._isClosed  s   € Ø×-Ñ-°Ð5Ð5r(   r?   r@   c                 óx   • U R                  5       (       d  [        S5      e[        U R                  5      U l        g)z
Start a new sub path.
zDidn't close previous contour.N)r6   r   rq   r9   r²   )r$   r?   r@   s      r%   Ú	beginPathÚTTGlyphPointPen.beginPath  s.   € ð �~‰~×ÑÜÐ;Ó<Ð<Ü),¨T¯[©[Ó)9ˆÕ&r(   c                 ó6  • U R                  5       (       a  [        S5      eU R                  [        U R                  5      :X  a  SU l        gU R
                  (       a  U R
                  S   S-   OSnU R
                  R                  [        U R                  5      S-
  5        SU l        U R                  n[        U[        U5      5       HL  nX#   S:X  d  M  US-
  nXA:  a  [        U5      S-
  nX$   S:X  a  [        X$'   US-  nX$   S:X  a  M  [        X#'   MN     g)z
End the current sub path.
zContour is already closed.Nrm   rU   r   Úcurve)r6   r   r²   rq   r9   r:   rB   r;   Úranger   r   )r$   ÚcontourStartrb   ÚiÚjs        r%   r©   ÚTTGlyphPointPen.endPath  sô   € ð
 �>‰>×ÑÜÐ7Ó8Ð8Ø×)Ñ)¬S°·±Ó-=Ó=à-1ˆDÔ*Øà.2¯k¯k�t—{‘{ 2‘¨Ò*¸qˆØ�‰×Ñœ3˜tŸ{™{Ó+¨aÑ/Ô0Ø)-ˆÔ&ð —
‘
ˆÜ�|¤S¨£ZÖ0ˆAØ‰x˜7Õ"Ø˜‘E�ØÓ#Ü˜E›
 Q™�AØ‘h !“mÜ(�E‘HØ˜‘F�Að ‘h !•mô '�“ò 1r(   rŠ   ÚsegmentTypeÚsmoothÚnamec                 óª  • U R                  5       (       a  [        S5      eUc  U R                  R                  S5        OyUS;   a   U R                  R                  [        5        OSUS:X  a   U R                  R                  [        5        O-US:X  a  U R                  R                  S5        O[        U5      eU R                  R                  U5        g)z&
Add a point to the current sub path.
z&Can't add a point to a closed contour.Nr   )ÚlineÚmoveÚqcurver»   )r6   r   r;   rB   r   ÚAssertionErrorr9   )r$   rŠ   rÁ   rÂ   rÃ   r?   r@   s          r%   ÚaddPointÚTTGlyphPointPen.addPoint6  s¡   € ð �>‰>×ÑÜÐCÓDÐDØÑØ�J‰J×Ñ˜aÕ ØÐ,Ó,Ø�J‰J×ÑœkÕ*Ø˜HÓ$Ø�J‰J×ÑœkÕ*Ø˜GÓ#Ø�J‰J×Ñ˜gÕ&ä  Ó-Ð-à�‰×Ñ˜2Õr(   rµ   rx   r,   )NFNN)ry   rz   r{   r|   r«   r/   r   r-   r#   r~   r6   r   r}   r   r¸   r©   r   r   rÉ   r�   r¬   r­   s   @r%   r   r   ÿ   s¹   ø† ñð €JØ$€L÷.ð6˜4ô 6ñ: H¨S¡Mð :ÀCð :ÈDõ :ô'ð> &*ØØ"Ø$(ñà�%˜�,Ñðð ˜c‘]ðð ð	ð
 �s‰mðð ˜S‘Mðð ðð 
÷ó r(   )$r   Útypingr   r   r   r   r   ÚfontTools.misc.fixedToolsr	   r
   ÚfontTools.misc.loggingToolsr   ÚfontTools.pens.pointPenr   ÚfontTools.misc.roundToolsr   ÚfontTools.pens.basePenr   r   ÚfontTools.pens.transformPenr   r   ÚfontTools.ttLib.tablesr   ÚfontTools.ttLib.tables._g_l_y_fr   r   r   r   r   r   ÚmathÚ__all__r   r   r   rJ   r(   r%   Ú<module>rÖ      ss   ðÝ ß 7Õ 7ß FÝ 0Ý 4Ý -ß 7ß GÝ ,ß BÝ 1Ý :Ý <Ý DÛ ð Ð*Ð
+€÷Sñ SôlQ� *ô QôhP�o xÐ1Aõ Pr(   