
    HAiI                        % S SK r S SK Jr  S SK Jr  S SKJr  S SKJrJrJ	r	J
r
JrJr  SSKJrJr  SSKJrJr  SS	KJrJrJrJrJrJr  S
\S\S\S\
\\\\\\\4   4   \\\4   \4   4S jrS\S\S\
\\\\\\\4   4   \\\4   4   4S jrSS\RA                  \!" S5      S5      0 4r"\
\\\\\\\4   4   \\\4   4   \#S'   0 SS_SS_SS_SS_SS_SS_SS_S S_S!S"_S#S"_S$S%_S&S%_S'S%_S(S%_S)S_S*S_S+S"_S,S"0Er$\\\4   \#S-'   0 S.S/_S0S/_S1S/_S2S/_S3S4_S5S4_S6S4_S7S4_S8S9_S:S9_S;S9_S<S9_S=S>_S?S>_S@S>_SAS>_SBS>_SCS40Er%\\\4   \#SD'   S\S\
\\\\\4   4   \\\4   4   4SE jr&S\S\\\\\4   4   4SF jr'S\S\
\\\4   \	\   4   4SG jr(SH\SI\\\\\4   4   SJ\\\4   S\4SK jr)S\S\*4SL jr+SM\*SN\,SO\,SP\S\
\\4   4   SJ\\\4   SQ\	\   S\
\,\,\S\
\\4   4   4   4SR jr-SM\*SJ\\\4   SQ\	\   SP\S\
\\4   4   S\S\
\\4   4   4
SS jr.SM\*SJ\\\4   SQ\	\   SS4ST jr/S\SU\S\\\4   4SV jr0SW\\\4   SX\S\4SY jr1SW\\\4   SZ\S\4S[ jr2S\SJ\\\4   SQ\	\   S\
\\\4   \	\   4   4S\ jr3g)]    N)Error)	unhexlify)ceil)AnyDictListTupleUnioncast   )adobe_glyphscharset_encoding)logger_errorlogger_warning)ArrayObjectDecodedStreamObjectDictionaryObject
NullObjectStreamObjectis_null_or_none	font_namespace_widthobjreturnc                 >    US   S   U    n[        X5      u  pEpgXEXgU4$ )a{  
Determine information about a font.

Args:
    font_name: font name as a string
    space_width: default space width if no data is found.
    obj: XObject or Page where you can find a /Resource dictionary

Returns:
    Font sub-type, space_width criteria (50% of width), encoding, map character-map, font-dictionary.
    The font-dictionary itself is suitable for the curious.

z
/Resourcesz/Font)build_char_map_from_dict)r   r   r   ftfont_subtypefont_halfspacefont_encodingfont_maps           G/var/www/html/land-ocr/venv/lib/python3.13/site-packages/pypdf/_cmap.pybuild_char_mapr#      s9      |,W5i@B<T=9L- "DD    r   c                     [        [        US   R                  5       5      n[        U5      u  p4[	        SX45      n[        XS-  5      n[        Xe5      S-  nUUUU4$ )aG  
Determine information about a font.

Args:
    space_width: default space with if no data found
         (normally half the width of a character).
    ft: Font Dictionary

Returns:
    Font sub-type, space_width criteria(50% of width), encoding, map character-map.
    The font-dictionary itself is suitable for the curious.

/Subtype        @)r   str
get_objectget_encodingget_actual_str_keybuild_font_width_mapcompute_space_width)r   r   	font_typeencodingmap_dictspace_key_charfont_width_maphalf_space_widths           r"   r   r   +   sm      S"Z.3356I%b)H'X@N)"C.?@N*>JSP 	 r$   Unknowni'     u   �unknown_char_mapz/Identity-H	utf-16-bez/Identity-Vz	/GB-EUC-Hgbkz	/GB-EUC-Vz/GBpc-EUC-Hgb2312z/GBpc-EUC-Vz
/GBK-EUC-Hz
/GBK-EUC-Vz/GBK2K-Hgb18030z/GBK2K-Vz
/ETen-B5-Hcp950z
/ETen-B5-Vz/ETenms-B5-Hz/ETenms-B5-Vz/UniCNS-UTF16-Hz/UniCNS-UTF16-Vz/UniGB-UTF16-Hz/UniGB-UTF16-V_predefined_cmapz/CourieriX  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/ZapfDingbats_default_fonts_space_widthc                     [        U 5      n[        U 5      u  p#[        U[        5      (       a  U H  nUS::  d  M  [	        U5      X'   M     X4$ )N   )_parse_encoding_parse_to_unicode
isinstancedictchr)r   r0   r1   	int_entryxs        r"   r+   r+      sQ     r"H+B/H (D!!ACx!!f  r$   c                    / nSU ;  a]  SU ;   aS  [        [        U S   5      [        ;   a8  [        [	        [        S5      [        [        [        U S   5         5      5      nU$ SnU$ [        [        [        [        [        4   U S   R                  5       5      n[        U[        5      (       aK   U[        ;   a  [        U   R                  5       nOU[        ;   a
  [        U   nOpSU;   a  SnOg[        S5      e[        U[        5      (       a0  S
U;   a*   [        [        [        US
   5         R                  5       nO[        S   R                  5       n[        U[        5      (       a[  SU;   aU  Sn[        [        US   5       H<  n[        U[         5      (       a  UnM   U[#        U5      :  a  [$        U   X'   US-  nM>     [        U[&        5      (       a  [        [	        [        S5      U5      5      nU$ ! [         a    [        SU S	3[        5        Un Nf = f! [         a/    [        SU S	3[        5        [        S   R                  5       n GNf = f! [         a    XAU'    Nf = f)Nz	/Encoding	/BaseFontr6   charmapz-UCS2-r8   z	not foundzAdvanced encoding z not implemented yetz/BaseEncodingz/StandardEncodingz/Differencesr   r   )r   r)   r   rF   zipranger
   r   r   r*   rE   copyr=   	Exceptionr   __name__intlenr   list)r   r0   encrI   os        r"   rC   rC      sT    79H""c2k?!;?O!OE#J 0c2k?1K LMH
  !H48c#Z/0"[/2L2L2N5C #s	 &&+C0557((+C0S&,, 
C)	*	*#/E	D'S#o2F(GHMMOH $$78==?#'((^s-B&N(;<A!S!!$3x=(&21o Q = (D!!E#J12O;  	-cU2FGRH	  	D$XJ.BC ((;<AACH	D$ ! $"#QK$sH   /!G: G: %G: .G: (H  "I: HH 5III-,I-c           	          0 n/ nSU ;  a&  U R                  SS5      S:X  a  [        XU5      $ 0 / 4$ SnSnS n[        U 5      nUR                  S5       H%  n[	        UR                  S5      UUUUU5      u  p4nM'     X4$ )N
/ToUnicoder&    z/Type1F   
s    	)get_type1_alternative
prepare_cmsplitprocess_cm_linestrip)r   r1   rH   
process_rgprocess_charmultiline_rgcmlines           r"   rD   rD      s    
  "H I266*b!X-%bI>>2vJL 	  
BB1@JJv2
.
,   r$   
value_charr0   r1   c                 ,   0 n[        U[        5      (       a6  UR                  5        VVs0 s H  u  pEXP:X  d  M  U[        U5      _M     nnnO+UR                  5        VVs0 s H  u  pEXP:X  d  M  XT_M     nnnUR	                  X 5      $ s  snnf s  snnf )N)rE   rF   itemsrG   r[   )rf   r0   r1   key_dictkeyvalues         r"   r,   r,      s     H(D!!6>nn6F^6F
%J]OE3s8O6F^191AY1A:3UEXJEJ1AY<<
// _Ys   B
B
!B0Bc                     U S   n[        U[        5      (       a"  [        [        U S   5      R	                  5       nOSn[        U[
        5      (       a  UR                  5       nUR                  5       R                  SS5      R                  SS5      R                  SS5      R                  S	S
5      R                  SS5      R                  SS5      nUR                  S5      n[        [        U5      5       HP  nX4   R                  S5      nUS:  d  M  US:X  a  SnOX4   S U R                  SS5      nUS-   X4   US-   S  -   X4'   MR     SR                  U5      R                  SS5      R                  SS5      R                  SS5      nU$ )NrX   s,   beginbfrange
<0000> <0001> <0000>
endbfrange   beginbfchars   
beginbfchar
	   endbfchars   
endbfchar
   beginbfranges   
beginbfrange

   endbfranges   
endbfrange
s   <<s   
{
s   >>s   
}
   <   >r      .    r$   r      [s    [    ]s    ]
    rZ   )rE   r   r   r   get_datar)   encoder`   replacer^   rN   rS   findjoin)r   turd   llijcontents          r"   r]   r]      sh   	L	B"l##%r,'78AAC ?"cYY[ 	
	!3	4	/	0	"5	6	 1	2		!		!  
$B3r7^EJJt6Av %)++D#6dNRU1q57^3BE  
2	v		x	 			  Ir$   re   ra   rb   rc   rH   c                 \   U S:X  d	  U S   S:X  a  XU4$ U R                  SS5      n SU ;   a  SnOCSU ;   a  S	nO:S
U ;   a  SnO1SU ;   a  S	nO(U(       a   [        XXS5      nOU(       a  [        XU5        XU4$ ! [        R                   a!  n[	        SU < SU 3[
        5         S nAN4S nAff = f)Nr$   r   %      	rt   ro   Trp   Frm   rn   zSkipping broken line z: )rz   parse_bfrangebinasciir   r   rQ   parse_bfchar)re   ra   rb   rc   r1   rH   errors          r"   r_   r_   #  s     s{d1gm55<<t$D$
	$	
	4					P(QL 
TY/\11	 ~~ 	P24("UGDhOO	Ps   A6 6B+
B&&B+c                 l   U R                  S5       Vs/ s H  oD(       d  M  UPM     nnSnUb  SUS   S-  -  nUS   nUS   n	U Hh  n
U
S:X  a  S	n  GO[        U
5      R                  S
S5      U[        Xx-  5      R                  US   S:X  a  SOS
S5      '   UR                  U5        US-  nMj     GOq[	        US   S5      n[	        US   S5      n	[        [        US   5      [        US   5      5      n[        US-  5      US'   SUS   S-  -  nUS   S:X  aq  USS   Hg  n
U
S:X  a  S	n  O[        U
5      R                  S
S5      U[        Xx-  5      R                  US   S:X  a  SOS
S5      '   UR                  U5        US-  nMi     O[	        US   S5      nS[        S[        US   5      5      -  nS	nX::  ah  [        X-  5      R                  S
S5      U[        Xx-  5      R                  US   S:X  a  SOS
S5      '   UR                  U5        US-  nUS-  nX::  a  Mh  U(       a  S $ X4$ s  snf )Nrt   Fs   %%0%dX   r   r   rv   Tr8   surrogatepassrL      ru         )r^   r   decodeappendrR   maxrS   r   )re   r1   rH   rc   rI   lstclosure_foundfmtabsqnbicfmt2s                 r"   r   r   @  sy    jj&
,&!1&C
,M8B<!+,OOBTz $ "$$[/B #'"))!)"!2I# QFA  AOAO#c!f+s3q6{+C!G}8B<!+,q6T>!"g:$(M bM((oF cg&--%-b\Q%6	K'   #Q  CFBAs1c#a&k22D M& dh'..{OL cg&--%-b\Q%6	K'   #QQ & !4,qf,g -s
   
H1H1c                 J   U R                  S5       Vs/ s H  o3(       d  M  UPM     nn[        US   5      S-  US'   [        U5      S:  a  SnUS   S:w  a3   [        US   5      R                  [        US   5      S:  a  S	OS
S5      nUU[        US   5      R                  US   S:X  a  S	OS
S5      '   UR                  [        US   S5      5        USS  n[        U5      S:  a  M  g g s  snf ! [         a&  n[        SU< SUS   < S3[        5         S nANS nAff = f)Nrt   r   r   r   r   rY   rs   r   rL   r8   r   zGot invalid hex string: z ()r   )	r^   rS   r   r   BinasciiErrorr   rQ   r   rR   )re   r1   rH   rI   r   map_to	exceptions          r"   r   r   |  s.   jj&
,&!1&C
,s1v;!#HRL
c(Q,q6T>`"3q6*11!$SVqIk? 	 	c!f$$%b\Q.	K	

 	SVR)!"g! c(Q, - ! `!9)bQ
RSTV^__`s"   
C-C-2C2 2
D"<DD"default_font_widthc                    0 nSnSn [         [        [        U S   R                  5       5         S-  nSU ;   Ga  U S   S   R                  5       nSU;   a%  [        [
        US   R                  5       5      US'   OXS'   SU;   a  US   R                  5       nO/ n[        U5      S:  GaK  [        US   [        5      (       a  US   OUS   R                  5       nUS   R                  5       n[        U[        5      (       as  UnUS	   R                  5       n[        U[        [
        45      (       d  [        S
U S3[        5        USS  nM  [        X4S-   5       H  n	X[        U	5      '   M     USS  nOn[        U[        5      (       a3  Un	U H%  n
U
R                  5       nX[        U	5      '   U	S-  n	M'     US	S  nO&[        SUS   R                  5       -   [        5        GO[        U5      S:  a  GMK  OSU ;   a  [        [        U S   R                  5       5      nSU ;   a1  S[        [         U S   5      ;   a  U S   S   R                  5       US'   O@SnSnU H$  nUR                  5       nUS:  d  M  X-  nUS-  nM&     U[#        SU5      -  US'   [        [        U S   5      n[        [        U S   5      n[        X4S-   5       H&  n	 XiU-
     R                  5       nX[        U	5      '   M(     ['        UR)                  S5      5      (       a  U(       a  UOSUS'   U$ ! [         a     GNf = f! [$        [        4 a     M}  f = f)Nr   rK   r(   z/DescendantFontsz/DWdefaultz/Wr   r   z&Expected numeric value for width, got z. Ignoring it.r   zunknown widths : 
z/Widths/FontDescriptorz/MissingWidthz
/FirstCharz	/LastChar        )r@   r   r)   r*   KeyErrorfloatrS   rE   rR   r   rQ   rN   rG   rT   __repr__r   r   r   
IndexErrorr   r[   )r   r   r3   stenft1wsecondwidthc_codewwmcptxxs                 r"   r-   r-     sS    (*NBB7S"[/B\B\B^8_`cff R #$Q'224C<(,UCJ4I4I4K(LN9%(:9%3;D	$$&AA!fqj#AaD#..1AaDOO4EBqT__&F&#&&!)!%#u66"%KE7R`#ackl!"A#BQ/F273v;/ 0abEFD)) BMMOE273v;/aKF ! abE)SY,@,@,BB 7 !fqj8 
bbm6689"$b!23;
 (
 )++<(=o(N(Y(Y([N9% AC]]_6GA1HC	 
 )*C3KN9%#r,'(#r+'BQ'F2+113.3s6{+ ( ~)))455:L$6RUy!O  B )  s#   +L" "L3"
L0/L03MMr3   
space_charc                 r     X   nUS:X  a  [        S5      e U$ ! [        [         4 a    U S   S-  n U$ f = f)Nr   z
Zero widthr   r(   )
ValueErrorr   )r3   r   sp_widths      r"   r.   r.     s\    
!-q=\**  O j! 
9%+ 	 O
s    66charc                 @    Sn X   nU$ ! [          a	    U S   n U$ f = f)Nr   r   )r   )r3   r   
char_widths      r"   compute_font_widthr     sD     J
#)
   
9% 	 
s   
 c           	         SU ;  a  X4$ [        [        U S   5      R                  S5      n[        U5      (       a  X4$ Uc   S5       eUR	                  5       R                  5       nUR                  S5      S   nUR                  S5      S   nUR                  SS	5      R                  S	5      nU H  nUR                  S
5      (       d  M  UR                  S5       Vs/ s H  owS:w  d  M
  UPM     nn[        U5      S:  a  US   S:w  a  M]   [        US   5      n	 [        US   R                  5          n
X[        U	5      '   UR!                  U	5        M     X4$ s  snf ! [         a     M  f = f! [         aO    US   R                  S5      (       a1   [        [        US   SS  S5      5      n
 N|! [         a      GM  f = f GM  f = f)Nr   z	/FontFilemypys   eexec
r   s	   /Encodingr   rw   rZ   s   duprt   r$   r   s   putr   s   /unir   r   )r   r   r[   r   r*   rx   r^   rz   
startswithrS   rR   r   r   r   r   rG   r   )r   r1   rH   ft_desctxtlinesli_wwordsr   vs              r"   r\   r\     s   
 """#R(9%:;??LGw""&&




'
'
)C
))J

"C
))L
!!
$CKKu%++E2E==  "$((4.>.B#IR.E>5zA~%(f"4aM	 q!23  !SVQ) * ' ?
    8&&w//!E!HQRL" 56% ! ! sN    	E-EE#E4#
E10E14#GF55
G?GGGG)4r   r   r   r   mathr   typingr   r   r   r	   r
   r   _codecsr   r   _utilsr   r   genericr   r   r   r   r   r   r)   r   rR   r#   r   rF   fromkeysrN   r7   __annotations__r=   r@   r+   rC   rD   r,   bytesr]   boolr_   r   r   r-   r.   r   r\    r$   r"   <module>r      s    +   6 6 3 0 EE!&E-=E
3uS$sCx.014S>CSSTE.,
3uS$sCx.014S>ABD MM%*e$	S %UE#tCH~*=$>S#XNO $;$;$ $ 	$
 8$ 8$ %$ %$ 	$ 	$ '$ '$ G$ G$ {$  {!$" i#$$ i%$ $sCx. ...S. C. 	.
 #. s. c. #. . S. #C. . C. 3. .  S!." s#.$ S%. DcN ,
5d38n$%tCH~56$88
3S#X8v
4S>49$%B00$S$sCx.%890EI#s(^00&# & &R2
22 2 eCHo-.	2
 38n2 Cy2 4uT5c?23342:9-
9-38n9- Cy9- eCHo-.	9-
 4sCx !9-xu S#X 49 QU ,OO.3O	#u*Ode$25
e$
 $$38n$ Cy$ 4S>49$%	$r$   