a
    èÝEb  ã                
   @   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   úZ/home/ja/django-apps/lartica_env/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   Z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é   )Ú
isinstancer0   Úranger    ÚendÚobjectr   r-   r   r   r   Úencoding)r   r'   r4   Ú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)rC   rD   rE   rF   rG   Úeuc_kri©   i   )rC   ó   �ó   ‚ó   ƒrF   rG   Úgb2312éü   )Zx_mac_japanese_ttxZx_mac_trad_chinese_ttxZx_mac_korean_ttxZ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_function]   s    
	

rV   )
Ú__doc__r   rP   ÚCodecr   ÚchrrR   rS   rV   Úregisterr   r   r   r   Ú<module>   sL   3ù	ûúûç"