U
    –BÞbY1  ã                   @   s  U d dl Z d dlmZ d dlmZmZmZmZmZm	Z	 ddl
mZmZ ddlmZ ddlmZmZ eeeeeeeeeeef f ef dœd	d
„Zddeeedƒdgd ƒƒi fZeeeeeeeef f ef ed< dddddddœZeeef ed< dddddddddddddddddddœZeeef ed< eeeeeeeef f ef dœdd„Zeeeeeef eee f dœdd„Zeed œd!d"„Z ee!e!eeef ee ee!e!f d#œd$d%„Z"eeeef ee dd&œd'd(„Z#eeeef ee dd&œd)d*„Z$eeeed+œd,d-„Z%dS ).é    N)Ú	unhexlify)ÚAnyÚDictÚListÚTupleÚUnionÚcasté   )Úadobe_glyphsÚcharset_encoding)ÚPdfReadWarning)ÚDecodedStreamObjectÚDictionaryObject)Ú	font_nameÚspace_widthÚobjÚreturnc                 C   s6  |d d |  }t t|d ƒ}d}t||ƒ\}}t||ƒ\}}}|dkrhd|ks\|d dkrbd}q�d	}n(t|tƒr�|D ]}	|	d
krvt|	ƒ||	< qvztt t|d ƒ }W n tk
rº   Y nX t|tƒ�rz| 	d¡d }
W n4 tk
�r   | 	d	¡}
|
d d|
d   }
Y nX n|}
t
||
|ƒ}|t|d ƒ||fS )Nz
/Resourcesz/Fontú/Subtypeé    Ú éÿÿÿÿr	   Úcharmapú	utf-16-beéÿ   ú	/BaseFontr   é   é   )r   ÚstrÚparse_encodingÚparse_to_unicodeÚ
isinstanceÚdictÚchrÚ_default_fonts_space_widthÚ	ExceptionÚencodeÚcompute_space_widthÚfloat)r   r   r   ÚftZ	font_typeÚ
space_codeÚencodingÚmap_dictÚ	int_entryÚxÚspÚsp_width© r0   ú0/tmp/pip-unpacked-wheel-weujb6sz/PyPDF2/_cmap.pyÚbuild_char_map   s<    


ûr2   ÚUnknowni'  r   u   ï¿½Úunknown_char_mapr   ÚgbkÚgb2312)z/Identity-Hz/Identity-Vz	/GB-EUC-Hz	/GB-EUC-Vz/GBpc-EUC-Hz/GBpc-EUC-VÚ_predefined_cmapiX  i  éä   éú   )z	/Courrierz/Courier-Boldz/Courier-BoldObliquez/Courier-Obliquez
/Helveticaz/Helvetica-Boldz/Helvetica-BoldObliquez/Helvetica-Obliquez/Helvetica-Narrowz/Helvetica-NarrowBoldz/Helvetica-NarrowBoldObliquez/Helvetica-NarrowObliquez/Times-Romanz/Times-Boldz/Times-BoldItalicz/Times-Italicz/Symbolz/ZapfDingbatsr#   )r(   r)   r   c              	   C   s4  g }d| kr˜zRd| krD| d t krDtttdƒt tt| d ƒ ƒƒ}nd}|ttt| d ƒ fW S  tk
r–   | d dkr†d|f Y S d|f Y S Y nX | d  ¡ }t	|tƒ�rz4|t krÈt |  
¡ }n|tkrÚt| }ntdƒ‚W n. tk
�r   t d	|› d
�t¡ |}Y nX nvt	|tƒ�r€d|k�r€zt tt|d ƒ  
¡ }W n6 tk
�r|   t d	|› d
�t¡ t d  
¡ }Y nX nt d  
¡ }d|k�rd}tttt|ƒd ƒD ]^}t	|tƒ�rÄ|}nFzt| ||< W n, tk
�r    |||< |dk�rü|}Y nX |d7 }�q®t	|tƒ�r,tttdƒ|ƒƒ}||fS )Nz	/Encodingr   r   r   r   z/Type1r   z	not foundzAdvanced encoding z not implemented yetz/BaseEncodingz/StandardCodingz/Differencesr   ú r	   )r   r!   ÚzipÚranger   r   r#   r$   Ú
get_objectr    Úcopyr7   ÚwarningsÚwarnr   r   Úintr
   Úlist)r(   r)   r*   Úencr-   Úor0   r0   r1   r   i   sh    ÿ

þ
þ


r   c           
      C   sv   i }g }d| kri |g fS d}d}t | ƒ}| d¡D ]}t|||||ƒ\}}q4| ¡ D ]\}}	|	dkrV|}qV|||fS )Nú
/ToUnicodeFó   
r:   )Ú
prepare_cmÚsplitÚprocess_cm_lineÚitems)
r(   r)   r+   r,   Ú
process_rgÚprocess_charÚcmÚlÚaÚvaluer0   r0   r1   r   ¨   s&    
    ÿ
r   )r(   r   c                 C   sè   t t| d ƒ ¡ }| ¡  dd¡ dd¡ dd¡ dd	¡ d
d¡ dd¡}| d¡}tt|ƒƒD ]`}||  d¡}|dkr`|dkrˆd}n|| d |…  dd¡}|d || |d d …  ||< q`d 	|¡ dd¡ dd¡ dd¡}|S )NrE   ó   beginbfchars   
beginbfchar
ó	   endbfchars   
endbfchar
ó   beginbfranges   
beginbfrange
ó
   endbfranges   
endbfrange
s   <<s   
{
s   >>s   
}
ó   <ó   >r   ó   .ó    ó    r	   ó   [s    [ ó   ]s    ]
 ó   rF   )
r   r   Úget_dataÚstripÚreplacerH   r<   ÚlenÚfindÚjoin)r(   rM   ZllÚiÚjÚcontentr0   r0   r1   rG   Â   sR     ÿ þ ý ü û úÿ	
"
 ÿ þ ýÿrG   )rN   rK   rL   r+   r,   r   c                 C   s~   | dks| d dkr||fS d| kr*d}nLd| kr8d}n>d| krFd}n0d	| krTd}n"|rft | ||ƒ n|rvt| ||ƒ ||fS )
N)rY   rX   r   é%   rS   TrT   FrQ   rR   )Úparse_bfrangeÚparse_bfchar)rN   rK   rL   r+   r,   r0   r0   r1   rI   â   s    rI   )rN   r+   r,   r   c                 C   sJ  dd„ |   d¡D ƒ}t|d dƒ}t|d dƒ}t|d ƒ}|d |d< d	| }|d d
krÂ|dd … D ]V}|dkrx qÀt|ƒ dd¡|t|| ƒ |d dkr¤dndd¡< | |¡ |d7 }qhn„t|d dƒ}	d	tdt|d ƒƒ }
||k�rFt|
|	 ƒ dd¡|t|| ƒ |d dk�r"dndd¡< | |¡ |d7 }|	d7 }	qæd S )Nc                 S   s   g | ]}|r|‘qS r0   r0   ©Ú.0r-   r0   r0   r1   Ú
<listcomp>û   s      z!parse_bfrange.<locals>.<listcomp>rX   r   é   r	   r   r   s   %%0%dXrZ   é   r[   r   Úsurrogatepassr   é   )rH   rA   r`   r   ÚdecodeÚappendÚmax)rN   r+   r,   ÚlstrO   ÚbZnbiÚfmtÚsqÚcZfmt2r0   r0   r1   rg   ú   s@    ûþÿ

ûþÿ
rg   c                 C   s¦   dd„ |   d¡D ƒ}t|d ƒd |d< t|ƒdkr¢d}|d d	krXt|d ƒ d
d¡}||t|d ƒ |d dkrxdnd
d¡< | t|d dƒ¡ |dd … }q(d S )Nc                 S   s   g | ]}|r|‘qS r0   r0   ri   r0   r0   r1   rk     s      z parse_bfchar.<locals>.<listcomp>rX   r   r   r   r	   r   rW   r   rn   r   rl   )rH   r`   r   rp   rq   rA   )rN   r+   r,   rs   Zmap_tor0   r0   r1   rh     s$     ÿü ÿÿrh   )r(   r)   r   r   c                 C   sR  |d }g }i }d}d| k�rR| d d   ¡ }ztt|d ƒ|d< W n tk
r`   d|d< Y nX d|krxt|d ƒ}ng }t|ƒdk�r |d }|d }t|tƒrÎt||ƒD ]}	|d ||	< q®|d	d … }q|t|tƒ�r|D ]}
|
||< |d7 }qÞ|dd … }q|t	 
d
|d  ¡  t¡ �q q|z|| }W n" tk
�rN   |d d }Y nX nüd| k�rNt| d ƒ}zbtt| d ƒ}tt| d ƒ}||k�sš||k �r¢tdƒ‚|||  dk�r¼tdƒ‚|||  }W n‚ tk
�rL   d| k�rdtt| d ƒk�r| d d }n@d}d}|D ] }	|	dk�r||	7 }|d7 }�q|td|ƒ d }Y nX |S )Nr   r   z/DescendantFontsz/DWr   g     @�@z/Wr	   rm   zunknown widths : 
g       @z/Widthsz
/FirstCharz	/LastCharzNot in rangez
null widthz/FontDescriptorz/MissingWidth)r=   r   r'   r$   rB   r`   r    rA   r<   r?   r@   Ú__repr__r   r   rr   )r(   r)   r   r/   ÚwZw1ÚstZft1Úsecondr-   ÚyÚenÚmZcptr0   r0   r1   r&   /  sv    


þ
ÿ

 ÿ
r&   )&r?   Úbinasciir   Útypingr   r   r   r   r   r   Ú_codecsr
   r   Úerrorsr   Zgenericr   r   r   r'   rA   r2   r!   r;   r<   r4   Ú__annotations__r7   r#   r   r   ÚbytesrG   ÚboolrI   rg   rh   r&   r0   r0   r0   r1   Ú<module>   s†       ÿþ6ü(	úî þ@ þ!

ú "   þ