
    jkeq                        d Z ddlZddlZ G 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 Z ej                  e       y)zExtend 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                   .    e Zd Zd Zd ZddZddZd Zy)ExtendCodecc                    || _         || _        || _        |j                         D ci c]  \  }}||
 c}}| _        t        d |j                         D              | _        t        j                  | j                   | j                  | j                        | _        t        j                  || j                         y c c}}w )Nc              3   2   K   | ]  }t        |        y wN)len).0vs     </usr/lib/python3/dist-packages/fontTools/encodings/codecs.py	<genexpr>z'ExtendCodec.__init__.<locals>.<genexpr>   s     <a3q6<s   )nameencodedecode)r   base_encodingmappingitemsreversemaxvaluesmax_lencodecs	CodecInfor   r   inforegister_errorerror)selfr   r   r   kr
   s         r   __init__zExtendCodec.__init__	   s    	*)09A19<7>>+;<<$$4;;t{{
	 	dDJJ/ :s   C c                 b   t        j                  |      }t        |      } |       }|r*	  ||| j                  | j                        }	||	z  }	 ||fS ||fS # |$ rM}
| ||d |
j
                   | j                  | j                        z  } ||
      \  }}||z  }||d  }Y d }
~
nd }
~
ww xY w|r])N)errors)r   lookup_errorr   r   r   start)r   mapperoutput_typeexc_typeinputr    base_error_handlerlengthoutpartereplacementposs                r   _mapzExtendCodec._map   s    #008Um	$eT%7%7		Jt F{sF{  $veIagg.0B0BDIINN#5a#8 S{"cd$ s   $A B*AB%%B*c                 X    | j                  t        j                  t        t        ||      S r   )r.   r   r   bytesUnicodeEncodeErrorr   r&   r    s      r   r   zExtendCodec.encode&   s    yy/A5&QQ    c                 X    | j                  t        j                  t        t        ||      S r   )r.   r   r   strUnicodeDecodeErrorr2   s      r   r   zExtendCodec.decode)   s    yy-?OOr3   c                    t        |t              rft        |j                  dz   |j                  dz         D ]<  }|j
                  |j                  | }|| j                  v s+| j                  |   |fc S  nt        |t              rrt        |j                  dz   |j                  | j                  z   dz         D ]<  }|j
                  |j                  | }|| j                  v s+| j                  |   |fc S  | j                  |_        |)N   )
isinstancer6   ranger"   endobjectr   r1   r   r   r   encoding)r   r+   r;   ss       r   r   zExtendCodec.error,   s    a+,QWWq[!%%!)4 0HHQWWs+$<<?C//0 -.QWWq[!''DLL*@1*DE 0HHQWWs+$<<?C//0 YY
r3   N)strict)__name__
__module____qualname__r   r.   r   r   r    r3   r   r   r      s    	0$RPr3   r   	shift_jis|   ~   \         i"!  i&   )      ~               big5)rL   rM   rN   rO   rP   euc_kri   i   )rL            rO   rP   gb2312   )x_mac_japanese_ttxx_mac_trad_chinese_ttxx_mac_korean_ttxx_mac_simp_chinese_ttxc                 0   t        j                  |       } | t        v rj| t        vrOt        |    \  }}| dd  dk(  sJ | d d |g}|D ]-  }	 t	        j
                  |       t        | ||      t        | <    n t        |    j                  S y # t        $ r Y Ow xY w)N_ttx)		encodingsnormalize_encoding_extended_encodings_cacher   lookupLookupErrorr   r   )r   r   r   base_encodingss       r   search_functionrf   l   s    ''-D""v%8%>"M79&&& #3Bi7N!/ MM-0  +4Ht d|    # s   	B			BB)
__doc__r   r_   Codecr   chrra   rb   rf   registerrC   r3   r   <module>rk      s'  `  0&,, 0j 	[[[[[[[	
 	[[[[[	
	 	[[[[[[	

 	[[[[[	
	E, \ 
6   r3   