
    jMF                        U 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mZmZ ddlmZmZ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ef         ef         fdZd	ededeeee	eeeef         f         eeef         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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<   ded1edee	eeeef         f         ef         fd2Z$ded1edeeeef         eee         f         fd3Z%dede&fd4Z'd5e&d6e(d7e(d8e	d9eeef         f         d:eeef         d;ee         dee(e(e	d9eeef         f         f         fd<Z)d5e&d:eeef         d;ee         d8e	d9eeef         f         de	d9eeef         f         f
d=Z*d5e&d:eeef         d;ee         dd9fd>Z+ded1ed	edefd?Z,ded:eeef         d1ed;ee         deeeef         eee         f         f
d@Z-d9S )A    )	unhexlify)ceil)AnyDictListTupleUnioncast   )adobe_glyphscharset_encoding)b_logger_errorlogger_warning)DecodedStreamObjectDictionaryObjectIndirectObject
NullObjectStreamObject	font_namespace_widthobjreturnc                 b    |d         d         |          }t          ||          \  }}}}|||||fS )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           U/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/pypdf/_cmap.pybuild_char_mapr"      sH     |,W5i@B<TR= =9L.- "DD    r   c                    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 )aj  
    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   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   	font_type
space_codeencodingmap_dict	int_entryxspsp_widths
             r!   r   r   '   s    #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$   &B; ;
CC!C= =3D32D3Unknowni'  r-   u   �unknown_char_mapr*   gbkgb2312gb18030)
z/Identity-Hz/Identity-Vz	/GB-EUC-Hz	/GB-EUC-Vz/GBpc-EUC-Hz/GBpc-EUC-Vz
/GBK-EUC-Hz
/GBK-EUC-Vz/GBK2K-Hz/GBK2K-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/ZapfDingbatsr5   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d|v rd	}nt          d
          n# t          $ r t          d| dt                     |}Y nw xY wt          |t                    rd|v r	 t          t          t          |d                            
                                }ng# t          $ r; t          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%   /Type1r'   z-UCS2-r*   z	not foundzAdvanced encoding z not implemented yetz/BaseEncodingz/StandardCodingz/Differencesr    r   )r
   r/   r   r3   zipranger5   r6   
get_objectr2   copyrG   r   __name__r   intr   list)r   r;   r<   encr?   os         r!   r0   r0      sa    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S&,,, 	 	 	GcGGGRRRHHH	 
C)	*	* 
>#/E/E	B'S#o2F(G(GHMMOOHH 	B 	B 	B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           	      r   i }g }d| vr1|                      dd          dk    rt          | |||          S i |g fS d}d}d }t          |           }|                    d          D ]-}t	          |                    d          |||||          \  }}}.|                                D ]\  }	}
|
dk    r|	}|||fS )	N
/ToUnicoder%   r'   rK   F   
s    	rL   )gettype1_alternative
prepare_cmsplitprocess_cm_linestripitems)r   r;   r=   r>   
process_rgprocess_charmultiline_rgcmlineavalues              r!   r1   r1      s    
  "H I266*b!!X--$R:yIIIz2%%JL 	  
BB 
 
1@JJv2
 2
.
L,, NN$$  5C<<JZ**r#   c                 V   | d         }t          |t                    r;t          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 )NrW   z	/Identitys,   beginbfrange
<0000> <0001> <0000>
endbfrange   beginbfchars   
beginbfchar
	   endbfchars   
endbfchar
   beginbfranges   
beginbfrange

   endbfranges   
endbfrange
s   <<s   
{
s   >>s   
}
   <   >r      .    r#   r      [s    [    ]s    ]
    rX   )r2   r   r   r
   r   get_datar/   
startswithr7   r^   replacer\   rN   lenfindjoin)r   turc   llijcontents          r!   r[   r[      s   	L	B"l## ?("\*:;;DDFFGG	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#   rd   r`   ra   rb   Nr=   r>   c                     | dk    s| d         dk    r|||fS |                      dd          } 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 )Nr#   r   %      	ro   rj   Trk   Frh   ri   )ru   parse_bfrangeparse_bfchar)rd   r`   ra   rb   r=   r>   s         r!   r]   r]   %  s     s{{d1gmm<55<<t$$D$

	$		

	4						 0$T8YMM	 0T8Y///|\11r#   c                 h   d |                      d          D             }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          }t          t          |d                   t          |d                             }
t          |
dz            |d<   d|d         dz  z  }|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  r   .0r?   s     r!   
<listcomp>z!parse_bfrange.<locals>.<listcomp>E      
,
,
,!
,1
,
,
,r#   ro   Fs   %%0%dXr(   r.   r   r   rq   Tr*   surrogatepassr)      rp         )r\   r   decodeappendrR   maxrv   r   )rd   r=   r>   rb   lstclosure_foundfmtre   bsqnbicfmt2s                r!   r   r   ?  s    -
,djj&&
,
,
,CM8B<!+,OOabb' 	 	BTzz $ "$$[/BB #'""))!)"!2!2II#  QFAAAOOAOO#c!f++s3q6{{++C!G}}8B<!+,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 r   r   r   s     r!   r   z parse_bfchar.<locals>.<listcomp>|  r   r#   ro   r   r.   r(   r   r'   rn   r   r)   r*   r   r   )r\   rv   r   r   r   rR   )rd   r=   r>   r   map_tos        r!   r   r   {  s#   
,
,djj&&
,
,
,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 r| 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	t          |d         t                    r|d         n|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t          |t                    r/|                                 }|t          |t                    rdS |S |S )Ng       @r   z/DescendantFontsz/DWr(   g     @@z/Wr   r.   r   zunknown widths : 
z/Widthsz
/FirstCharz	/LastCharzNot in rangez
null width/FontDescriptorz/MissingWidthg        )rO   r
   r9   r6   rS   rv   r2   rR   rN   r   __repr__rQ   r   r   r   r   )r   r;   r   rA   ww1stft1secondr?   yenmcptr   s                  r!   r8   r8     s    "C'H
A	BBR#$Q'2244	%U,,BrFF 	 	 	BrFFF	3;;SYAAA!ffqjj#AaD#..E1AaDOO4E4EBqT__&&F&#&& 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.	/ (N++ 
 !!##;*S*55;3
Os7   A A#"A# F* *GG!A:I A)KKc           	      N   d| vr|||fS t          t          | d                                       d          }||||fS |                                                                }|                    d          d         }|                    d          d         }|                    dd                              d          }|D ]Z}|                    d	          rAd
 |                    d          D             }t          |          dk    r|d         dk    rX	 t          |d                   }	n# t          $ r Y {w xY w	 t          |d                                                  }
nm# t          $ r` |d                             d          r?	 t          t          |d         dd          d                    }
n# t          $ r Y Y w xY wY Y nw xY w|d                                         dk    r|	}|
|t          |	          <   |                    |	           \|||fS )Nr   z	/FontFiles   eexec
r   s	   /Encodingr   rr   rX   s   dupc                     g | ]
}|d k    |S )r#   r   )r   _ws     r!   r   z%type1_alternative.<locals>.<listcomp>  s    >>>BB#IIRIIIr#   ro   r   s   putr.   s   /unir   r   )r
   r   rY   rO   rs   r\   ru   rt   rv   rR   
ValueErrorr   r   KeyErrorr4   r   )r   r=   r;   r>   ft_desctxtlinesliwordsr{   vs              r!   rZ   rZ     sR    ""Y..#R(9%:;;??LLGY..





'
'
)
)C
))J


"C
))L
!
!!
$CKKu%%++E22E    ==   	 >>"((4..>>>E5zzA~~%(f"4"4aMM   	 q!2!23   8&&w// !E!HQRRL" 5 566% ! ! ! ! H	  Qx  D((
 HSVVQZ**sH   D55
EE%E,,%G+F>=G>
GGGGG).binasciir   mathr   typingr   r   r   r   r	   r
   _codecsr   r   _utilsr   r   r   genericr   r   r   r   r   r/   r9   rR   r"   r   r3   rM   rN   rC   __annotations__rG   r5   r0   r1   bytesr[   boolr]   r   r   r8   rZ   r   r#   r!   <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 4 4 4 4 4 4 4 4 4 4             EE!&E-=E
3uS$sCx.014S>CSSTE E E E,>>,>
3uS$sCx.014S>AB> > > >F 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	)*"+ "+ "+ "+J&# & & & & &R2
22 2 eCHo-.	2
 38n2 Cy2 4uT5c?23342 2 2 249-
9-38n9- Cy9- eCHo-.	9-
 4sCx !9- 9- 9- 9-xu S#X 49 QU    &LL&)L8=L
L L L L^&+&+38n&+ &+ Cy	&+
 4S>3S	)*&+ &+ &+ &+ &+ &+r#   