o
    e38  ã                   @   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 d
ededede	eee
eeeef f eef f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< i dd“dd“dd“dd“dd “d!d “d"d “d#d “d$d%“d&d%“d'd%“d(d%“d)d*“d+d*“d,d*“d-d*“d.d*“d/d i¥Z eeef ed0< d1ed2ede	e
eeeef f ef fd3d4„Z!d1ed2ede	eeef eee f fd5d6„Z"d1ede#fd7d8„Z$d9e#d:e%d;e%d<e
de	eef f d=eeef d>ee de	e%e%e
de	eef f f fd?d@„Z&d9e#d=eeef d>ee d<e
de	eef f de
de	eef f f
dAdB„Z'd9e#d=eeef d>ee ddfdCdD„Z(d1ed2ededefdEdF„Z)dS )Gé    N)Ú	unhexlify)Úceil)ÚAnyÚDictÚListÚTupleÚUnionÚcasté   )Úadobe_glyphsÚcharset_encoding)Úlogger_warning)ÚPdfReadWarning)ÚDecodedStreamObjectÚDictionaryObjectÚ	font_nameÚspace_widthÚobjÚreturnc                 C   s.  |d d |  }t t|d ƒ}d}t||ƒ\}}t||ƒ\}}}|dkr4d|vs.|d dkr1d}nd	}nt|tƒrH|D ]}	|	d
krGt|	ƒ||	< q;ztt t|d ƒ }W n	 ty\   Y nw t|tƒr„z	| 	d¡d }
W n tyƒ   | 	d	¡}
|
d d|
d   }
Y nw |}
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© r2   ú<D:\Projects\ConvertPro\env\Lib\site-packages\PyPDF2/_cmap.pyÚbuild_char_map   sD   

€ÿ

þ
úr4   Ú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_cmapz	/CourrieriX  z/Courier-Boldz/Courier-BoldObliquez/Courier-Obliquez
/Helveticai  z/Helvetica-Boldz/Helvetica-BoldObliquez/Helvetica-Obliquez/Helvetica-Narrowéä   z/Helvetica-NarrowBoldz/Helvetica-NarrowBoldObliquez/Helvetica-NarrowObliquez/Times-Romanéú   z/Times-Boldz/Times-BoldItalicz/Times-Italicz/Symbolz/ZapfDingbatsr%   r*   r+   c              	   C   s  g }d| vrOz,d| v r%t t| d ƒtv r%tttdƒtt t| d ƒ ƒƒ}nd}|tt t| d ƒ fW S  tyN   t t| d ƒdkrHd|f Y S d|f Y S w | d  ¡ }t	|tƒrŠz|tv rft|  
¡ }n|tv rot| }ntdƒ‚W nK ty‰   t d	|› d
t¡ |}Y n7w t	|tƒrºd|v rºztt t|d ƒ  
¡ }W n ty¹   t d	|› d
t¡ td  
¡ }Y nw td  
¡ }d|v rûd}t tt t|ƒd ƒD ]*}t	|tƒrÚ|}qÐzt| ||< W n tyõ   |||< |dkró|}Y nw |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   r   r#   ÚzipÚranger%   r&   Ú
get_objectr"   Úcopyr9   ÚwarningsÚwarnr   r   Úintr   Úlist)r*   r+   r,   Úencr/   Úor2   r2   r3   r    q   st   ÿü

€
þû
þû
€ý
r    c                 C   s„   i }g }d| vri |g fS d}d}d }t | ƒ}| d¡D ]}t| d¡|||||ƒ\}}}q| ¡ D ]
\}	}
|
dkr<|	}q2|||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Úvaluer2   r2   r3   r!   ±   s$   
þÿ€
r!   c                 C   sú   t t| d ƒ ¡ }t|tƒr| ¡ }| ¡  dd¡ dd¡ dd¡ dd	¡ d
d¡ dd¡}| d¡}t	t
|ƒƒD ]0}||  d¡}|dkri|dkrMd}n|| d |…  dd¡}|d || |d d …  ||< q9d |¡ dd¡ dd¡ dd¡}|S )NrG   ó   beginbfchars   
beginbfchar
ó	   endbfchars   
endbfchar
ó   beginbfranges   
beginbfrange
ó
   endbfranges   
endbfrange
s   <<s   
{
s   >>s   
}
ó   <ó   >r   ó   .rI   ó    r
   ó   [s    [ ó   ]s    ]
 ó   rH   )r	   r   Úget_datar"   r   r'   rM   ÚreplacerK   r>   ÚlenÚfindÚjoin)r*   rR   ÚllÚiÚjÚcontentr2   r2   r3   rJ   Î   s4   
ù
	 €ürJ   rS   rO   rP   rQ   r-   r.   c                 C   s„   | dv s
| d dkr|||fS d| v rd}n'd| v rd}n d| v r$d}nd	| v r+d}n|r5t | |||ƒ}n|r=t| ||ƒ |||fS )
N)r]   rI   r   é%   rX   TrY   FrV   rW   )Úparse_bfrangeÚparse_bfchar)rS   rO   rP   rQ   r-   r.   r2   r2   r3   rL   ð   s   

rL   c                 C   s   dd„ |   d¡D ƒ}d}tt|d ƒt|d ƒƒ}t|d ƒ|d< d	|d d  }|d urj|d }|d }	|dd … D ]-}
|
d
krEd} n$t|
ƒ dd¡|t|| ƒ |d dkr[dndd¡< | |¡ |d7 }q;nŽt|d dƒ}t|d dƒ}	|d dkr³|dd … D ]-}
|
d
krŽd} n$t|
ƒ dd¡|t|| ƒ |d dkr¤dndd¡< | |¡ |d7 }q„nEt|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 }||	ksË|rüd S ||	fS )Nc                 S   ó   g | ]}|r|‘qS r2   r2   ©Ú.0r/   r2   r2   r3   Ú
<listcomp>  ó    z!parse_bfrange.<locals>.<listcomp>rI   Fr   r
   r   r   s   %%0%dXr_   Tr   Úsurrogatepassr   é   r^   é   é   )rK   Úmaxrc   r   r   ÚdecodeÚappendrC   )rS   r-   r.   rQ   ÚlstZclosure_foundZnbiÚfmtrT   ÚbÚsqÚcZfmt2r2   r2   r3   rk   	  sn   ûþÿ

€ûþÿ

€ûþÿ
÷
rk   c                 C   sÈ   dd„ |   d¡D ƒ}t|d ƒd |d< t|ƒdkrbd}|d d	kr6t|d ƒ t|d ƒd
k r2dndd¡}||t|d ƒ |d dkrFdndd¡< | t|d dƒ¡ |dd … }t|ƒdksd S d S )Nc                 S   rm   r2   r2   rn   r2   r2   r3   rp   E  rq   z parse_bfchar.<locals>.<listcomp>rI   r   r   r   r
   r   r\   ru   r   r   rr   rs   )rK   rc   r   rw   rx   rC   )rS   r-   r.   ry   Zmap_tor2   r2   r3   rl   D  s"   ÿüÿÿórl   c                 C   sJ  |d }g }i }d}d| v r§| d d   ¡ }ztt|d ƒ|d< W n ty.   d|d< Y nw d|v r:t|d ƒ}ng }t|ƒdkr|d }|d }t|tƒrdt||ƒD ]}	|d ||	< qT|d	d … }n%t|tƒr}|D ]
}
|
||< |d7 }qk|dd … }nt	d
|d  
¡  tƒ nt|ƒdksBz|| }W |S  ty¦   |d d }Y |S w d| v r#t| d ƒ}z/tt| d ƒ}tt| d ƒ}||ksÉ||k rÍtdƒ‚|||  dkrÙtdƒ‚|||  }W |S  ty"   d| v rÿdtt| d ƒv rÿ| d d }Y |S d}d}|D ]}	|	dkr||	7 }|d7 }q|td|ƒ d }Y |S w |S )Nr   r   z/DescendantFontsz/DWr   g     @@z/Wr
   rt   zunknown widths : 
g       @z/Widthsz
/FirstCharz	/LastCharzNot in rangez
null widthz/FontDescriptorz/MissingWidth)r?   r	   r)   r&   rD   rc   r"   rC   r>   r   Ú__repr__Ú__name__r   rv   )r*   r+   r   r1   ÚwZw1ÚstZft1Úsecondr/   ÚyÚenÚmZcptr2   r2   r3   r(   W  sˆ   ÿ


þï
ä
ÿä
òÿ
ù
€òr(   )*rA   Úbinasciir   Úmathr   Útypingr   r   r   r   r   r	   Ú_codecsr   r   Ú_utilsr   Úerrorsr   Zgenericr   r   r   r)   rC   r4   r#   r=   r>   r6   Ú__annotations__r9   r%   r    r!   ÚbytesrJ   ÚboolrL   rk   rl   r(   r2   r2   r2   r3   Ú<module>   sî   
  ÿÿÿÿ
þ<0ü	úÿþýüûúùø	÷
öõôóòñðïîÿÿ
þ@ÿÿ
þ"ÿþýü
ûú
ùÿ
þýü
û&;ÿÿÿþ