
    [g59                        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Zdd e e ed          dgdz                      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d/<   d0ed1ede	e
eeeef         f         ef         fd2Z"d0ed1ede	eeef         eee         f         fd3Z#d0ede$fd4Z%d5e$d6e&d7e&d8e
de	eef         f         d9eeef         d:ee         de	e&e&e
de	eef         f         f         fd;Z'd5e$d9eeef         d:ee         d8e
de	eef         f         de
de	eef         f         f
d<Z(d5e$d9eeef         d:ee         ddfd=Z)d0ed1ededefd>Z*dS )?    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                    |d         d         |          }t          t          |d                   }d}t          ||          \  }}t          ||          \  }}}|dk    rd|vs|d         dk    rd}n5d	}n2t	          |t
                    r|D ]}	|	d
k    rt          |	          ||	<   	 t          t          t          |d                            }n# t          $ r Y nw xY wt	          |t                    rV	 |	                    d          d         }
n;# t          $ r, |	                    d	          }
|
d         d|
d         z  z   }
Y nw xY w|}
t          ||
|          }|t          |dz            |||fS )zDetermine 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_widths               G/var/www/pdf_extract/myenv/lib/python3.11/site-packages/PyPDF2/_cmap.pybuild_char_mapr7      s    |,W5i@B#r*~..IJ)"j99Hj&6r:&F&F#Hj) 2~~X"!2!2 !HH"HH 
Hd	#	# % 	% 	%ACxx!!ff0c2k?1K1KL    *c"" 	%""9--a0BB 	% 	% 	%"";//BAr!u$BBB	% "2r;77H 	hl
 s$   (&C 
CC5D 3EE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                 *   g }d| vr	 d| v rqt          t          | d                   t          v rOt          t	          t          d          t          t          t          | d                                                }nd}|t          t          t          | d                            fS # t          $ r, t          t          | d                   dk    rd|fcY S d|fcY S w xY w| d                                         }t          |t                    r	 |t          v r t          |         
                                }n&|t          v rt          |         }nt          d          n# t          $ r# t          j        d	| d
t                     |}Y nw xY wt          |t                    rd|v r	 t          t          t          |d                            
                                }nl# t          $ r@ t          j        d	| d
t                     t          d         
                                }Y n#w xY wt          d         
                                }d|v rd}t          t          t          t          |          d                   D ]N}t          |t                     r|}	 t"          |         ||<   n# t          $ r |||<   |dk    r|}Y nw xY w|dz  }Ot          |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/   r0   encr3   os         r6   r#   r#   q   s\    79H"	&b  T#r+%?%?CS%S%Sc

$4T#r+5O5O$PQQ  %7S"[/8R8RSSS 	& 	& 	&CJ((H44 *,,,,:~%%%		&
 )+;(B(B(D(DC#s >	&&&+C05577(((+C0,,, 	 	 	M>S>>>   HHH	 
C)	*	* 
>#/E/E	B'S#o2F(G(GHMMOOHH 	B 	B 	BMCXCCC   ((9:??AAHHH	B $$56;;==&-=s(C(CN(STT 
	 
	A!S!! 	'".q/HQKK  ' ' '"#HQKCxx%&
' Q(D!! 3E#JJ1122ZsP   BB' '-CCCAE   *FF*8G# #AH-,H-J//K	K	c           	         i }g }d| vri |g fS d}d}d }t          |           }|                    d          D ]-}t          |                    d          |||||          \  }}}.|                                D ]\  }	}
|
dk    r|	}|||fS )N
/ToUnicodeF   
    r@   )
prepare_cmsplitprocess_cm_linestripitems)r-   r/   r1   r2   
process_rgprocess_charmultiline_rgcmlavalues              r6   r$   r$      s    
  "H I2:r!!JL 	  
BBXXe__ 
 
1@GGDMM:|\8Y2
 2
.
L,, NN$$  5C<<JZ**    c                 <   | 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 ]l}||                             d          }|dk    rI|dk    rd}n$||         d |         	                    dd          }|dz   ||         |dz   d          z   ||<   md                    |          	                    dd          	                    dd          	                    dd          }|S )NrL   z	/Identitys,   beginbfrange
<0000> <0001> <0000>
endbfrange   beginbfchars   
beginbfchar
	   endbfchars   
endbfchar
   beginbfranges   
beginbfrange

   endbfranges   
endbfrange
s   <<s   
{
s   >>s   
}
   <   >r      .rN   r[   r      [s    [    ]s    ]
    rM   )r%   r   r
   r   get_datar"   
startswithr*   rR   replacerP   rB   lenfindjoin)r-   turW   llijcontents          r6   rO   rO      s   	L	B"l## ?%r,'788AACC	B		 ?{!;!; ?>"c YY[[ 	

	!3	4	4	/	0	0	"5	6	6	 1	2	2		!	!		!	!  
$B3r77^^ 	4 	4qEJJt66Avv Q%)++D#66dNRU1q577^3BqE	2	v			x	 	 				  Ir[   rX   rT   rU   rV   r1   r2   c                     | dv s| d         dk    r|||fS d| v rd}n=d| v rd}n6d| v rd}n/d	| v rd}n(|rt          | |||          }n|rt          | ||           |||fS )
N)r[   rN   r   %   r_   Tr`   Fr]   r^   )parse_bfrangeparse_bfchar)rX   rT   rU   rV   r1   r2   s         r6   rQ   rQ      s     	K1Q42::<55!

	!		

	1						 -$Q)\JJ	 -Q),,,|\11r[   c                 L   d |                      d          D             }d}t          t          |d                   t          |d                             }t          |dz            |d<   d|d         dz  z  }||d         }|d         }	|dd          D ]~}
|
d	k    rd
} nst	          |
                              dd          |t	          ||z                                |d         dk    rdndd          <   |                    |           |dz  }nt          |d         d          }t          |d         d          }	|d         dk    r|dd          D ]~}
|
d	k    rd
} nst	          |
                              dd          |t	          ||z                                |d         dk    rdndd          <   |                    |           |dz  }nt          |d         d          }dt          dt          |d                             z  }d
}||	k    rt	          ||z                                dd          |t	          ||z                                |d         dk    rdndd          <   |                    |           |dz  }|dz  }||	k    |rd n||	fS )Nc                     g | ]}||S  rx   .0r3   s     r6   
<listcomp>z!parse_bfrange.<locals>.<listcomp>      
)
)
)q
)1
)
)
)r[   rN   Fr   r   r!   r   s   %%0%dXre   Tr   surrogatepassr      rd         )rP   maxrj   r   r   decodeappendrG   )rX   r1   r2   rV   lstclosure_foundnbifmtrY   bsqcfmt2s                r6   rt   rt     s    *
)aggdmm
)
)
)CM
c#a&kk3s1v;;
'
'Ca==HRL
x|a'
(COOabb' 	 	BTzz $ "$$[/BB #'""))!)"!2!2II#  QFAAAOOAOOq6T>>!""g  ::$(ME bMM((oFF cAg&&--%-b\Q%6%6		K'    ###QCFBAs1c#a&kk222D Mq&& dQh''..{OLL cAg&&--%-b\Q%6%6		K'    ###QQ q&& !,44q!f,r[   c                 H   d |                      d          D             }t          |d                   dz  |d<   t          |          dk    rd}|d         dk    rDt          |d                                       t          |d                   d	k     rd
ndd          }||t          |d                                       |d         dk    rd
ndd          <   |                    t          |d         d                     |dd          }t          |          dk    d S d S )Nc                     g | ]}||S rx   rx   ry   s     r6   r{   z parse_bfchar.<locals>.<listcomp>J  r|   r[   rN   r   r!   r   r   r   rc   r   r   r   r}   r~   )rP   rj   r   r   r   rG   )rX   r1   r2   r   map_tos        r6   ru   ru   I  s!   
)
)aggdmm
)
)
)Cs1v;;!#HRL
c((Q,,q6T>>s1v&&-- Q[[1__		+ F 	 	c!f$$%b\Q..		K 	

 	SVR)))!""g c((Q,,,,,,r[   c                    |dz  }g }i }d}d| v rl| d         d                                          }	 t          t          |d                   |d<   n# t          $ r d|d<   Y nw xY wd|v rt	          |d                   }ng }t          |          dk    r|d         }|d         }t          |t                    r)t          ||          D ]}	|d         ||	<   |d	d          }n`t          |t                    r|D ]}
|
||<   |dz  }|dd          }n1t          d
|d         
                                z   t                     nt          |          dk    	 ||         }n!# t          $ r |d         dz  }Y n	w xY wd| v r t	          | d                   }	 t          t          | d                   }t          t          | d                   }||k    s||k     rt          d          |||z
           dk    rt          d          |||z
           }no# t          $ rb d| v r,dt          t          | d                   v r| d         d         }n/d}d}|D ]}	|	dk    r
||	z  }|dz  }|t          d|          z  dz  }Y nw xY w|S )Nr!   r   z/DescendantFontsz/DWr   g     @@z/Wr   r   zunknown widths : 
g       @z/Widthsz
/FirstCharz	/LastCharzNot in rangez
null widthz/FontDescriptorz/MissingWidth)rC   r
   r,   r)   rH   rj   r%   rG   rB   r   __repr____name__r   r   )r-   r/   r   r5   ww1stft1secondr3   yenmcpts                 r6   r+   r+   \  s$    "AoH
A	BBR#$Q'2244	%U,,BrFF 	 	 	BrFFF	3;;SYAAA!ffqjj1BqTF&#&& r6** ! !AaDBqEEabbEFD)) 
  ABrF!GBBabbE)SY,@,@,B,BB   # !ffqjj$	*~HH 	 	 	2 HH	 
bI	/c2l+,,B3;00BJ"z/////b!Q&&---b)HH 	/ 	/ 	/ B&&?d "%6"7? ? , , /0A  ! !A1uuQqs1c{{?Q.	/ Os7   A A#"A#E! !E:9E:A:H A)I?>I?)+rE   binasciir   mathr   typingr   r   r   r   r	   r
   _codecsr   r   _utilsr   errorsr   genericr   r   r   r"   r,   rG   r7   r&   rA   rB   r9   __annotations__r<   r(   r#   r$   bytesrO   boolrQ   rt   ru   r+   rx   r[   r6   <module>r      s                6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 3 3 3 3 3 3 3 3 " " " " " " " " " " " " H H H H H H H H H H77!&7-=7
c4S>)*D2BB7 7 7 7x DUU3ZZ%3	'	'((	S %UE#tCH~*=$>S#XNO    $ $ $sCx.   ..S. C. 	.
 #. s. c. #. . S. #C. . C. 3. .  S!." s#.$ S%. . DcN   ,= = &)= 
5d38n$%s*+=  =  =  = @++&)+
4S>3S	)*+ + + +:$# $ $ $ $ $N222 2 eCHo-.	2
 38n2 Cy2 4uT5c?23342 2 2 228-8-38n8- Cy8- eCHo-.	8-
 4sCx !8- 8- 8- 8-vE T#s(^ S	 d    &AA&)A8=A
A A A A A Ar[   