a
    ¢…¢f59  ã                   @   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   s4  |d d |  }t t|d ƒ}d}t||ƒ\}}t||ƒ\}}}|dkrhd|vs\|d dkrbd}q�d	}n(t|tƒr�|D ]}	|	d
krvt|	ƒ||	< qvztt t|d ƒ }W n ty¸   Y n0 t|tƒ�rz| 	d¡d }
W n2 t�y
   | 	d	¡}
|
d d|
d   }
Y n0 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   úE/var/www/sistema_ama/venv/lib/python3.9/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   s8  g }d| vr¢zXd| v rJt t| d ƒtv rJtttdƒtt t| d ƒ ƒƒ}nd}|tt t| d ƒ fW S  ty    t t| d ƒdkr�d|f Y S d|f Y S Y n0 | d  ¡ }t	|tƒ�rz4|tv rÒt|  
¡ }n|tv rät| }ntdƒ‚W n, t�y   t d	|› d
�t¡ |}Y n0 ntt	|tƒ�r†d|v �r†ztt t|d ƒ  
¡ }W n4 t�y‚   t d	|› d
�t¡ td  
¡ }Y n0 ntd  
¡ }d|v �rd}t tt t|ƒd ƒD ]\}t	|tƒ�rÊ|}nDzt| ||< W n* t�y   |||< |dk�r |}Y n0 |d7 }�q´t	|tƒ�r0t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| v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   Î   sL    

ÿþýüûúÿ	
"
ÿþýÿrK   )rT   rP   rQ   rR   r.   r/   r   c                 C   s„   | dv s| d dkr|||fS d| v r,d}nNd| v r:d}n@d| v rHd}n2d	| v 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 u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>  r^   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  r^   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   sH  |d }g }i }d}d| v �rJ| d d   ¡ }ztt|d ƒ|d< W n ty^   d|d< Y n0 d|v rvt|d ƒ}ng }t|ƒdk�r|d }|d }t|tƒrÌt||ƒD ]}	|d ||	< q¬|d	d … }qzt|tƒrþ|D ]}
|
||< |d7 }qÚ|dd … }qzt	d
|d  
¡  tƒ �qqzz|| }W n  t�yF   |d d }Y n0 núd| v �rDt| d ƒ}zbtt| d ƒ}tt| d ƒ}||k�s’||k �rštdƒ‚|||  dk�r´tdƒ‚|||  }W n€ t�yB   d| v �rþdtt| d ƒv �rþ| d d }n@d}d}|D ] }	|	dk�r
||	7 }|d7 }�q
|td|ƒ d }Y n0 |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)   \  st    



þ
ÿ

ÿ
r)   )+rB   Úbinasciir   Úmathr   Útypingr   r   r   r   r   r	   Ú_codecsr   r   Ú_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þ(
ù
û; þ