a
    ¥Q•hq  ã                
   @   sð   d Z ddlZddlZG dd„ dejƒZdedƒedƒedƒed	ƒed
ƒedƒedƒdœfdedƒed	ƒed
ƒedƒedƒdœfded	ƒedƒedƒed
ƒedƒedƒdœfdedƒed	ƒed
ƒedƒedƒdœfdœZi Zdd„ Ze 	e¡ dS )z¸Extend the Python codecs module with a few encodings that are used in OpenType (name table)
but missing from Python.  See https://github.com/fonttools/fonttools/issues/236 for details.é    Nc                   @   s8   e Zd Zdd„ Zdd„ Zddd„Zddd	„Zd
d„ ZdS )ÚExtendCodecc                 C   sh   || _ || _|| _dd„ | ¡ D ƒ| _tdd„ | ¡ D ƒƒ| _tj	| j | j
| jd�| _t || j¡ d S )Nc                 S   s   i | ]\}}||“qS © r   )Ú.0ÚkÚvr   r   úS/var/www/sistema_ama/venv/lib/python3.9/site-packages/fontTools/encodings/codecs.pyÚ
<dictcomp>   ó    z(ExtendCodec.__init__.<locals>.<dictcomp>c                 s   s   | ]}t |ƒV  qd S ©N)Úlen)r   r   r   r   r   Ú	<genexpr>   r	   z'ExtendCodec.__init__.<locals>.<genexpr>)ÚnameÚencodeÚdecode)r   Úbase_encodingÚmappingÚitemsÚreverseÚmaxÚvaluesÚmax_lenÚcodecsÚ	CodecInfor   r   ÚinfoÚregister_errorÚerror)Úselfr   r   r   r   r   r   Ú__init__	   s    ÿzExtendCodec.__init__c              
   C   s¬   t  |¡}t|ƒ}|ƒ }|r¤z"||| j| jd�}	||	7 }W q¤W q |y  }
 zJ|||d |
j… | j| jƒ7 }||
ƒ\}}||7 }||d … }W Y d }
~
qd }
~
0 0 q||fS )N)Úerrors)r   Úlookup_errorr   r   r   Ústart)r   ÚmapperÚoutput_typeÚexc_typeÚinputr   Zbase_error_handlerÚlengthÚoutÚpartÚeÚreplacementÚposr   r   r   Ú_map   s    
$zExtendCodec._mapÚstrictc                 C   s   |   tjtt||¡S r
   )r+   r   r   ÚbytesÚUnicodeEncodeError©r   r$   r   r   r   r   r   &   s    zExtendCodec.encodec                 C   s   |   tjtt||¡S r
   )r+   r   r   ÚstrÚUnicodeDecodeErrorr/   r   r   r   r   )   s    zExtendCodec.decodec                 C   s¼   t |tƒrTt|jd |jd ƒD ]0}|j|j|… }|| jv r | j| |f  S q nXt |tƒr¬t|jd |j| j d ƒD ]0}|j|j|… }|| j	v rz| j	| |f  S qz| j
|_|‚d S )Né   )Ú
isinstancer1   Úranger    ÚendÚobjectr   r.   r   r   r   Úencoding)r   r(   r5   Úsr   r   r   r   ,   s    


 
zExtendCodec.errorN)r,   )r,   )Ú__name__Ú
__module__Ú__qualname__r   r+   r   r   r   r   r   r   r   r      s
   

r   Ú	shift_jisé|   é~   é\   é    é©   i"!  i&   )ó   üó   ~ó   €ó    ó   ýó   þó   ÿÚbig5)rD   rE   rF   rG   rH   Úeuc_kri©   i   )rD   ó   �ó   ‚ó   ƒrG   rH   Úgb2312éü   )Úx_mac_japanese_ttxÚx_mac_trad_chinese_ttxÚx_mac_korean_ttxÚx_mac_simp_chinese_ttxc              	   C   sœ   t  | ¡} | tv r˜| tvrŽt|  \}}| dd … dks:J ‚| d d… |g}|D ]>}zt |¡ W n tyv   Y qNY n0 t| ||ƒt| <  qŽqNt|  jS d S )NéüÿÿÿZ_ttx)	Ú	encodingsÚnormalize_encodingÚ_extended_encodingsÚ_cacher   ÚlookupÚLookupErrorr   r   )r   r   r   Zbase_encodingsr   r   r   Úsearch_functionl   s    
	

r[   )
Ú__doc__r   rU   ÚCodecr   ÚchrrW   rX   r[   Úregisterr   r   r   r   Ú<module>   sT   5ùþûþúþûþÞ.