U
    Y»{j59  ã                   @   s„  U d dl Z d dlm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 dd	lmZmZmZ eeee	eee
eeeef f e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eef 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
de	eef f eeef ee e	e&e&e
de	eef f f d%œd&d'„Z'e$eeef ee e
de	eef f e
de	eef f d(œd)d*„Z(e$eeef ee dd+œd,d-„Z)eeeed.œd/d0„Z*dS )1é    N)Ú	unhexlify)Úceil)ÚAnyÚDictÚListÚTupleÚUnionÚcasté   )Úadobe_glyphsÚcharset_encoding)Úlogger_warning)ÚPdfReadWarning)ÚDecodedStreamObjectÚDictionaryObjectÚStreamObject)Ú	font_nameÚspace_widthÚobjÚreturnc                 C   s8  |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 )záDetermine information about a font.

    This function returns a tuple consisting of:
    font sub-type, space_width/2, encoding, map character-map, font-dictionary.
    The font-dictionary itself is suitable for the curious.z
/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© r3   úK/var/www/html/bwave/python/venv/lib/python3.8/site-packages/PyPDF2/_cmap.pyÚbuild_char_map   s>    



úr5   Ú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   s@  g }d| kr¤zXd| krJt t| d ƒtkrJtttdƒtt t| d ƒ ƒƒ}nd}|tt t| d ƒ fW S  tk
r¢   t t| 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ƒ�r8t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    r   r$   ÚzipÚranger&   r'   Ú
get_objectr#   Úcopyr:   ÚwarningsÚwarnr   r   Úintr   Úlist)r+   r,   r-   Úencr0   Úor3   r3   r4   r!   q   sh    ÿ

þ
þ


r!   c                 C   s„   i }g }d| kri |g fS d}d}d }t | ƒ}| d¡D ]"}t| d¡|||||ƒ\}}}q8| ¡ D ]\}	}
|
dkrd|	}qd|||fS )Nú
/ToUnicodeFó   
ó    r=   )Ú
prepare_cmÚsplitÚprocess_cm_lineÚstripÚitems)r+   r,   r.   r/   Ú
process_rgÚprocess_charÚmultiline_rgÚcmÚlÚaÚvaluer3   r3   r4   r"   ±   s,    
þ     ÿr"   )r+   r   c                 C   s&  | d }t |tƒr&tt| d ƒ ¡ }nt |tƒr>| d¡r>d}t |tƒrP| ¡ }| ¡  	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 )NrH   z	/Identitys,   beginbfrange
<0000> <0001> <0000>
endbfrangeó   beginbfchars   
beginbfchar
ó	   endbfchars   
endbfchar
ó   beginbfranges   
beginbfrange
ó
   endbfranges   
endbfrange
s   <<s   
{
s   >>s   
}
ó   <ó   >r   ó   .rJ   ó    r
   ó   [s    [ ó   ]s    ]
 ó   rI   )r#   r   r	   r   Úget_datar    Ú
startswithr(   rN   ÚreplacerL   r?   ÚlenÚfindÚjoin)r+   ZturS   ZllÚiÚjÚcontentr3   r3   r4   rK   Î   s^    

 ÿ þ ý ü û úÿ	
"
 ÿ þ ýÿrK   )rT   rP   rQ   rR   r.   r/   r   c                 C   s„   | dks| d dkr|||fS d| kr,d}nNd| kr:d}n@d| krHd}n2d	| krVd}n$|rjt | |||ƒ}n|rzt| ||ƒ |||fS )
N)r^   rJ   r   é%   rY   TrZ   FrW   rX   )Úparse_bfrangeÚparse_bfchar)rT   rP   rQ   rR   r.   r/   r3   r3   r4   rM   õ   s    
rM   )rT   r.   r/   rR   r   c                 C   s  dd„ |   d¡D ƒ}d}tt|d ƒt|d ƒƒ}t|d ƒ|d< d	|d d  }|d k	rÖ|d }|d }	|dd … D ]Z}
|
d
krŠd} qÒt|
ƒ dd¡|t|| ƒ |d dkr¶dndd¡< | |¡ |d7 }qv�n&t|d dƒ}t|d dƒ}	|d dk�rr|dd … D ]b}
|
d
k�r$d} �qüt|
ƒ dd¡|t|| ƒ |d dk�rRdndd¡< | |¡ |d7 }�qnŠt|d dƒ}d	tdt|d ƒƒ }d}||	k�rüt|| ƒ dd¡|t|| ƒ |d dk�rÖdndd¡< | |¡ |d7 }|d7 }�qš|�rd S ||	fS )Nc                 S   s   g | ]}|r|‘qS r3   r3   ©Ú.0r0   r3   r3   r4   Ú
<listcomp>  s      z!parse_bfrange.<locals>.<listcomp>rJ   Fr   r
   r   r   s   %%0%dXr`   Tr   Úsurrogatepassr   é   r_   é   é   )rL   Úmaxre   r   r   ÚdecodeÚappendrD   )rT   r.   r/   rR   ÚlstZclosure_foundZnbiÚfmtrU   ÚbÚsqÚcZfmt2r3   r3   r4   rl     sh    ûþÿ

ûþÿ

ûþÿ
rl   )rT   r.   r/   r   c                 C   sº   dd„ |   d¡D ƒ}t|d ƒd |d< t|ƒdkr¶d}|d d	krlt|d ƒ t|d ƒd
k rddndd¡}||t|d ƒ |d dkrŒdndd¡< | t|d dƒ¡ |dd … }q(d S )Nc                 S   s   g | ]}|r|‘qS r3   r3   rn   r3   r3   r4   rp   J  s      z parse_bfchar.<locals>.<listcomp>rJ   r   r   r   r
   r   r]   rt   r   r   rq   rr   )rL   re   r   rv   rw   rD   )rT   r.   r/   rx   Zmap_tor3   r3   r4   rm   I  s$     ÿü ÿÿrm   )r+   r,   r   r   c                 C   sP  |d }g }i }d}d| k�rP| 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
�rL   |d d }Y nX nüd| k�rLt| d ƒ}zbtt| d ƒ}tt| d ƒ}||k�s˜||k �r tdƒ‚|||  dk�rºtdƒ‚|||  }W n‚ tk
�rJ   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
   rs   zunknown widths : 
g       @z/Widthsz
/FirstCharz	/LastCharzNot in rangez
null widthz/FontDescriptorz/MissingWidth)r@   r	   r*   r'   rE   re   r#   rD   r?   r   Ú__repr__Ú__name__r   ru   )r+   r,   r   r2   ÚwZw1ÚstZft1Úsecondr0   ÚyÚenÚmZcptr3   r3   r4   r)   \  sv    


þ
ÿ

 ÿ
r)   )+rB   Úbinasciir   Úmathr   Útypingr   r   r   r   r   r	   Ú_codecsr   r   Z_utilsr   Úerrorsr   Zgenericr   r   r   r    r*   rD   r5   r$   r>   r?   r7   Ú__annotations__r:   r&   r!   r"   ÚbytesrK   ÚboolrM   rl   rm   r)   r3   r3   r3   r4   Ú<module>   s–       ÿþ<ü0	úî þA þ(
ù
û;   þ