
    hC                         S SK JrJrJr  S r " S S\5      r " S S\5      rS r " S S	\5      r	 " S
 S\5      r
S rS rSS.S\4S jjrS rS rg)    )SimpleT2DecompilerT2WidthExtractorcalcSubrBiasc                 *    [        [        U 5      5      $ N)sortedset)ls    M/var/www/html/env/lib/python3.13/site-packages/fontTools/cffLib/transforms.py
_uniq_sortr      s    #a&>    c                       \ rS rSrSrg)StopHintCountEvent    N)__name__
__module____qualname____firstlineno____static_attributes__r   r   r   r   r      s    r   r   c                   F    \ 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g)_DesubroutinizingT2Decompiler   )op_hintmaskop_cntrmask
op_rmoveto
op_hmoveto
op_vmovetoNc                 2    [         R                  " XX#5        g r   )r   __init__)self
localSubrsglobalSubrsprivates       r   r    &_DesubroutinizingT2Decompiler.__init__   s    ##DkKr   c                    SU l         U R                   H  n[        XU R                  5        M     [	        US5      (       a;  U R                   (       a)  U R
                  (       a   [        R                  " X5        g g / Ul	        [        R                  " X5        UR                  S S  n[        UR                  5       HS  u  pEUS:  d   eX4S-
     S;   d   X4S-
     5       e[        X4S-
     5      [        :X  d   eUS   S:X  a  US S nXSUS-
  U& MU     U R                  R                  (       d  SU;   a  US UR!                  S5      S-    nX1l        U?	g ! [         a    U R
                  S	  g f = f)	NT_desubroutinized      )callsubr	callgsubrreturnendchar)need_hintcountstop_hintcount_opssetattrstop_hint_counthasattrcallingStackr   executer   _patchesprogramreversedtypeintr$   in_cff2indexr'   )r!   
charStringop_namedesubroutinizedidx	expansions         r   r5   %_DesubroutinizingT2Decompiler.execute   s   "..GD4#7#78 / :122
 ""t'8'8.&..t@  
""44$,,Q/&z':':;NC!8O8"7+ 0  ( Qw'(  a01S888}(%crN	-6C!Gc* < ||##O+"1:o++I6:# '6#3 * .))"-.s   %E E0/E0c                     U R                   U R                  S   U R                  -      n[        R                  " X5        U R                  X5        g Nr(   )r"   operandStack	localBiasr   op_callsubrprocessSubrr!   r<   subrs      r   rG   )_DesubroutinizingT2Decompiler.op_callsubrD   s@    t004t~~EF&&t3%r   c                     U R                   U R                  S   U R                  -      n[        R                  " X5        U R                  X5        g rD   )r#   rE   
globalBiasr   op_callgsubrrH   rI   s      r   rN   *_DesubroutinizingT2Decompiler.op_callgsubrI   sB     1 1" 5 GH''4%r   c                     SU l         U R                   H  n[        XS 5        M     U R                  S   n[	        US5      (       a
  [        5       eg )NFr(   r'   )r/   r0   r1   r4   r3   r   )r!   argsr>   css       r   r2   -_DesubroutinizingT2Decompiler.stop_hint_countN   sP    #..GD4( /r"2)**$&& +r   c                 t    [         R                  " X5        U R                  (       a  U R                  5         g g r   )r   r   r/   r2   r!   r<   s     r   r   )_DesubroutinizingT2Decompiler.op_hintmaskV   s*    &&t3  " r   c                     U R                   S   n[        US5      (       d'  UR                  R                  XR                  45        g g )Nr(   r'   )r4   r3   r6   appendr'   )r!   r<   rJ   rR   s       r   rH   )_DesubroutinizingT2Decompiler.processSubr[   s@    r"r-..KK'<'<=> /r   )r/   r   )r   r   r   r   r0   r    r5   rG   rN   r2   r   rH   r   r   r   r   r   r      s/    L& P&
&
'#
?r   r   c                    U R                    GH9  nX   nUR                  nUR                  5        Hn  nUR                  5         [	        UR
                  S/ 5      n[        XTR                  UR
                  5      nUR                  U5        UR                  Ul
        U?	Mp     [        US5      (       aS  UR                   HA  nUR                  n[        US5      (       a  U?SUR                  ;   d  M4  UR                  S	 MC     M  UR                  n[        US5      (       a  U?SUR                  ;   d  GM,  UR                  S	 GM<     U R                   R#                  5         g )NSubrsFDArray)	fontNamesCharStringsvalues	decompilegetattrr$   r   r#   r5   r'   r7   r3   r\   Privater[   rawDictGlobalSubrsclear)	cfffontNamefontrR   csubrs
decompilerfdpds	            r   desubroutinizern   a   s   MM}AKKMAIIw3E6ummQYYWJq!**AI"  4##llZZ2w''bjj(

7+ # Br7##H"**$JJw'/ "2 OOr   c                   &    \ rS rSrS rS rS rSrg)_MarkingT2Decompiler~   c                     [         R                  " XX#5        X4 H.  nU(       d  M  [        US5      (       a  M  [        5       Ul        M0     g )N_used)r   r    r3   r	   rs   )r!   r"   r#   r$   rj   s        r   r    _MarkingT2Decompiler.__init__   s9    ##DkK .EuWUG44!e /r   c                     U R                   R                  R                  U R                  S   U R                  -   5        [
        R                  " X5        g rD   )r"   rs   addrE   rF   r   rG   rU   s     r   rG    _MarkingT2Decompiler.op_callsubr   s<    !!$"3"3B"7$.."HI&&t3r   c                     U R                   R                  R                  U R                  S   U R                  -   5        [
        R                  " X5        g rD   )r#   rs   rv   rE   rM   r   rN   rU   s     r   rN   !_MarkingT2Decompiler.op_callgsubr   s>    ""4#4#4R#84??#JK''4r   r   N)r   r   r   r   r    rG   rN   r   r   r   r   rp   rp   ~   s    $45r   rp   c                   ~    \ rS rSr " S S\5      r SS jrS rS rS r	S	 r
S
 rS rS rS rS rS rS rS rSrg)_DehintingT2Decompiler   c                       \ rS rSrS rSrg)_DehintingT2Decompiler.Hints   c                 X    SU l         SU l        SU l        SU l        SU l        / U l        g )NFr   )has_hint	last_hintlast_checkedstatushas_hintmask	deletions)r!   s    r   r    %_DehintingT2Decompiler.Hints.__init__   s4    
 "DMDN !"D DK %DDNr   )r   r   r   r   r   r   N)r   r   r   r   r    r   r   r   r   Hintsr~      s    	 . 	r   r   Nc                 L    Xl         [        R                  " XX4U5        X`l        g r   )_cssr   r    r$   )r!   cssr"   r#   nominalWidthXdefaultWidthXr$   s          r   r    _DehintingT2Decompiler.__init__   s%     	!!k-	
 r   c                    [        US5      (       a  UR                  OS nU R                  5       Ul        [        R                  " X5        UR                  nUR
                  (       d  UR                  (       a  U R                  R                  U5        UR                  S:w  a  [        UR                  [        UR                  5      S-
  5       H5  n[        UR                  U   [        5      (       a	  SUl	          OSUl	        M7     [        UR                  5      Ul        U(       a  UR                   UR                   :X  d   eg g )N_hintsr)   r*   )r3   r   r   r   r5   r   r   r   rv   r   ranger   lenr7   
isinstancestr__dict__)r!   r=   	old_hintshintsis        r   r5   _DehintingT2Decompiler.execute   s    )0X)F)FJ%%D	 JJL
  2!!>>U//IIMM*%<<15--s:3E3E/F/JKj003S99#$EL#$EL L "%Z%7%7!8E>>Y%7%7777 r   c                     U R                   U R                  S   U R                  -      n[        R                  " X5        U R                  X5        g rD   )r"   rE   rF   r   rG   rH   rI   s      r   rG   "_DehintingT2Decompiler.op_callsubr   s@    t004t~~EF$$T1%r   c                     U R                   U R                  S   U R                  -      n[        R                  " X5        U R                  X5        g rD   )r#   rE   rM   r   rN   rH   rI   s      r   rN   #_DehintingT2Decompiler.op_callgsubr   sB     1 1" 5 GH%%d2%r   c                 R    [         R                  " X5        U R                  U5        g r   )r   op_hstemprocessHintrU   s     r   r   _DehintingT2Decompiler.op_hstem       !!$.r   c                 R    [         R                  " X5        U R                  U5        g r   )r   op_vstemr   rU   s     r   r   _DehintingT2Decompiler.op_vstem   r   r   c                 R    [         R                  " X5        U R                  U5        g r   )r   
op_hstemhmr   rU   s     r   r   !_DehintingT2Decompiler.op_hstemhm       ##D0r   c                 R    [         R                  " X5        U R                  U5        g r   )r   
op_vstemhmr   rU   s     r   r   !_DehintingT2Decompiler.op_vstemhm   r   r   c                 T    [         R                  " X5      nU R                  U5        U$ r   )r   r   processHintmaskr!   r<   rvs      r   r   "_DehintingT2Decompiler.op_hintmask   %    ))$6U#	r   c                 T    [         R                  " X5      nU R                  U5        U$ r   )r   r   r   r   s      r   r   "_DehintingT2Decompiler.op_cntrmask   r   r   c                 B   U R                   S   nUR                  nSUl        UR                  S:w  ac  [	        UR
                  US-
  5       H.  n[        UR                  U   [        5      (       d  M'  SUl          O   SUl	        US-   Ul
        SUl        US-   Ul        g )Nr(   Tr)   r*   r   )r4   r   r   r   r   r   r   r7   r   r   r   )r!   r<   rR   r   r   s        r   r   &_DehintingT2Decompiler.processHintmask   s    r"		!<<15--uqy9bjjmS11#$EL : "&"'!) "QYr   c                 `    U R                   S   nUR                  nSUl        Xl        Xl        g )Nr(   T)r4   r   r   r   r   )r!   r<   rR   r   s       r   r   "_DehintingT2Decompiler.processHint   s-    r"		"r   c                 H   U R                   S   nUR                  nUR                  nUR                  S:w  aQ  [        UR                  US-
  5       H.  n[        UR                  U   [        5      (       d  M'  SUl          O   Xl        UR                  S:w  a:  UR                  (       a(  SUl        UR                  S:X  a  Xl	        O6US-
  Ul	        O+UR                  S:X  a  UR                  R                  U5        [        UR                  UR                  5      Ul        g )Nr(   r)   r*   Tr   )r4   r   r   r   r   r   r7   r   r   r   r   rX   max)r!   r<   rJ   rR   r   
subr_hintsr   s          r   rH   "_DehintingT2Decompiler.processSubr  s    r"		[[
 <<15--uqy9bjjmS11#$EL : "'<<1""!% $$)&+O&+aiEO!#OO""5)5<<):):;r   )r   r$   r   )r   r   r   r   objectr   r    r5   rG   rN   r   r   r   r   r   r   r   r   rH   r   r   r   r   r{   r{      sV     6 SW80&
&
    

'"#<r   r{   c                    U R                   n[        S[        U5      5       H  nX4   S:X  a]  [        X4S-
     [        5      (       d   eUR
                  R                  X4S-
     UR                  -   5      UR                  -
  X4S-
  '   Mh  X4   S:X  d  Mr  [        X4S-
     [        5      (       d   eUR
                  R                  X4S-
     UR                  -   5      UR                  -
  X4S-
  '   M     g )Nr*   r+   r,   )	r7   r   r   r   r:   rs   r<   	_old_bias	_new_bias)
charstringrj   gsubrspr   s        r   _cs_subset_subroutinesr   $  s    A1c!f4:aAh,,,,{{((q5EOO)CDuVA!eHT[ aAh,,,,""1U8f.>.>#>?&BRBRR !eH r   c                    U R                   nUR                  (       a/  U R                  n[        UR                  5       H
  nX#S-
  U2	 M     UR                  (       Ga
  UR                  (       a  UR
                  UR                  S   ::  d   eU R                  UR
                  S  U l        U R                  (       d  U R                  R                  S5        [        U S5      (       a  U R                  U R                  R                  :w  a[  U R                  R                  c   S5       eU R                  R                  SU R                  U R                  R                  -
  5        UR                  (       aX  SnU R                  nU[        U5      :  a;  X$   S;   a  US-   [        U5      ::  d   eX$US-   2	 M4  US-  nU[        U5      :  a  M;  [        U R                  5      (       d   eU ? g )Nr)   r   r.   widthz5CFF2 CharStrings must not have an initial width value)hintmaskcntrmaskr*   )r   r   r7   r8   r   r   rX   r3   r   r$   r   insertr   r   r   )r   r   r   r@   r   s        r   _cs_drop_hintsr   1  s   EEOO,C'C-  - ~~~??eoo9K&KKK'//0AB
!!%%i0:w'':#5#5#C#CC &&44@KJK@""))z''**<*<*J*JJ #a&jt//1uA&!a%iLFA #a&j z!!""""r   T)removeUnusedSubrsr   c          
         U R                  5        GH`  nX   nUR                  n[        5       nUR                  5        H  nUR	                  5         [        UR                  S/ 5      n[        UUUR                  UR                  R                  UR                  R                  UR                  5      nUR                  U5        UR                  Ul        M     U H  n	[        U	5        M     A/ n
[        US5      (       a#  U
R                  S UR                    5       5        OU
R#                  UR$                  5        U
 H*  nS H!  n[        X5      (       d  M  ['        XS 5        M#     M,     GMc     U(       a  [)        U 5        g g )Nr[   r\   c              3   8   #    U  H  oR                   v   M     g 7fr   )rb   .0rl   s     r   	<genexpr>remove_hints.<locals>.<genexpr>  s     ?,BZZ,s   )
BlueValues
OtherBluesFamilyBluesFamilyOtherBlues	BlueScale	BlueShiftBlueFuzz	StemSnapH	StemSnapVStdHWStdVW	ForceBoldLanguageGroupExpansionFactor)keysr^   r	   r_   r`   ra   r$   r{   r#   r   r   r5   r   r   r3   extendr\   rX   rb   r1   remove_unused_subroutines)rf   r   fontnamerh   rR   r   ri   rj   rk   r   	all_privsprivks                r   remove_hintsr   Y  sC   HHJ}  eAKKMAIIw3E/		''		''		J q! &&AG  J:&  	4##?$,,??T\\*D  4##DT*# U z !#& r   c                     [        U S5      (       a2  U R                  (       d   SU R                  ;   a  U R                  S	 U ?g g g )Nr[   )r3   r[   rc   )private_dicts    r   _pd_delete_empty_subrsr     sB    |W%%l.@.@l***$$W- /A%r   c                 4   U R                  5        GH~  nX   nUR                  nUR                  5        HK  n[        UR                  S/ 5      n[        XTR                  UR                  5      nUR                  U5        MM     UR                  /n[        US5      (       a#  UR                  S UR                   5       5        O[[        UR                  S5      (       a@  UR                  R                  (       a%  UR                  UR                  R                  5        [        W5      nU Hg  n[        US5      (       d  [        5       Ul        [#        UR                   5      Ul        [%        U5      Ul        [%        UR                   5      Ul        Mi     UR                  5        H0  n[        UR                  SS 5      n[+        XEUR                  5        M2     U GHN  nXRR                  :X  a  [        US5      (       d2  [        UR                  S5      (       a  UR                  R                  nO{[        US5      (       ae  [-        UR                  5      S:X  aL  [        UR                  S   R                  S5      (       a$  UR                  S   R                  R                  nOS nOUnUR                    V	s/ s H  oR.                  U	   PM     sn	Ul        [        US5      (       a  U?[        US5      (       a  U?UR.                   H  n
[+        XUR                  5        M     GMQ     [        US5      (       a)  UR                   H  n[5        UR                  5        M     O[5        UR                  5        U H	  nU?U?U?M     GM     g s  sn	f )	Nr[   r\   c              3      #    U  HU  n[        UR                  S 5      (       d  M   UR                  R                  (       d  M=  UR                  R                  v   MW     g7f)r[   N)r3   rb   r[   r   s     r   r   ,remove_unused_subroutines.<locals>.<genexpr>  sC      &B2::w/ !46JJ4D4D !

  &s   AAArs   r*   r   fileoffsets)r   r^   r_   ra   r$   rp   r#   r5   rd   r3   r   r\   rb   r[   rX   r	   rs   r   r   r   r   r   r   itemsr   r   r   )rf   r   rh   rR   ri   rj   rk   	all_subrslocal_subrsr   rJ   rl   s               r   r   r     s   HHJ} AAIIw3E-e]]AIINJq! 
 %%&	4## ,, 
 T\\7++0B0BT\\//0E
 E5'**!e$U[[1EK*51EO*5;;7EO  AAIIw5E"1T-=-=> 
 E(((tY//GDLL'4R4R"&,,"4"4KD),,DLL)Q.Q 7 7AA #',,q/"9"9"?"?K"&K#38;;?;a;;q>;?EKuf%%Jui((M&t$:J:JK $- 4 4##ll&rzz2 # #4<<0 EU_eo M j @s   =NN)fontTools.misc.psCharStringsr   r   r   r   	Exceptionr   r   rn   rp   r{   r   r   boolr   r   r   r   r   r   <module>r      sz    	 	N?$6 N?b:5- 5 S<- S<l
%P 48 ?'D ?'DH>r   