
    ]MhC/                     v   d dl mZmZmZmZmZ d dlmZ ddlm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZ d dlZd dlmZ d dlmZ d dlZ ej        e          ZdZ  ej!         ed	ed
g                    Z" eded
g          Z# ej!        e#          Z$ ej!        d          Z%dZ&d'                    e&(                                          Z& ej!        e&          Z) ej!         ededg                    Z* G d de+          Z, G d de+          Z- G d de.          Z/ G d de	          Z0d Z1ddZ2dS )    )bytechrbyteord	bytesjointobytestostr)eexec   )PSOperatorsps_StandardEncodingps_array
ps_booleanps_dict
ps_integer
ps_literalps_markps_nameps_operatorps_procedureps_procmarkps_real	ps_stringN)Callable)
whitespaces	   ()<>[]{}%   [s   ]*s   [^][(){}<>/%s   %[^
]*sf   
	\(
		(
			(
				[^()]*   \   [()]
			)
			|
			(
				[^()]*  \(   [^()]*  \)
			)
		)*
		[^()]*
	\)
    s   <[s   0-9A-Fa-f]*>c                       e Zd ZdS )PSTokenErrorN__name__
__module____qualname__ r   T/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/fontTools/misc/psLib.pyr   r   7           Dr   r   c                       e Zd ZdS )PSErrorNr   r"   r   r#   r&   r&   ;   r$   r   r&   c                       e Zd ZddZddZd Zeeej	        e
j	        ej	        ej	        fdZej	        fdZd	 Zd
 ZdS )PSTokenizerr   asciic                     t          |          }|| _        t          |          | _        d| _        d| _        || _        d S )Nr   F)r   buflenposclosedencoding)selfr+   r/   s      r#   __init__zPSTokenizer.__init__@   s:    clls88 r   c                     | j         rt          d          ||dk     r| j        }nt          | j        |z   | j                  }| j        | j        |         }|| _        |S )zRead at most 'n' bytes from the buffer, or less if the read
        hits EOF before obtaining 'n' bytes.
        If 'n' is negative or omitted, read all data until EOF is reached.
        zI/O operation on closed fileNr   )r.   
ValueErrorr,   minr-   r+   )r0   nnewposrs       r#   readzPSTokenizer.readI   si    
 ; 	=;<<<9AXFFAtx00FHTX&'r   c                 .    | j         sd| _         | `| `d S d S )NT)r.   r+   r-   r0   s    r#   closezPSTokenizer.closeX   s*    { 	#DK$(((	# 	#r   c                    |                                   | j        | j        k    rdS | j        }| j        }t	          t          ||                             }	|	|v r|	dv rd}
|	}n6|	dk    r/d}
 |||                                          \  }}|||         }n|	dk    rDd}
 |||          }|t          d|z            |                                \  }}|||         }n|	d	k    rDd
}
 |||          }|t          d|z            |                                \  }}|||         }nmt          d|z            |	dk    rd}
 |||dz             }nd}
 |||          }|t          d|z            |                                \  }}|||         }| ||          z   | _        t          || j	                  }|
|fS )N)NNs   {}[]
do_special   %
do_comment   (	do_stringzbad string at character %d   <do_hexstringzbad hexstring at character %dzbad token at character %d   /
do_literalr	    r/   )
	skipwhiter-   r,   r+   r   r   spanr   r   r/   )r0   r,   
ps_specialstringmatchhexstringmatchcommentmatchendmatchr-   r+   char	tokentypetoken_nextposms                  r#   getnexttokenzPSTokenizer.getnexttoken]   s    	8tx:hhws3x(()):w(	(	)\#s3388::
7CK('	KS))9&'Cc'IJJJVVXX
7CK(*	"N3,,9&'F'LMMMVVXX
7CK("#>#DEEEt||(	HS#'**	HS#&&y"#>#DEEEJAwG$EU#edm444%r   c                 j     || j         | j                                                  \  }}|| _        d S N)r+   r-   rJ   )r0   
whitematchrS   rT   s       r#   rI   zPSTokenizer.skipwhite   s2    Z$(3388::
7r   c                     | j         dz   | _         | j        | j         d          | _        t          j        | j        d          \  | _        }t          | j                  | _        d| _         d S )Nr	   iq     )r-   r+   dirtybufr   decryptr,   )r0   Rs     r#   
starteexeczPSTokenizer.starteexec   sV    8a<,mDM599!tx==r   c                 F    t          | d          sd S | j        | _        | `d S )Nr\   )hasattrr\   r+   r;   s    r#   	stopeexeczPSTokenizer.stopeexec   s+    tZ(( 	F=MMMr   N)r   r)   )r2   )r   r    r!   r1   r9   r<   r,   rK   stringREmatchhexstringRE	commentREendofthingRErV   skipwhiteRErI   r_   rb   r"   r   r#   r(   r(   ?   s        ! ! ! !   # # # N"(_#5  5  5  5 n $/#4          r   r(   c                       e Zd ZddZd Zd ZefdZd Zd Z	d Z
eeeeefd	Zd
 Zd Zd Zd Zd Zd Zd Zd Zd ZdS )PSInterpreterr)   c                     i }i }|| _         ||g| _        g | _        d| _        t	                      | _        |                                  d S )Nr   )r/   	dictstackstack	proclevelr   procmarkfillsystemdict)r0   r/   
systemdictuserdicts       r#   r1   zPSInterpreter.__init__   sP    
 $h/
#r   c                 Z   | j         d         }t                      x|d<   x|d<   | _        t          d| j                  |d<   t          d          |d<   t          d          |d<   t          t                    |d<   t          i           |d	<   | 	                    || j
                   d S )
Nr   [mark]r	   truefalseStandardEncodingFontDirectory)rl   r   ru   r   do_makearrayr   r   r   r   suckoperators	__class__)r0   rq   s     r#   rp   zPSInterpreter.fillsystemdict   s    ^A&
;B99D
3D*V,ty%c4+<==
3']]
6(mm
7)12E)F)F
%&&-bkk
?#:t~66666r   c                 
   t          |          D ]R}t          | |          }t          |t                    r+|d d         dk    r|dd          }t	          ||          ||<   S|j        D ]}|                     ||           d S )N   ps_)dirgetattr
isinstancer   r   	__bases__r|   )r0   rq   klassnameattr	baseclasss         r#   r|   zPSInterpreter.suckoperators   s    JJ 	; 	;D4&&D$)) ;d2A2h%.?.?ABBx#.tT#:#:
4  	6 	6Iz95555	6 	6r   c           	         t          || j                  x}| _        |j        }| j        }| j        }	 	  |            \  }}|sn3|r || |          }	 |	|          }
n ||          }
|
 ||
           C|                                 d | _        d S #  | j        nt                              d| j        j	        | j        j
        dz
  | j        j
                 | j        j	        | j        j
        | j        j
        dz                        xY w)Nr	   z/ps error:
- - - - - - -
%s
>>>
%s
- - - - - - -2   )r(   r/   	tokenizerrV   do_tokenhandle_objectr<   logdebugr+   r-   )r0   datar   r   rV   r   r   rQ   rR   handlerobjects              r#   	interpretzPSInterpreter.interpret   s9   %0t}%E%EE	DN -=*	
*#/<>> 	5  -%gdI66G$WU^^FF%Xe__F%!M&)))
* OO!DNNN	~)		$ N&t~'9B'>AS'STN&t~'9DN<NQS<S'ST	 	 	 s   AB A8Dc                 X   | j         s|j        s|j        dk    s{|j        dk    r|                     |j                  }|j        r|                     |           d S |j        dk    r|                     |           d S |                                 d S |                     |           d S )Nproceduretypeoperatortype)rn   literaltyperesolve_namevaluepushcall_procedurefunctionr0   r   s     r#   r   zPSInterpreter.handle_object   s     	&. 	FK?4R4R{n,,**6<88~ &		&!!!!!;/11''/////OO%%%%%IIfr   c                 >    | j         }|j        D ]} ||           d S rX   )r   r   )r0   procr   items       r#   r   zPSInterpreter.call_procedure   s8    *J 	  	 DM$	  	 r   c                     | j         }t          t          |          dz
  dd          D ]}|||         v r||         |         c S t          dt	          |          z             )Nr	   r2   zname error: )rl   ranger,   r&   str)r0   r   rl   is       r#   r   zPSInterpreter.resolve_name   sq    N	s9~~)2r22 	* 	*Ay|## |D)))) $ns4yy0111r   c                    	  ||          } ||          S # t           t          f$ r 	  ||          } ||          cY S # t           t          f$ r d|v ru|                    d          }	  ||d |                   }	 |||dz   d          |	          } ||          cY cY S # t           t          f$ r  ||          cY cY cY S w xY w ||          cY cY S w xY ww xY w)N#r	   )r4   OverflowErrorfind)
r0   rR   intfloatr   r   r   numhashposbases
             r#   r   zPSInterpreter.do_token   s\   	##e**C& :c??"% M* 	$ 	$ 	$$eEll ws||### . * * *%<<#jjooG/"s5'?33!c%!"6==  *z#..... '6 . . .&wu~~-------.
 #75>>)))))*	$s[    C AC *C-*B&C"C &C	CC C		CC CC c                     d S rX   r"   r0   rR   s     r#   r@   zPSInterpreter.do_comment  s    r   c                 0    t          |dd                    S )Nr	   )r   r   s     r#   rF   zPSInterpreter.do_literal!  s    %)$$$r   c                 0    t          |dd                   S )Nr	   r2   )r   r   s     r#   rB   zPSInterpreter.do_string$  s    qt%%%r   c                    d                     |dd                                                   }t          |          dz  r|dz   }g }t          dt          |          d          D ]=}|                    t          t          |||dz            d                               >d                     |          }t          |          S )NrG   r	   r2      0r      )joinsplitr,   r   appendchrr   r   )r0   rR   hexStrcleanstrr   s        r#   rD   zPSInterpreter.do_hexstring'  s    qt**,,--v;;? 	"c\Fq#f++q)) 	= 	=AOOCF1q1u9$5r : :;;<<<<778$$"""r   c                 ~   |dk    r| j         dz   | _         | j        S |dk    rkg }	 |                                 }|| j        k    rn|                    |           6| j         dz
  | _         |                                 t          |          S |dk    r| j        S |dk    rt          d          S t          d          )N{r	   }rt   rv   zhuh?)	rn   ro   popr   reverser   ru   r   r   )r0   rR   r   	topobjects       r#   r>   zPSInterpreter.do_special1  s    C<<!^a/DN= c\\D' HHJJ	--I&&&	'
 "^a/DNLLNNN%%%c\\9c\\3<<v&&&r   c                 :    | j                             |           d S rX   )rm   r   r   s     r#   r   zPSInterpreter.pushF  s    
&!!!!!r   c                     | j         }|st          d          |d         }|r0|j        |vr't          dt          |          d|j                  |d= |S )Nzstack underflowr2   ztypecheck, expected z, found )rm   r&   r   repr)r0   typesrm   r   s       r#   r   zPSInterpreter.popI  sv    
 	-+,,,r 	{%''g:>u++++v{{S   "Ir   c                     g }	 |                                  }|| j        k    rn|                    |           6|                                 |                     t          |                     d S rX   )r   ru   r   r   r   r   )r0   arrayr   s      r#   r{   zPSInterpreter.do_makearrayV  sm    	$

IDI%%LL###		$
 			(5//"""""r   c                     | ` | `dS )zRemove circular references.N)rm   rl   r;   s    r#   r<   zPSInterpreter.close`  s    JNNNr   Nr)   )r   r    r!   r1   rp   r|   r   r   r   r   r   r   r   r   r   r   r   r@   rF   rB   rD   r>   r   r   r{   r<   r"   r   r#   rj   rj      s9          7 7 76 6 6 '.    B       
2 2 2 # # # #>  % % %& & &# # #' ' '*" " "  # # #    r   rj   c                    t          | j                  }|t          k    r4i }| j                                        D ]\  }}t	          |          ||<   n|t
          k    rtd gt          | j                  z  }t          t          | j                            D ]}t	          | j        |                   ||<    | j         dk    rt          |          }n| j        }|S )Nr   )	r   r   dictitemsunpack_itemlistr,   r   tuple)r   tpnewitemkeyr   r   s         r#   r   r   f  s    	dj		B	Tzz***,, 	. 	.JC&u--GCLL	.	t&3tz??*s4:'' 	4 	4A$TZ]33GAJJ9''GnnG*Nr   r)   c                 b   t          j        d|           }|r*|                    d          }|                                }nd }t	          |          }|                    d           |                    |            |j        d         d         j        }||v r	||         }nkt          |	                                          }t          |          dk    r|                    d           |                                 ||d                  }|                                 t          |          S )Ns    /FontName\s+/([^ \t\n\r]+)\s+defr	   rH   sC   /Helvetica 4 dict dup /Encoding StandardEncoding put definefont popr   rz   	Helvetica)researchgroupdecoderj   r   rl   r   r   keysr,   removesortr<   r   )r   r/   rU   fontNameinterpreterfontdirrawfont	fontNamess           r#   suckfontr   w  s(   
	6==A 771::??$$222KN   $#A&7=G7(# ((	y>>A[))))A,'wr   r   )3fontTools.misc.textToolsr   r   r   r   r   fontTools.miscr   psOperatorsr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   collections.abcr   stringr   logging	getLoggerr   r   rK   compilerh   endofthingPatrg   rf   	stringPatr   r   rc   re   	Exceptionr   r&   r   r(   rj   r   r   r"   r   r#   <module>r      s   P P P P P P P P P P P P P P                                             
			 $ $ $ $ $ $        g!!
bjD*e#<==>>	?J>??rz-((BJ|$$		 HHY__&&''	2:i  bjE:#GHHII	 	 	 	 	9 	 	 		 	 	 	 	i 	 	 	d d d d d& d d dN} } } } }K } } }@  "           r   