o
    hY1                     @   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 ded	ed
edeeeeeeeef f 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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d.< d/ed0edeeeeeef f ef fd1d2Zd/ed0edeeeef eee f fd3d4Zd/edefd5d6Z d7ed8e!d9e!d:eeef d;ee dee!e!f fd<d=Z"d7ed:eeef d;ee ddfd>d?Z#d7ed:eeef d;ee ddfd@dAZ$d/ed0ed	edefdBdCZ%dS )D    N)	unhexlify)AnyDictListTupleUnioncast   )adobe_glyphscharset_encoding)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rz	|	dd }
W n ty   |	d	}
|
d d|
d   }
Y nw |}
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   T/var/www/html/magazine_api/magazine_env/lib/python3.10/site-packages/PyPDF2/_cmap.pybuild_char_map   sB   



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_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rIz)d| v r"| d t v r"tttdt tt| d  }nd}|ttt| d  fW S  tyH   | d dkrBd|f Y S d|f Y S w | d  }t	|trz|t v r`t | 
 }n|tv rit| }ntdW nK ty   td	| d
t |}Y n7w t	|trd|v rzt tt|d  
 }W n ty   td	| d
t t d 
 }Y nw t d 
 }d|v rd}tttt|d D ]*}t	|tr|}qzt| ||< W n ty   |||< |dkr|}Y nw |d7 }qt	|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   st   





r   c           
      C   sv   i }g }d| vri |g fS d}d}t | }|dD ]}t|||||\}}q| D ]
\}}	|	dkr5|}q+|||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   c                 C   s   t t| d  }| dddddddd	d
ddd}|d}tt|D ]0}|| d}|dkr`|dkrDd}n|| d | dd}|d || |d d   ||< q0d	|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      s0   
	 rG   rN   rK   rL   r+   r,   c                 C   s   | dv s
| d dkr||fS d| v rd}||fS d| v r"d}||fS d| v r,d}||fS d	| v r6d}||fS |rBt | || ||fS |rJt| || ||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   c                 C   sT  dd |  dD }t|d d}t|d d}t|d }|d |d< d	| }|d d
krc|dd  D ],}|dkr= d S t|dd|t|| |d dkrSdndd< || |d7 }q4d S t|d d}	d	tdt|d  }
||krt|
|	 dd|t|| |d dkrdndd< || |d7 }|	d7 }	||ksyd S d S )Nc                 S      g | ]}|r|qS r0   r0   .0r-   r0   r0   r1   
<listcomp>       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      sD   


rg   c                 C   s   dd |  dD }t|d d |d< t|dkrXd}|d d	kr,t|d d
d}||t|d |d dkr<dnd
d< |t|d d |dd  }t|dksd S d S )Nc                 S   ri   r0   r0   rj   r0   r0   r1   rl     rm   z parse_bfchar.<locals>.<listcomp>rX   r   r   r   r	   r   rW   r   rp   r   rn   )rH   r`   r   rr   rs   rA   )rN   r+   r,   ru   Zmap_tor0   r0   r1   rh     s"   rh   c                 C   sP  |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 rtd|||  dkrt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	   ro   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   rt   )r(   r)   r   r/   wZw1stZft1secondr-   yenmZcptr0   r0   r1   r&   /  s   







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(		

?
 


&&"