o
    ë6Wj59  ã                   @   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 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ÚStreamObjectÚ	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   ÚftÚ	font_typeÚ
space_codeÚencodingÚmap_dictÚ	int_entryÚxÚspÚsp_width© r4   ú[/home/esfera/Documents/content_generation/venv/lib/python3.10/site-packages/PyPDF2/_cmap.pyÚbuild_char_map   sD   

€ÿ

þ
úr6   Ú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#   Úcopyr;   ÚwarningsÚwarnr   r   Úintr   Úlist)r+   r-   r.   Úencr1   Úor4   r4   r5   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/   r0   Ú
process_rgÚprocess_charÚmultiline_rgÚcmÚlÚaÚvaluer4   r4   r5   r"   ±   s$   
þÿ€
r"   c                 C   s&  | d }t |tƒrtt| d ƒ ¡ }nt |tƒr| d¡rd}t |tƒr(| ¡ }| ¡  	dd¡ 	dd¡ 	dd	¡ 	d
d¡ 	dd¡ 	dd¡}| 
d¡}tt|ƒƒD ]0}||  d¡}|dkr|dkrcd}n|| d |…  	dd¡}|d || |d d …  ||< qOd |¡ 	dd¡ 	dd¡ 	dd¡}|S )NrI   z	/Identitys,   beginbfrange
<0000> <0001> <0000>
endbfrangeó   beginbfchars   
beginbfchar
ó	   endbfchars   
endbfchar
ó   beginbfranges   
beginbfrange
ó
   endbfranges   
endbfrange
s   <<s   
{
s   >>s   
}
ó   <ó   >r   ó   .rK   ó    r
   ó   [s    [ ó   ]s    ]
 ó   rJ   )r#   r   r	   r   Úget_datar    Ú
startswithr(   rO   ÚreplacerM   r@   ÚlenÚfindÚjoin)r+   ÚturT   ÚllÚiÚjÚcontentr4   r4   r5   rL   Î   s<   

ù
	 €ürL   rU   rQ   rR   rS   r/   r0   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_   rK   r   é%   rZ   Tr[   FrX   rY   )Úparse_bfrangeÚparse_bfchar)rU   rQ   rR   rS   r/   r0   r4   r4   r5   rN   õ   s   

rN   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 r4   r4   ©Ú.0r1   r4   r4   r5   Ú
<listcomp>  ó    z!parse_bfrange.<locals>.<listcomp>rK   Fr   r
   r   r   s   %%0%dXra   Tr   Úsurrogatepassr   é   r`   é   é   )rM   Úmaxrf   r   r   ÚdecodeÚappendrE   )rU   r/   r0   rS   ÚlstÚclosure_foundÚnbiÚfmtrV   ÚbÚsqÚcÚfmt2r4   r4   r5   ro     sn   ûþÿ

€ûþÿ

€ûþÿ
÷
ro   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   rq   r4   r4   rr   r4   r4   r5   rt   J  ru   z parse_bfchar.<locals>.<listcomp>rK   r   r   r   r
   r   r^   ry   r   r   rv   rw   )rM   rf   r   r{   r|   rE   )rU   r/   r0   r}   Úmap_tor4   r4   r5   rp   I  s"   ÿüÿÿórp   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
   rx   zunknown widths : 
g       @z/Widthsz
/FirstCharz	/LastCharzNot in rangez
null widthz/FontDescriptorz/MissingWidth)rA   r	   r*   r'   rF   rf   r#   rE   r@   r   Ú__repr__Ú__name__r   rz   )r+   r-   r   r3   ÚwÚw1ÚstÚft1Úsecondr1   ÚyÚenÚmÚcptr4   r4   r5   r)   \  sˆ   ÿ


þï
ä
ÿä
òÿ
ù
€òr)   )+rC   Úbinasciir   Úmathr   Útypingr   r   r   r   r   r	   Ú_codecsr   r   Ú_utilsr   Úerrorsr   Úgenericr   r   r   r    r*   rE   r6   r$   r?   r@   r8   Ú__annotations__r;   r&   r!   r"   ÚbytesrL   ÚboolrN   ro   rp   r)   r4   r4   r4   r5   Ú<module>   sî   
  ÿÿÿÿ
þ<0ü	úÿþýüûúùø	÷
öõôóòñðïîÿÿ
þ@ÿÿ
þ'ÿþýü
ûú
ùÿ
þýü
û&;ÿÿÿþ