o
    a
2                     @   sp  d ddddZ G dd deZG dd deZG d	d
 d
eZG dd deZG dd deZG dd deZg dZg dZ	g dZ
dd Zdd Zdd ZG dd deZG dd deZG dd deZG d d! d!eZG d"d# d#eZG d$d% d%eZG d&d' d'eZG d(d) d)eZG d*d+ d+eZG d,d- d-eZG d.d/ d/eZd0Zd1d2lmZ eeeeZd3S )4 readonlyZexecuteonlyZnoaccess)             c                   @   s(   e Zd ZdZdZdZdd Zdd ZdS )	ps_objectr   r   Nc                 C   s    || _ | jjdd  d | _d S Nr   typevalue	__class____name__r	   )selfr    r   </usr/lib/python3/dist-packages/fontTools/misc/psOperators.py__init__
      zps_object.__init__c                 C   s   d| j jdd  t| jf S )Nz<%s %s>r   )r   r   reprr   r   r   r   r   __repr__   s   zps_object.__repr__)r   
__module____qualname__literalaccessr   r   r   r   r   r   r   r      s    r   c                   @       e Zd ZdZdd Zdd ZdS )ps_operatorr   c                 C   s&   || _ || _| jjdd  d | _d S r   )namefunctionr   r   r	   )r   r   r   r   r   r   r      s   zps_operator.__init__c                 C   s
   d| j  S )Nz<operator %s>)r   r   r   r   r   r         
zps_operator.__repr__N)r   r   r   r   r   r   r   r   r   r   r      s    r   c                   @   r   )ps_procedurer   c                 C      dS )Nz<procedure>r   r   r   r   r   r         zps_procedure.__repr__c                 C   sN   d}t t| jD ]}|r|d t| j|  }q	|t| j|  }q	|d S )N{ })rangelenr   str)r   psstringir   r   r   __str__!   s   zps_procedure.__str__N)r   r   r   r   r   r*   r   r   r   r   r      s    r   c                   @   s   e Zd ZdZdd ZdS )ps_namer   c                 C   s   | j rd| j S | jS N/)r   r   r   r   r   r   r*   ,   s   
zps_name.__str__N)r   r   r   r   r*   r   r   r   r   r+   *   s    r+   c                   @      e Zd Zdd ZdS )
ps_literalc                 C   s
   d| j  S r,   r   r   r   r   r   r*   3   r   zps_literal.__str__Nr   r   r   r*   r   r   r   r   r/   2       r/   c                   @      e Zd Zdd Zdd ZdS )ps_arrayc                 C   sj   d}t t| jD ]'}| j| }t|j }|rd| }|r(|d t| | }q	|t| | }q	|d S )N[r#   ])r%   r&   r   _accessstringsr   r'   )r   r(   r)   itemr   r   r   r   r*   7   s   

zps_array.__str__c                 C   r    )Nz<array>r   r   r   r   r   r   C   r!   zps_array.__repr__Nr   r   r   r*   r   r   r   r   r   r4   6   s    r4   )
ZFontInfoZFontNameEncodingZ	PaintTypeZFontTypeZ
FontMatrixZFontBBoxZUniqueIDZMetricsZStrokeWidth)	versionZNoticeZFullNameZ
FamilyNameZWeightZItalicAngleZisFixedPitchZUnderlinePositionZUnderlineThickness)ZPrivateCharStringsZFIDc                 C   st   d}t |j }|r|d }| dkr|d| t|jf  }|S | dkr+|t|| }|S |dt| t||f  }|S )Nr   r#   r<   z/%s %s def
r:   /%s %s %sdef
)r7   r   _type1_CharString_reprr   _type1_Encoding_reprr'   )keyr   r(   r   r   r   r   _type1_item_repre   s   
rA   c                 C   sF   | j } d}tdD ]}| | j }|dkr|d||f  }q	|| d S )Nz</Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
   .notdefzdup %d /%s put
zdef
)r   r%   )encodingr   r(   r)   r   r   r   r   r?   r   s   
r?   c                 C   s   t |  }dS )NZxxx)sorteditems)ZcharstringsrF   r   r   r   r>   {   s   r>   c                   @   r3   )ps_fontc              	   C   s   dt | j }tD ]}z| j| }W n	 ty   Y q	w |t|| }q	t| j }|D ]\}}|tt vr>|t|| }q-|d }tD ]}z| j| }W n	 tyW   Y qEw |t|| }qE|d d d d S )N%d dict dup begin
z&currentdict end
currentfile eexec
dup z@dup/FontName get exch definefont pop
mark currentfile closefile
a  0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
Zcleartomark
)r&   r   _type1_pre_eexec_orderKeyErrorrA   rE   rF   _type1_post_eexec_order)r   r(   r@   r   rF   r   r   r   r*      s8   zps_font.__str__c                 C   r    )Nz<font>r   r   r   r   r   r      r!   zps_font.__repr__Nr9   r   r   r   r   rG      s    rG   c                   @   s   e Zd ZdS )ps_fileN)r   r   r   r   r   r   r   rM      s    rM   c                   @   r3   )ps_dictc                 C   sb   dt | j }t| j }|D ]\}}t|j }|r|d }|dt|t||f  }q|d S )NrH   r#   r=   zend )r&   r   rE   rF   r7   r   r'   )r   r(   rF   r@   r   r   r   r   r   r*      s   
zps_dict.__str__c                 C   r    )Nz<dict>r   r   r   r   r   r      r!   zps_dict.__repr__Nr9   r   r   r   r   rN      s    	rN   c                   @   r.   )ps_markc                 C       d| _ | jjdd  d | _d S )Nmarkr   r	   r
   r   r   r   r   r      r   zps_mark.__init__Nr   r   r   r   r   r   r   r   rO      r2   rO   c                   @   r.   )ps_procmarkc                 C   rP   )NZprocmarkr   r	   r
   r   r   r   r   r      r   zps_procmark.__init__NrR   r   r   r   r   rS      r2   rS   c                   @   r.   )ps_nullc                 C   s   | j jdd  d | _d S r   )r   r   r	   r   r   r   r   r         zps_null.__init__NrR   r   r   r   r   rT      r2   rT   c                   @   r.   )
ps_booleanc                 C   s   | j rdS dS )NtrueZfalser0   r   r   r   r   r*      s   zps_boolean.__str__Nr1   r   r   r   r   rV      r2   rV   c                   @   r.   )	ps_stringc                 C   s   dt | jdd  S )Nz(%s)r   r   r   r   r   r   r   r*      s   zps_string.__str__Nr1   r   r   r   r   rX      r2   rX   c                   @   r.   )
ps_integerc                 C   
   t | jS NrZ   r   r   r   r   r*      r   zps_integer.__str__Nr1   r   r   r   r   r[      r2   r[   c                   @   r.   )ps_realc                 C   r\   r]   rZ   r   r   r   r   r*      r   zps_real.__str__Nr1   r   r   r   r   r^      r2   r^   c                   @   s  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zeefd-d.Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Z d9d: Z!d;d< Z"d=d> Z#d?d@ Z$dAdB Z%dCdD Z&dEdF Z'dGdH Z(dIdJ Z)dKdL Z*dMdN Z+dOdP Z,dQdR Z-dSdT Z.dUdV Z/dWdX Z0dYdZ Z1d[d\ Z2d]d^ Z3d_d` Z4dadb Z5dcS )dPSOperatorsc                 C   s$   |   }|   }|| jd |j< d S NrY   )pop	dictstackr   )r   objr   r   r   r   ps_def   s   zPSOperators.ps_defc                 C   s"   |  d}| | | | d S Nproceduretype)ra   	proc_bindpushr   procr   r   r   ps_bind   s   

zPSOperators.ps_bindc                 C   sn   t t|jD ]-}|j| }|jdkr| | q|js4z| |j}W n   Y q|jdkr4||j|< qd S )Nrf   Zoperatortype)r%   r&   r   r	   rg   r   resolve_name)r   rj   r)   r8   rc   r   r   r   rg      s   



zPSOperators.proc_bindc                 C   s>   t | jdk rtd|  }|  }| | | | d S )Nr   stack underflow)r&   stackRuntimeErrorra   rh   )r   obj1obj2r   r   r   ps_exch   s   
zPSOperators.ps_exchc                 C   s"   | j std| | j d  d S )Nrm   rY   )rn   ro   rh   r   r   r   r   ps_dup   s   zPSOperators.ps_dupc                 C   s.   |   }|jdkr| | d S | | d S re   )ra   r	   call_procedureZhandle_objectr   rc   r   r   r   ps_exec   s   
zPSOperators.ps_execc                 C   s   |  tt| j d S r]   )rh   r[   r&   rn   r   r   r   r   ps_count      zPSOperators.ps_countc                 C   s*   |   }|   }| t|j|jk d S r]   ra   rh   rV   r   r   Zany1Zany2r   r   r   ps_eq      zPSOperators.ps_eqc                 C   s*   |   }|   }| t|j|jk d S r]   ry   rz   r   r   r   ps_ne  r|   zPSOperators.ps_nec                 C   s   |   }d|_| | d S Nr   )ra   r   rh   ru   r   r   r   ps_cvx  s   zPSOperators.ps_cvxc                 C   s:   t dtdtdt dtdtdg}| t| d S )Ng      ?r   )r^   r[   rh   r4   )r   Zmatrixr   r   r   	ps_matrix  s   (zPSOperators.ps_matrixc                 C   s"   |  dj}| td|  d S )Nintegertype )ra   r   rh   rX   )r   numr   r   r   rX     s   zPSOperators.ps_stringc                 C   s   |   }| t|j d S r]   )ra   rh   rX   r	   ru   r   r   r   ps_type  s   zPSOperators.ps_typec                 C   sd   |   }|   }|j}tt| jd ddD ]}|| j| v r(|| j| |<  nq|| jd |< d S )Nr   rY   )ra   r   r%   r&   rb   )r   r   r@   r   r)   r   r   r   ps_store  s   zPSOperators.ps_storec                 C   s   |   }| td d S r~   )ra   rh   rV   r   r   r   r   r   ps_where#  s   zPSOperators.ps_wherec                 C      |  t| jd  d S r~   rh   rN   rb   r   r   r   r   ps_systemdict(  rx   zPSOperators.ps_systemdictc                 C   r   Nr   r   r   r   r   r   ps_userdict+  rx   zPSOperators.ps_userdictc                 C   r   r`   r   r   r   r   r   ps_currentdict.  rx   zPSOperators.ps_currentdictc                 C   s   |  t| j d S r]   )rh   rM   Z	tokenizerr   r   r   r   ps_currentfile1  s   zPSOperators.ps_currentfilec                 C   s   |  dj}|  d S Nfiletype)ra   r   Z
starteexecr   fr   r   r   ps_eexec4  s   zPSOperators.ps_eexecc                 C   s    |  dj}|  |  d S r   )ra   r   Z	skipwhiteZ	stopeexecr   r   r   r   ps_closefile8  s   zPSOperators.ps_closefilec                 C   s,   |   }|| jkr|   }|| jks	d S d S r]   )ra   rQ   ru   r   r   r   ps_cleartomark=  s   
zPSOperators.ps_cleartomarkc                 C   sh   |  d}|j}|  d}|jjd |j_|j||}||_| | | |||||k d S )N
stringtyper   r   )ra   r   posreadrh   )r   rV   r&   sZoldstrr   newstrr   r   r   ps_readstringB  s   


zPSOperators.ps_readstringc                 C   s.   |   }|  dd}| t|j|jv  d S )Ndicttypefonttypery   )r   r@   dr   r   r   ps_knownP  s   zPSOperators.ps_knownc                 C   s(   |  d}|  djr| | d S d S Nrf   booleantypera   r   rt   ri   r   r   r   ps_ifU  s   
zPSOperators.ps_ifc                 C   s<   |  d}|  d}|  djr| | d S | | d S r   r   )r   Zproc2Zproc1r   r   r   	ps_ifelseZ  s
   

zPSOperators.ps_ifelsec                 C   &   |   }|jdk rd|_| | d S r   ra   r   rh   ru   r   r   r   ps_readonlyb     
zPSOperators.ps_readonlyc                 C   r   )Nr   r   ru   r   r   r   ps_executeonlyh  r   zPSOperators.ps_executeonlyc                 C   r   )Nr   r   ru   r   r   r   ps_noaccessn  r   zPSOperators.ps_noaccessc                 C   sB   |  dd}|jdkr| t|j  d S | t|j  d S )Nr   r   )ra   r	   rh   rV   r   r[   ru   r   r   r   ps_nott  s   
zPSOperators.ps_notc                 C   s   |  d}td|j d S )Nr   zPS output --->)ra   printr   )r   r'   r   r   r   ps_print{  s   
zPSOperators.ps_printc                 C   s   |  d}|  d}t|j}|jd | |jkr3| t|j|d   | | | td d S | | | td d S )Nr   r   r   )ra   r&   r   rh   rX   rV   )r   seekr   Zseeklenr   r   r   ps_anchorsearch  s   




zPSOperators.ps_anchorsearchc                 C   s(   |  d}td g|j }| | d S Nr   )ra   r4   r   rh   )r   r   arrayr   r   r   r4     s   
zPSOperators.ps_arrayc                 C   sB   |  d}tt|jd ddD ]	}|   |j|< q| | d S )N	arraytyper   rY   )ra   r%   r&   r   rh   )r   r   r)   r   r   r   	ps_astore  s   
zPSOperators.ps_astorec                 C   s   |   }| | |j d S r]   )ra   rh   rl   r   r   r   r   r   ps_load  s   zPSOperators.ps_loadc                 C   s   |   }|   }|  dddd}|j}|dks|dkr#||j|j< d S |dkr/||j|j< d S |dkrN|j}|jd | t|j |j|d d   |_d S d S )Nr   r   r   rf   r   )ra   r	   r   chr)r   rp   rq   obj3tpindexr   r   r   ps_put  s   0zPSOperators.ps_putc                 C   s   |   }|jdkr
	 |  ddddd}|j}|dv r%| |j|j  d S |dv r4| |j|j  d S |dkrG| tt|j|j  d S J d
)Nr:   r   r   r   rf   r   )r   rf   )r   r   Fzshouldn't get here)ra   r   r	   rh   r[   ord)r   rp   rq   r   r   r   r   ps_get  s   
zPSOperators.ps_getc                 C   s   |  d}|  d}|  dd}|j}|dkr*| t|j|j|j|j   d S |dkrA| t|j|j|j|j   d S d S )Nr   r   r   )ra   r	   rh   r4   r   rX   )r   rp   rq   r   r   r   r   r   ps_getinterval  s   

&&zPSOperators.ps_getintervalc                 C   s   |  dd}|  d}|  dd}|j}|dkr)|j|j|j|jt|j < d S |dkrN|jd |j }||j }||j|jt|j d   }||_d S d S )Nr   r   r   )ra   r	   r   r&   )r   rp   rq   r   r   r   r   r   r   ps_putinterval  s   
"

zPSOperators.ps_putintervalc                 C   s   |  t| dj d S )Nr   )rh   r+   ra   r   r   r   r   r   ps_cvn  rU   zPSOperators.ps_cvnc                 C   s4   |  dj}|dk rtd| | jd|   d S )Nr   r   zindex may not be negativerY   )ra   r   ro   rh   rn   )r   nr   r   r   ps_index  s   zPSOperators.ps_indexc                 C   s   |  d}|  ddj}|  ddj}|  ddj}	 |dkr&||kr%d S n||k r,d S t|tdkr<| t| n| t| | | || }q)Nrf   r   Zrealtyper   r   g        )ra   r   r	   rh   r^   r[   rt   )r   rj   limitZ	incrementr)   r   r   r   ps_for  s"   

zPSOperators.ps_forc                 C   s   |  d}|  ddd}|j}|dkr%|jD ]}| | | | qd S |dkr?|jD ]}| tt| | | q,d S |dkr^|j D ]\}}| t| | | | | qHd S d S )Nrf   r   r   r   )	ra   r	   r   rh   rt   r[   r   rF   r+   )r   rj   rc   r   r8   r@   r   r   r   r   	ps_forall  s(   




zPSOperators.ps_forallc                 C   s@   |  d}|   }t|j}|| jd d j|j< | | d S )Nr   r   FontDirectory)ra   rG   r   rb   rh   )r   fontr   r   r   r   ps_definefont  s
   

zPSOperators.ps_definefontc                 C   s,   |   }| jd d j|j }| | d S )Nr   r   )ra   rb   r   rh   )r   r   r   r   r   r   ps_findfont  s   zPSOperators.ps_findfontc                 C   s   |    d S r]   )ra   r   r   r   r   ps_pop  s   zPSOperators.ps_popc                 C   s   |  d | ti  d S r   )ra   rh   rN   r   r   r   r   rN   
  s   
zPSOperators.ps_dictc                 C   s   | j | dj d S )Nr   )rb   appendra   r   r   r   r   r   ps_begin  rx   zPSOperators.ps_beginc                 C   s"   t | jdkr| jd= d S td)Nr   rY   zdictstack underflow)r&   rb   ro   r   r   r   r   ps_end  s   zPSOperators.ps_endN)6r   r   r   rd   rk   rg   rr   rs   rv   rw   r{   r}   r   r   rX   r   r   r   r   r   r   r   r   r   r   rV   r&   r   r   r   r   r   r   r   r   r   r   r4   r   r   r   r   r   r   r   r   r   r   r   r   r   rN   r   r   r   r   r   r   r_      sh    


r_   rC   r   )StandardEncodingN)r7   objectr   r   r   r+   r/   r4   rJ   Z_type1_fontinfo_orderrL   rA   r?   r>   rG   rM   rN   rO   rS   rT   rV   rX   r[   r^   r_   ZnotdefZ$fontTools.encodings.StandardEncodingr   listmapZps_StandardEncodingr   r   r   r   <module>   s:    	  M