
    j:j}                       S SK Jr  S SKJr  S SKJrJr  S SKJrJ	r	J
r
  S SKJrJrJrJrJrJrJrJrJr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJr  \(       a  S SKJ r   S SK!J"r"  S SK#J$r$  S SK%J&r&  SSK'J(r(   S SK)J*r*  Sr+Sr-Sr.Sr/Sr0Sr1Sr2Sr3Sr4\" SS9 " S S5      5       r5\" SS9 " S S5      5       r6\ " S  S!5      5       r7g"! \, a    Sr+ NPf = f)#    )annotations)Sequence)	dataclassfield)TYPE_CHECKINGAnycast)	ArrayObjectDictionaryObjectFloatObjectIndirectObject
NameObjectNumberObject	PdfObjectStreamObjectTextStringObject   )get_encodingadobe_glyphs)logger_warning)	FontFlags)PdfReadError)BytesIO)table__h_e_a_d)table__p_o_s_t)table_O_S_2f_2)	PdfWriter)TTFontTF            	   
      )frozenc                      \ rS rSr% SrSrS\S'   SrS\S'   SrS\S'   Sr	S	\S
'   Sr
S	\S'   SrS	\S'   SrS	\S'   SrS	\S'   SrS\S'   \" S S9rS\S'   SrS\S'   SS jrSrg) FontDescriptor4   z
Represents the FontDescriptor dictionary as defined in the PDF specification.
This contains both descriptive and metric information.

The defaults are derived from the mean values of the 14 core fonts, rounded
to 100.
Unknownstrnamefamilyweightg     @floatascent      idescentg     @
cap_heightg     @@x_height        italic_angle    intflagsc                     g)N)g      Yr2        @@g      @ r=       A/var/www/website/venv/lib/python3.13/site-packages/pypdf/_font.py<lambda>FontDescriptor.<lambda>H   s    Lkr>   default_factoryz!tuple[float, float, float, float]bboxNzStreamObject | None	font_filec                   [        [        S5      [        S5      [        S5      [        SU R                   35      [        S5      [        U R                  5      [        S5      [        U R                   Vs/ s H  n[        U5      PM     sn5      [        S5      [        U R                  5      [        S5      [        U R                  5      [        S	5      [        U R                  5      [        S
5      [        U R                  5      [        S5      [        U R                  5      0	5      nU R                  (       a  U R                  U[        S5      '   U$ s  snf )N/Type/FontDescriptor	/FontName//Flags	/FontBBox/ItalicAngle/Ascent/Descent
/CapHeight/XHeight
/FontFile2)r   r   r-   r   r:   r
   rD   r   r7   r1   r3   r4   r5   rE   )selfnfont_descriptor_resources      r?   as_font_descriptor_resource*FontDescriptor.as_font_descriptor_resourceK   s    #3w,=!>{#Z!DII;%@x ,tzz":{#[$))1T)Q+a.)1T%U~&D4E4E(Fy!;t{{#;z"K$=|$k$//&Bz"K$>
5
 
$  >>AE$Z%=>'' 2Us   6Er=   returnr   )__name__
__module____qualname____firstlineno____doc__r-   __annotations__r.   r/   r1   r3   r4   r5   r7   r:   r   rD   rE   rV   __static_attributes__r=   r>   r?   r)   r)   4   s     D#FCFCFEGUJHeL%E3O.3Dk.lD
+l%)I")(r>   r)   c                  *    \ rS rSr% S\S'   S\S'   Srg)CoreFontMetrics_   r)   font_descriptordict[str, int]character_widthsr=   N)rZ   r[   r\   r]   r_   r`   r=   r>   r?   rb   rb   _   s    ##$$r>   rb   c                     \ rS rSr% SrS\S'   S\S'   \" \S9rS\S	'   S
r	S\S'   \" \
S9rS\S'   \" S S9rS\S'   SrS\S'   SrS\S'   SrS\S'   \          S*S j5       r\        S+S j5       r\      S,S j5       r\S-S j5       r\        S.S j5       r\S/S j5       r\    S0S j5       r\        S1S  j5       r\S2S! j5       rS3S" jrS4S# jrS5S$ jr        S6S% jrS7S8S& jjrS9S' jr S(r!g)):Fonte   a  
A font object for use during text extraction and for producing
text appearance streams.

Attributes:
    name: Font name, derived from font["/BaseFont"]
    character_map: The font's character map
    encoding: Font encoding
    sub_type: The font type, such as Type1, TrueType, or Type3.
    font_descriptor: Font metrics, including a mapping of characters to widths
    character_widths: A mapping of characters to widths
    space_width: The width of a space, or an approximation
    interpretable: Default True. If False, the font glyphs cannot
        be translated to characters, e.g. Type3 fonts that do not define
        a '/ToUnicode' mapping.

r,   r-   str | dict[int, str]encodingrB   dict[Any, Any]character_mapr+   sub_typer)   rd   c                 
    SS0$ )Ndefault  r=   r=   r>   r?   r@   Font.<lambda>~   s
    iQTEUr>   re   rf      zfloat | intspace_width 
space_charTboolinterpretablec                    [        [        U S   5      nU R                  SS5      n[        U5       H  u  pg[	        U5      U[        Xe-   5      '   M      g)zcParses a TrueType or Type1 font's /Widths array from a font dictionary and updates character widths/Widthsz
/FirstCharr   N)r	   r
   get	enumerater9   chr)pdf_font_dictchar_maprk   current_widthswidths_array
first_charidxwidths           r?   _collect_tt_t1_character_widths$Font._collect_tt_t1_character_widths   sN     Ky)AB"&&|Q7
#L1JC47JN3s/01 2r>   c                <   SnU R                  S[        5       5      R                  5       n[        U5      n[	        U5       GH  u  pgUR                  5       nU(       a  US-  nM$  [        U[        [        45      (       d  [        S[        US9  MP  US-   U:  a  XFS-      R                  5       OSn[        U[        5      (       as  XxpUR                  [        [        [        [        U	5      [        [        U	5      [        U
5      -   S5      U
5       VVs0 s H  u  p[        U5      U_M     snn5        SnM  [        U[        [        45      (       a  US-   U:  a  [        XFS-      R                  5       [        [        45      (       as  UUXFS-      R                  5       pn	UR                  [        [        [        U	5      [        [        US-   5      S5       Vs0 s H  n[        U5      U_M     sn5        SnGM  [        S[        US9  GM     gs  snnf s  snf )	zRParses the /W array from a DescendantFont dictionary and updates character widths.r   /Wr   z?Expected numeric value for width, got %(w_entry)s. Ignoring it.)sourcew_entryNr    z9Invalid font width definition. Last element: %(w_entry)s.)r{   r
   
get_objectlenr|   
isinstancer9   r0   r   rZ   r   updatezipranger	   r}   )d_fontr   r   
skip_count_w	_w_lengthr   r   w_next_entry	start_idx
width_list_cidx_widthstop_idxconst_widths                  r?   _collect_cid_character_widths"Font._collect_cid_character_widths   s    
ZZkm,779G	%bMLC((*Ga
gU|44 U##
 7:Qw7J2Ag;113PTL,11(/:%% .1! $S) 4 $S) 4s: F !
 '.
.ME E
F*.
 
 <#u66!Gi'r'{557#uFF  QwK**, &1	
 %% &+ i0$sHqL2I1&&E E
K/& 
 O##o *&
2s   HH
c                    Sn[        U [        5      (       a+  U R                  5        H  u  p4XB:X  d  M  [        U5      s  $    UR                  5        H  u  pTXB:X  d  M  [	        U5      s  $    U$ )Nru   )r   dictitemsr}   r,   )rk   rm   rv   	char_codechar_strglyph_ids         r?   _get_space_charFont._get_space_char   sj    
 
h%%'/~~'7#	)y>) (8 #0"5"5"7H%8}$ #8 r>   c                X   U (       d  SU S'   g X ;   aI  X   S:w  aA  U[         R                  -  [         R                  :X  a  X   U S'   g [        SX   -  5      U S'   g U R                  5        Vs/ s H  o3S:  d  M
  UPM     nnU(       a  [	        U5      [        U5      -  OSU S'   g s  snf )Nrq   rp   r   r    )r   FIXED_PITCHr9   valuessumr   )r   r:   rv   wvalid_widthss        r?   _add_default_widthFont._add_default_width   s    (+N9%'N,F!,K	---)2G2GG,:,Fy)(+A0J,J(KN9% $2#8#8#:D#:a!e#:DNZC$5\9J$J`cy! Es   .	B';B'c                    U R                  US5      nUS:w  a  U$ U[        R                  -  [        R                  :X  a  U S   $ U S   S-  $ )Nr   rp   r    )r{   r   r   )rf   r:   rv   rt   s       r?   _add_space_widthFont._add_space_width   sX     '**:q9!I)))i.C.CC#I..	*a//r>   c           
     z   0 nS H  u  p#X ;   d  M  X   X'   M     SU;   a6  [        [        [        US   5      5      n[        U5      S:X  d   U5       eXAS'   S H5  nX ;   d  M
  SU;   a  [	        SU  35      e X   R                  5       nXQS'   M7     U$ ! [         a  n[        S[        UU US9   S nAM\  S nAff = f)	N)
)rI   r-   )z/FontFamilyr.   )z/FontWeightr/   )rN   r1   )rO   r3   )rP   r4   )rQ   r5   )rM   r7   )rK   r:   )rL   rD   rD   r"   z	/FontFilerR   z
/FontFile3rE   z!More than one /FontFile found in zBFailed to get %(source_key)r in %(font_descriptor_obj)s: %(error)s)r   
source_keyfont_descriptor_objerror)tuplemapr0   r   r   r   r   rZ   )r   font_descriptor_kwargsr   
target_key
bbox_tuplerE   es          r?   _parse_font_descriptorFont._parse_font_descriptor  s    13'
"J 05H5T&2'
 ++s5*@*HIJJz?a'33'-76* DJ0"88&)JK^J_'`aa
 3 ? J J LI:C;7 D  &% $ "\'#-,? s   8B
B:B55B:c                0   SSK Jn  UR                  SS5      R                  S5      nUR                  SS5      R                  S5      n[	        U5      u  pVS n0 nSn	UR                  S5      S;   Ga  US	:X  a0  S
U;  a*  [        S UR                  S5      =(       d    /  5       5      n	U	(       Ga  SU;   a  U R                  XXX5        OX2;   a  X#   R                  n[        U[        5      (       aK  UR                  5        H6  u  pXU   R                  ;   d  M  X#   R                  U   U[        U
5      '   M8     OD[        S5       H5  n
[        U
5      nXU   R                  ;   d  M"  X#   R                  U   X'   M7     SU;   an  UR                  S[        5       5      R                  5       nSU;   a$  [!        ["        US   R                  5       5      US'   [%        S0 U R'                  U5      D6nGO'SU;   aI  [)        [+        [,        [!        [.        US   5      5      5      n[1        U5      S:X  d   U5       e[%        X=S9nO[3        [!        [.        US   5      5       H  u  p[!        [        UR                  5       5      nU[!        [.        US   5      U'   U R5                  XU5        SU;   a$  [!        ["        US   R                  5       5      US'   UR                  S[        5       5      R                  5       n[%        S0 U R'                  U5      D6nM     U(       d	  [%        US9nU R7                  XV5      nUR                  SS5      S:X  a  U R9                  XR:                  U5        U R=                  XR:                  U5      nU " UUUUUUUUU	S9	$ )Nr   )CORE_FONT_METRICS	/BaseFontr+   rJ   /SubtypeT)/Type1z/MMType1z	/TrueTypez/Type3Type3
/ToUnicodec              3  4   #    U  H  nU[         ;   v   M     g 7fNr   ).0cnames     r?   	<genexpr>*Font.from_font_resource.<locals>.<genexpr>M  s      $!F \)!Fs   z
/CharProcsrz      rH   z/MissingWidthrp   rL   r"   )r-   rD   /DescendantFonts/DW)r-   	r-   rn   rk   rd   rm   rf   rt   rv   rx   r=   )pypdf._codecs.core_font_metricsr   r{   removeprefixr   allr   rd   r   r   r   rf   r}   r   r   r   r	   r9   r)   r   r   r   r0   r
   r   r|   r   r   r   r:   r   )clsr~   r   r-   rn   rk   rm   rd   rf   rx   code	characterr   r   
d_font_idxr   rv   rt   s                     r?   from_font_resourceFont.from_font_resource7  s   
 	F   i8EEcJ $$Z;HHM".}"=+- Z(,YY
 7"|='H # $!.!2!2<!@!FB!F$ ! -77%h .&7&=&M&MO!(D11/7~~/?OD(d,C,T,TT>O>U>f>fgp>q 0T ; 0@
 %*#JD(+D	I(d,C,T,TT>O>U>f>fgp>q 0 ; %/ %5*7*;*;<MO_Oa*b*m*m*o'&*==6:3@STc@d@o@o@q6r(3&4&gs7Q7QRe7f&gO M1!&s5${MR]D^2_'`!aJz?a/;;/&4$&PO '0[-0B"CD'"
 .0A0A0CDSY[-0B"CDZP11+; F?26sF5M<T<T<V2W$Y/&,jj1BDTDV&W&b&b&d#"0"c33M3MNa3b"c' ,$7O((A
	1-2""#35J5JJW**+;=R=RT^_+'-#!'

 
	
r>   c                j   U(       a  UR                   nUR                  S-	  nSnU R                  [        -  (       d  U(       a+  UR                  [
        -  (       a  U[        R                  -  nU(       a%  UR                  nUS:w  a  U[        R                  -  nU(       a  WR                  [        :X  d  U(       a#  UR                  S:  a  U[        R                  -  nU(       a1  W[        :X  d  WR                  [        :X  a  U[        R                   -  nU(       aA  SWR"                  s=::  a  S::  d  O  SWs=::  a  S::  d  O  US:X  a  U[        R$                  -  nU(       a9  W[&        :X  d  WR                  [(        [*        1;   a  U[        R,                  -  nU$ U[        R.                  -  nU$ )	N   r   r6   r    r%   r   r#      )panosesFamilyClassmacStyleHEADER_MACSTYLE_ITALICfsSelectionOS2_FSSELECTION_ITALICr   ITALICitalicAnglebProportion!OS2_PANOSE_BPROPORTION_MONOSPACEDisFixedPitchr   OS2_SFAMILYSCLASS_SCRIPTSbFamilyTypeOS2_PANOSE_BFAMILYTYPE_SCRIPTSCRIPTbSerifStyleSERIFOS2_SFAMILYSCLASS_SYMBOLIC!OS2_PANOSE_BFAMILYTYPE_DECORATIVE OS2_PANOSE_BFAMILYTYPE_PICTORIALSYMBOLICNONSYMBOLIC)header
postscriptos2r   family_classr:   r7   s          r?   %_font_flags_from_truetype_font_tables*Font._font_flags_from_truetype_font_tables  sd    ZZF ++q0L ??33Rh@hY%%%E%11Ls"))) V''+LLJ33a7Y***E 559K9KOl9lY%%%E ##)r)L%A%):Y__$E 66#DFf"ggY'''E  Y***Er>   c                `   [         (       d  [        S5      e[        U5       nUS   nUS   nUS   R                  nUR	                  SS 5      nUR	                  SS 5      nUR
                  nU(       d  [        S5      eSU-  n	0 n
UR	                  S	S 5      nU(       a9  UR                  5       U
S	'   UR                  5       U
S
'   UR                  5       U
S'   [        [        UR                  U	-  S5      5      U
S'   [        [        UR                  U	-  S5      5      U
S'   U(       aK   [        [        UR                  U	-  S5      5      U
S'   [        [        UR                  U	-  S5      5      U
S'   U R#                  X6U5      U
S'   [        UR$                  U	-  S5      [        UR&                  U	-  S5      [        UR(                  U	-  S5      [        UR*                  U	-  S5      4U
S'   [-        5       nUR/                  5       nUR1                  U5        UR3                  [5        S5      [7        [9        U5      5      05        XS'   [;        S0 U
D6nSn0 n0 nUR=                  5       nUR	                  S5      nU(       a  UR?                  5       n[A        U5       H  u  nnUR	                  U5      nUc  M  [C        U5      nURE                  U5      nURG                  SS5      nURI                  SS5      nUUU'   [        [        UU   S   U	-  S5      5      UU'   M     O[        S5      eU RK                  UU5      nU RM                  UU
S   U5        U RO                  UU
S   U5      nS S S 5        U " WRP                  SWUWWWWSS9	$ ! [          a     GN(f = f! , (       d  f       N7= f) NzDThe 'fontTools' library is required to use 'from_truetype_font_file'headhheahmtxpostzOS/2z(Font file has an invalid unitsPerEm of 0r<   r-   r.   r/   r   r1   r3   r4   r5   r:   rD   z/Length1rE   	utf_16_becmapr    bigz	utf-16-besurrogatepassz$Font file does not have a cmap tableTrueTypeTr   r=   ))HAS_FONTTOOLSImportErrorr   metricsr{   
unitsPerEmr   getBestFullNamegetBestFamilyNamegetBestSubFamilyNamer9   roundr1   r3   
sCapHeightsxHeightAttributeErrorr   xMinyMinxMaxyMaxr   getvalueset_datar   r   r   r   r)   getGlyphOrderbuildReversedMinr|   r}   
getGlyphIDto_bytesdecoder   r   r   r-   )r   rE   tt_font_objectr   horizontal_headerr  r   r   units_per_emscale_factorr   namesfont_file_datafont_file_raw_bytesrd   rk   rf   rm   glyph_ordertt_font_cmap_tablereverse_cmapgidglyphr   char	gid_bytesgid_key_stringrv   rt   s                                r?   from_truetype_font_fileFont.from_truetype_font_file  s   }deeI.
 $F+F .v 6$V,44G (++FD9J $$VT2C ",,L"#MNN!L0L 68""&&vt4E161F1F1H&v.383J3J3L&x0383M3M3O&x0/259J9Q9QT`9`bc3d/e"8,03E:K:S:SVb:bde4f0g"9-;>uS^^VbEbde?f;g*<89<U3<<R^C^`a=b9c*:6 /2.W.WX^lo.p"7+ fkkL0!4fkkL0!4fkkL0!4fkkL0!4	."6* *^N"+"4"4"6##$78!!:j#9<L_H`;a"bc2@;/,F/EFO"H/1,.M(668K "0!3!3F!;!1BBD"+K"8JC , 0 0 7I ( y>D(33E:C #Q 6I%.%5%5k?%SN48M.17:5PQARUaAacd;e7f$^4 #9 ##IJJ,,X}EJ""#35KG5TV`a.. "8"A:K] d  %%+'-#!

 
	
e & A s2   DN)A
N3G;N
NNNN
N-c                z   0 n0 n[        U R                  [        5      (       aR  U R                  R	                  5        H1  u  p4[        U5      nXQU'   UR                  U R                  5      X%'   M3     X4$ U R                  R	                  5        H"  u  pd[        U5      nXqU'   [        U45      X''   M$     U R                  R	                  5        VVs0 s H  u  pdU[        U45      _M     nnnU R                  R	                  5        H'  u  p4X1U'   UR                  U[        U45      5      X#'   M)     X4$ s  snnf )z
Generates maps to translate input unicode text to bytes in two steps:
Unicode code point -> raw_character (reverse cmap) -> PDF bytes (encoding cmap).
)	r   rk   r,   rm   r   encoder}   bytesr{   )	rS   r   encoding_cmapr   unicode_charglyph_id_strcharacter_codecharacter_strunicode_to_bytess	            r?   _get_typographic_mapsFont._get_typographic_maps+  sC   
 dmmS))*.*<*<*B*B*D&"8}-9\*.:.A.A$--.P+ +E" ** 150C0C0E, #N 3-:\*/4n5F/G, 1F \`[h[h[n[n[p [p;W>e^$566[p    +/*<*<*B*B*D&-5\**:*>*>|UT\S^M_*`' +E ** s   D7c           	        / n/ nU R                   R                  5        H  u  p4[        U5      nUS::  d  M  [        U5      nUS nUS nUR                  SU SU S35        U R                  R                  X0R                  S   5      n	UR                  [        U5      [        [        U	5      /5      /5        M     [        5       n
U
R                  S[        U5       S3S	R                  U5      -   S
-   R                  S5      5        X4$ )Ni  04X<z> <>rp   z/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> def
/CMapName /Adobe-Identity-UCS def
/CMapType 2 def
1 begincodespacerange <0000> <FFFF> endcodespacerange
z beginbfchar

zH
endbfchar
endcmap
CMapName currentdict /CMap defineresource pop
end endascii)rm   r   ordappendrf   r{   extendr   r
   r   r  r   joinr)  )rS   widths_listunicode_mapgid_stractual_char	uni_pointcidcid_hexuni_hexr   to_unicode_streams              r?   &_create_widths_list_and_unicode_stream+Font._create_widths_list_and_unicode_streamG  s#    %)$6$6$<$<$> GK(I F"'l I&sO""Qwis7)1#=>--11';P;PQZ;[\""L$5{LQVDWCX7Y#Z[ %? )N""J {#$N4 ))K(), fWo	
$ --r>   c                   U R                   R                  (       Ga  U R                  S:X  Ga  U R                  5       u  p[	        [        S5      [        S5      [        S5      [        S5      [        S5      [        SU R                   35      [        S5      [	        [        S	5      [        S
5      [        S5      [        S5      [        S5      [        S5      05      [        S5      U R                   R                  5       [        S5      [        U5      [        S5      [        U R                  S   5      [        S5      [        S5      05      n[	        [        S5      [        S5      [        S5      [        S5      [        S5      [        SU R                   35      [        S5      [        S5      [        S5      [        U/5      [        S5      U05      $ [	        [        S5      [        S5      [        S5      [        S5      [        S5      [        SU R                   35      [        S5      [        SU R                   35      [        S5      [        S5      05      $ )Nr   rG   z/Fontr   z/CIDFontType2r   rJ   z/CIDSystemInfoz	/RegistryAdobez	/OrderingIdentityz/Supplementr   rH   r   r   rp   z/CIDToGIDMapz	/Identityz/Type0z	/Encodingz/Identity-Hr   r   r   z/Namez/WinAnsiEncoding)rd   rE   rn   rF  r   r   r-   r   r   rV   r
   rf   )rS   r=  rE  cid_fonts       r?   as_font_resourceFont.as_font_resourcer  s   )))dmmz.I .2-X-X-Z*K (7#Z%8:&
?(C;'a		{O)D+,.>{+-=g-F{+-=j-I}-|A@ /
 ,-t/C/C/_/_/a4 +k":5!<0E0Ei0P#Q>*J{,C) H  $7#Z%8:&
8(<;'a		{O)D;'M)B-.XJ0G<(*;%    wG!4z"Jx$8wa		{O!<{#Z!DII;%@{#Z0B%C!
  	r>   c                   U R                  5       nSU;   a   UR                  US   5      U[        S5      '   SU;   a'  [        [        US   5      n[        [
        US   5      nOUnSU;   ab  [        [
        US   5      nS H)  nX;   d  M
  UR                  Xx   5      U[        U5      '   M+     UR                  US   5      U[        S5      '   UR                  U5      n	XU'   U	$ )z
Some objects in a font resource need to be indirect objects. This method
ensures that ToUnicode, FontDescriptor, FontFile, and, ultimately, the font
resource itself, are registered with the PdfWriter instance as indirect objects.
r   r   r   rH   r   )rL  _add_objectr   r	   r
   r   )
rS   writertarget_resource_dictfont_resource_namefont_resourcedescendant_fontsfont_resource_dictr   keyfont_resource_refs
             r?   _add_to_writerFont._add_to_writer  s    --/=(6<6H6HWcId6eM*\23.#K?Q1RS!%&68H8K!L!. 22"&'79KL]9^"_@-;A;M;MNaNf;g'
38 A AG@R@R"#45Az*;<= #..}=3D/0  r>   c           
         [        U Vs/ s H*  o R                  R                  X R                  S   5      PM,     snS5      $ s  snf )zDSum of character widths specified in PDF font for the supplied text.rp   r6   )r   rf   r{   )rS   textr#  s      r?   get_text_widthFont.get_text_width  sD    [_`[_SW""&&t-B-B9-MN[_`be
 	
`s   1Ac                  ^  U R                   (       a8  [        U R                   R                  5       5      m[        U4S jU 5       5      $ [	        U R
                  [        5      (       a  UR                  U R
                  S5        g[        U R
                  R                  5       5      m[        U4S jU 5       5      $ ! [         a     gf = f)z7Check whether the font is able to encode a text string.c              3  ,   >#    U  H	  oT;   v   M     g 7fr   r=   r   r#  supported_charss     r?   r   "Font.can_encode.<locals>.<genexpr>       Dtt?2t   r   c              3  ,   >#    U  H	  oT;   v   M     g 7fr   r=   r`  s     r?   r   rb    rc  rd  FT)	rm   setr   r   r   rk   r,   r)  UnicodeEncodeError)rS   r[  ra  s     @r?   
can_encodeFont.can_encode  s    	!!"%d&8&8&?&?&A"BDtDDD$----DMM?;  #&dmm&:&:&<"=DtDDD! 		s   AC  ;C  7C   
CCr=   N)
r~   r   r   rl   rk   rj   r   re   rY   None)r   r   r   rl   r   re   rY   rj  )rk   rj   rm   rl   rY   r,   )r   re   r:   r9   rv   r,   rY   rj  )rf   re   r:   r9   rv   r,   rY   r9   )r   r   rY   zdict[str, Any])r~   r   rY   rh   )r   r   r   r   r   r   rY   r9   )rE   r   rY   rh   )rY   z'tuple[dict[str, str], dict[str, bytes]])rY   z$tuple[list[PdfObject], StreamObject]rX   )rP  r   rQ  r   rR  r   rY   r   ) )r[  r,   rY   r0   )r[  r,   rY   rw   )"rZ   r[   r\   r]   r^   r_   r   r   rm   rn   r)   rd   rf   rt   rv   rx   staticmethodr   r   r   r   r   r   classmethodr   r   r&  r1  rF  rL  rX  r\  rh  r`   r=   r>   r?   rh   rh   e   s9   $ I""$)$$?M>?Hc&+N&KO^K',=U'VnV"K"JM4
?'
? 
? '
? '	
?
 

? 
? G G,:GLZG	G GR &% 
   d d$ 0(00 0 
	0 0 '& '&R Z
'Z
 
Z
 Z
x 2"2&2  2 	2 2h _
 _
B+8).V(T!! /! '	!
 
!B
r>   rh   N)8
__future__r   collections.abcr   dataclassesr   r   typingr   r   r	   pypdf.genericr
   r   r   r   r   r   r   r   r   _cmapr   _codecs.adobe_glyphsr   _utilsr   	constantsr   errorsr   ior   fontTools.ttLib.tables._h_e_a_dr   fontTools.ttLib.tables._p_o_s_tr   fontTools.ttLib.tables.O_S_2f_2r   _writerr   fontTools.ttLibr   r  r  r   r   r   r   r   r   r   r   r)   rb   rh   r=   r>   r?   <module>r~     s    " $ ( + +
 
 
   . "    >>>"&M    ! $% !#$  $% !   $'( '( '(T $% % %
 l	 l	 l	C  Ms   9C CC