B
    Jd
2              
   @   s  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ddddddddddg
Zdddddd d!d"d#g	Z	d$d%d&gZ
d'd( Zd)d* Zd+d, ZG d-d. d.eZG d/d0 d0eZG d1d2 d2eZG d3d4 d4eZG d5d6 d6eZG d7d8 d8eZG d9d: d:eZG d;d< d<eZG d=d> d>eZG d?d@ d@eZG dAdB dBeZdCZdDdElmZ eeeeZdFS )G 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   L/var/www/html/venv/lib/python3.7/site-packages/fontTools/misc/psOperators.py__init__
   s    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               @   s    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 )Nr   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      s    zps_operator.__repr__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d ZdS )ps_procedurer   c             C   s   dS )Nz<procedure>r   )r   r   r   r   r      s    zps_procedure.__repr__c             C   sR   d}xDt t| jD ]2}|r4|d t| j|  }q|t| j|  }qW |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 d 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               @   s   e Zd Zdd ZdS )
ps_literalc             C   s
   d| j  S )Nr$   )r	   )r   r   r   r   r"   3   s    zps_literal.__str__N)r   r   r   r"   r   r   r   r   r%   2   s   r%   c               @   s   e Zd Zdd Zdd ZdS )ps_arrayc             C   sn   d}x`t t| jD ]N}| j| }t|j }|r8d| }|rR|d t| | }q|t| | }qW |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   s   dS )Nz<array>r   )r   r   r   r   r   C   s    zps_array.__repr__N)r   r   r   r"   r   r   r   r   r   r&   6   s   r&   ZFontInfoZFontNameEncodingZ	PaintTypeZFontTypeZ
FontMatrixZFontBBoxZUniqueIDZMetricsZStrokeWidthversionZNoticeZFullNameZ
FamilyNameZWeightZItalicAngleZisFixedPitchZUnderlinePositionZUnderlineThicknessZPrivateCharStringsZFIDc             C   sp   d}t |j }|r|d }| dkr:|d| t|jf  }n2| dkrR|t|| }n|dt| t||f  }|S )Nr   r   r-   z/%s %s def
r+   z/%s %s %sdef
)r)   r   _type1_CharString_reprr	   _type1_Encoding_reprr   )keyr	   r    r   r   r   r   _type1_item_repre   s    
r1   c             C   sJ   | j } d}x2tdD ]&}| | j }|dkr|d||f  }qW || d S )Nz</Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
   z.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charstringsr5   r   r   r   r.   {   s    r.   c               @   s   e Zd Zdd Zdd ZdS )ps_fontc          	   C   s   dt | j }x>tD ]6}y| j| }W n tk
r:   Y qX |t|| }qW t| j }x*|D ]"\}}|tt krb|t|| }qbW |d }x>tD ]6}y| j| }W n tk
r   Y qX |t|| }qW |d d d d S )Nz%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KeyErrorr1   r4   r5   _type1_post_eexec_order)r   r    r0   r	   r5   r   r   r   r"      s&    

zps_font.__str__c             C   s   dS )Nz<font>r   )r   r   r   r   r      s    zps_font.__repr__N)r   r   r   r"   r   r   r   r   r   r6      s   r6   c               @   s   e Zd ZdS )ps_fileN)r   r   r   r   r   r   r   r;      s   r;   c               @   s   e Zd Zdd Zdd ZdS )ps_dictc             C   sf   dt | j }t| j }x@|D ]8\}}t|j }|r@|d }|dt|t||f  }q"W |d S )Nz%d dict dup begin
r   z/%s %s %sdef
zend )r   r	   r4   r5   r)   r   r   )r   r    r5   r0   r	   r   r   r   r   r"      s    
zps_dict.__str__c             C   s   dS )Nz<dict>r   )r   r   r   r   r      s    zps_dict.__repr__N)r   r   r   r"   r   r   r   r   r   r<      s   	r<   c               @   s   e Zd Zdd ZdS )ps_markc             C   s    d| _ | jjdd  d | _d S )Nmarkr   r   )r	   r
   r   r   )r   r   r   r   r      s    zps_mark.__init__N)r   r   r   r   r   r   r   r   r=      s   r=   c               @   s   e Zd Zdd ZdS )ps_procmarkc             C   s    d| _ | jjdd  d | _d S )NZprocmarkr   r   )r	   r
   r   r   )r   r   r   r   r      s    zps_procmark.__init__N)r   r   r   r   r   r   r   r   r?      s   r?   c               @   s   e Zd Zdd ZdS )ps_nullc             C   s   | j jdd  d | _d S )Nr   r   )r
   r   r   )r   r   r   r   r      s    zps_null.__init__N)r   r   r   r   r   r   r   r   r@      s   r@   c               @   s   e Zd Zdd ZdS )
ps_booleanc             C   s   | j r
dS dS d S )Ntruefalse)r	   )r   r   r   r   r"      s    zps_boolean.__str__N)r   r   r   r"   r   r   r   r   rA      s   rA   c               @   s   e Zd Zdd ZdS )	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__N)r   r   r   r"   r   r   r   r   rD      s   rD   c               @   s   e Zd Zdd ZdS )
ps_integerc             C   s
   t | jS )N)r   r	   )r   r   r   r   r"      s    zps_integer.__str__N)r   r   r   r"   r   r   r   r   rF      s   rF   c               @   s   e Zd Zdd ZdS )ps_realc             C   s
   t | jS )N)r   r	   )r   r   r   r   r"      s    zps_real.__str__N)r   r   r   r"   r   r   r   r   rG      s   rG   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 )NrE   )pop	dictstackr	   )r   objr   r   r   r   ps_def   s    zPSOperators.ps_defc             C   s"   |  d}| | | | d S )Nproceduretype)rI   	proc_bindpush)r   procr   r   r   ps_bind   s    

zPSOperators.ps_bindc             C   st   xnt t|jD ]\}|j| }|jdkr4| | q|jsy| |j}W n   Y qX |jdkr||j|< qW d S )NrM   Zoperatortype)r   r   r	   r   rN   r   resolve_name)r   rP   r!   r*   rK   r   r   r   rN      s    


zPSOperators.proc_bindc             C   s>   t | jdk rtd|  }|  }| | | | d S )Nr   zstack underflow)r   stackRuntimeErrorrI   rO   )r   obj1obj2r   r   r   ps_exch   s    
zPSOperators.ps_exchc             C   s"   | j std| | j d  d S )Nzstack underflowrE   )rS   rT   rO   )r   r   r   r   ps_dup   s    zPSOperators.ps_dupc             C   s,   |   }|jdkr| | n
| | d S )NrM   )rI   r   call_procedureZhandle_object)r   rK   r   r   r   ps_exec   s    
zPSOperators.ps_execc             C   s   |  tt| j d S )N)rO   rF   r   rS   )r   r   r   r   ps_count   s    zPSOperators.ps_countc             C   s*   |   }|   }| t|j|jk d S )N)rI   rO   rA   r	   )r   any1any2r   r   r   ps_eq   s    zPSOperators.ps_eqc             C   s*   |   }|   }| t|j|jk d S )N)rI   rO   rA   r	   )r   r\   r]   r   r   r   ps_ne  s    zPSOperators.ps_nec             C   s   |   }d|_| | d S )Nr   )rI   r   rO   )r   rK   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   )rG   rF   rO   r&   )r   matrixr   r   r   	ps_matrix  s    (zPSOperators.ps_matrixc             C   s"   |  dj}| td|  d S )Nintegertype )rI   r	   rO   rD   )r   numr   r   r   rD     s    zPSOperators.ps_stringc             C   s   |   }| t|j d S )N)rI   rO   rD   r   )r   rK   r   r   r   ps_type  s    zPSOperators.ps_typec             C   sf   |   }|   }|j}x<tt| jd ddD ]"}|| j| kr.|| j| |< P q.W || jd |< d S )Nr   rE   )rI   r	   r   r   rJ   )r   r	   r0   r   r!   r   r   r   ps_store  s    zPSOperators.ps_storec             C   s   |   }| td d S )Nr   )rI   rO   rA   )r   r   r   r   r   ps_where#  s    zPSOperators.ps_wherec             C   s   |  t| jd  d S )Nr   )rO   r<   rJ   )r   r   r   r   ps_systemdict(  s    zPSOperators.ps_systemdictc             C   s   |  t| jd  d S )Nr   )rO   r<   rJ   )r   r   r   r   ps_userdict+  s    zPSOperators.ps_userdictc             C   s   |  t| jd  d S )NrE   )rO   r<   rJ   )r   r   r   r   ps_currentdict.  s    zPSOperators.ps_currentdictc             C   s   |  t| j d S )N)rO   r;   Z	tokenizer)r   r   r   r   ps_currentfile1  s    zPSOperators.ps_currentfilec             C   s   |  dj}|  d S )Nfiletype)rI   r	   Z
starteexec)r   fr   r   r   ps_eexec4  s    zPSOperators.ps_eexecc             C   s    |  dj}|  |  d S )Nrm   )rI   r	   Z	skipwhiteZ	stopeexec)r   rn   r   r   r   ps_closefile8  s    zPSOperators.ps_closefilec             C   s$   |   }x|| jkr|   }q
W d S )N)rI   r>   )r   rK   r   r   r   ps_cleartomark=  s    zPSOperators.ps_cleartomarkc             C   sh   |  d}|j}|  d}|jjd |j_|j||}||_| | | |||||k d S )N
stringtyperm   r   )rI   r	   posreadrO   )r   rA   r   sZoldstrrn   newstrr   r   r   ps_readstringB  s    


zPSOperators.ps_readstringc             C   s.   |   }|  dd}| t|j|jk d S )Ndicttypefonttype)rI   rO   rA   r	   )r   r0   dr   r   r   ps_knownP  s    zPSOperators.ps_knownc             C   s$   |  d}|  djr | | d S )NrM   booleantype)rI   r	   rY   )r   rP   r   r   r   ps_ifU  s    
zPSOperators.ps_ifc             C   s:   |  d}|  d}|  djr,| | n
| | d S )NrM   r|   )rI   r	   rY   )r   Zproc2Zproc1r   r   r   	ps_ifelseZ  s
    

zPSOperators.ps_ifelsec             C   s&   |   }|jdk rd|_| | d S )Nr   )rI   r   rO   )r   rK   r   r   r   ps_readonlyb  s    
zPSOperators.ps_readonlyc             C   s&   |   }|jdk rd|_| | d S )Nr   )rI   r   rO   )r   rK   r   r   r   ps_executeonlyh  s    
zPSOperators.ps_executeonlyc             C   s&   |   }|jdk rd|_| | d S )Nr   )rI   r   rO   )r   rK   r   r   r   ps_noaccessn  s    
zPSOperators.ps_noaccessc             C   s@   |  dd}|jdkr*| t|j  n| t|j  d S )Nr|   rc   )rI   r   rO   rA   r	   rF   )r   rK   r   r   r   ps_nott  s    
zPSOperators.ps_notc             C   s   |  d}td|j d S )Nrr   zPS output --->)rI   printr	   )r   r   r   r   r   ps_print{  s    
zPSOperators.ps_printc             C   s   |  d}|  d}t|j}|jd | |jkrd| t|j|d   | | | td n| | | td d S )Nrr   r   r   )rI   r   r	   rO   rD   rA   )r   seekru   Zseeklenr   r   r   ps_anchorsearch  s    




zPSOperators.ps_anchorsearchc             C   s(   |  d}td g|j }| | d S )Nrc   )rI   r&   r	   rO   )r   re   arrayr   r   r   r&     s    
zPSOperators.ps_arrayc             C   sF   |  d}x,tt|jd ddD ]}|   |j|< q"W | | d S )N	arraytyper   rE   )rI   r   r   r	   rO   )r   r   r!   r   r   r   	ps_astore  s    
zPSOperators.ps_astorec             C   s   |   }| | |j d S )N)rI   rO   rR   r	   )r   r   r   r   r   ps_load  s    zPSOperators.ps_loadc             C   s   |   }|   }|  dddd}|j}|dks6|dkrD||j|j< nP|dkrZ||j|j< n:|dkr|j}|jd | t|j |j|d d   |_d S )Nr   rx   rr   rM   r   )rI   r   r	   chr)r   rU   rV   obj3tpindexr   r   r   ps_put  s    zPSOperators.ps_putc             C   s   |   }|jdkr|  ddddd}|j}|dkrF| |j|j  nL|dkrb| |j|j  n0|dkr| tt|j|j  nd	std
d S )Nr+   r   rx   rr   rM   ry   )r   rM   )rx   ry   Fzshouldn't get here)rI   r	   r   rO   rF   ordAssertionError)r   rU   rV   r   r   r   r   ps_get  s    
zPSOperators.ps_getc             C   s   |  d}|  d}|  dd}|j}|dkrR| t|j|j|j|j   n*|dkr|| t|j|j|j|j   d S )Nrc   r   rr   )rI   r   rO   r&   r	   rD   )r   rU   rV   r   r   r   r   r   ps_getinterval  s    

$zPSOperators.ps_getintervalc             C   s   |  dd}|  d}|  dd}|j}|dkrP|j|j|j|jt|j < nF|dkr|jd |j }||j }||j|jt|j d   }||_d S )Nr   rr   rc   )rI   r   r	   r   )r   rU   rV   r   r   rv   r   r   r   ps_putinterval  s    
 
zPSOperators.ps_putintervalc             C   s   |  t| dj d S )Nrr   )rO   r#   rI   r	   )r   r   r   r   ps_cvn  s    zPSOperators.ps_cvnc             C   s4   |  dj}|dk rtd| | jd|   d S )Nrc   r   zindex may not be negativerE   )rI   r	   rT   rO   rS   )r   nr   r   r   ps_index  s    zPSOperators.ps_indexc             C   s   |  d}|  ddj}|  ddj}|  ddj}xb|dkrJ||krTP n
||k rTP t|tdkrt| t| n| t| | | || }q6W d S )NrM   rc   Zrealtyper   g        )rI   r	   r   rO   rG   rF   rY   )r   rP   limit	incrementr!   r   r   r   ps_for  s    

zPSOperators.ps_forc             C   s   |  d}|  ddd}|j}|dkrLx|jD ]}| | | | q.W nx|dkrxn|jD ] }| tt| | | q\W nB|dkrx8|j D ]*\}}| t| | | | | qW d S )NrM   r   rr   rx   )	rI   r   r	   rO   rY   rF   r   r5   r#   )r   rP   rK   r   r*   r0   r	   r   r   r   	ps_forall  s     


zPSOperators.ps_forallc             C   s@   |  d}|   }t|j}|| jd d j|j< | | d S )Nrx   r   FontDirectory)rI   r6   r	   rJ   rO   )r   fontr   r   r   r   ps_definefont  s
    

zPSOperators.ps_definefontc             C   s,   |   }| jd d j|j }| | d S )Nr   r   )rI   rJ   r	   rO   )r   r   r   r   r   r   ps_findfont  s    zPSOperators.ps_findfontc             C   s   |    d S )N)rI   )r   r   r   r   ps_pop  s    zPSOperators.ps_popc             C   s   |  d | ti  d S )Nrc   )rI   rO   r<   )r   r   r   r   r<   
  s    
zPSOperators.ps_dictc             C   s   | j | dj d S )Nrx   )rJ   appendrI   r	   )r   r   r   r   ps_begin  s    zPSOperators.ps_beginc             C   s$   t | jdkr| jd= ntdd S )Nr   rE   zdictstack underflow)r   rJ   rT   )r   r   r   r   ps_end  s    
zPSOperators.ps_endN)6r   r   r   rL   rQ   rN   rW   rX   rZ   r[   r^   r_   r`   rb   rD   rf   rg   rh   ri   rj   rk   rl   ro   rp   rq   rA   r   rw   r{   r}   r~   r   r   r   r   r   r   r&   r   r   r   r   r   r   r   r   r   r   r   r   r   r<   r   r   r   r   r   r   rH      sd   

rH   z.notdefr   )StandardEncodingN)r)   objectr   r   r   r#   r%   r&   r8   Z_type1_fontinfo_orderr:   r1   r/   r.   r6   r;   r<   r=   r?   r@   rA   rD   rF   rG   rH   ZnotdefZ$fontTools.encodings.StandardEncodingr   listmapZps_StandardEncodingr   r   r   r   <module>   s^   	  M