+
    Œvju  ã                   ó„  € R t Rt^ RIt^ RIt^ RIt^ RIHt ^ RIHt ^ RI	H
t
HtHtHtHtHtHtHt ^ RIHtHt ^ RIHtHt ^ RIHt R	t]P4                  P7                  4        ]P8                  t]P:                  t/ t/ t/ t / t! ! R
 R]"4      t# ! R R]"4      t$R t% ! R R4      t&R1R lt'R t( ! R R4      t). t* ! R R4      t+],! ^€4      t-],! ^4      t.],! ^4      t/],! ^4      t0R t1Rs2 ! R R]&4      t3R t4R t5R2R lt6R t7R t8R t9R  t:R! t;];! R"4      t<]*P{                  ];! R#4      ]<.4       R1R$ lt>R1R% lt?R1R& lt@R' tAR3R( ltBR) tCR* tDR+ tER, tF]G! ]P‘                  4       ]P‘                  4       ] P‘                  4       ]!P‘                  4       R-7      3R. ltI^ R/IHJtJ ]J! ]I4       AJ]KR08X  d   ]F! 4        ]E! 4        R# R# )4z3.3.0aŽ  This provides a database of font metric information and
efines Font, Encoding and TypeFace classes aimed at end users.

There are counterparts to some of these in pdfbase/pdfdoc.py, but
the latter focus on constructing the right PDF objects.  These
classes are declarative and focus on letting the user construct
and query font objects.

The module maintains a registry of font objects at run time.

It is independent of the canvas or any particular context.  It keeps
a registry of Font, TypeFace and Encoding objects.  Ideally these
would be pre-loaded, but due to a nasty circularity problem we
trap attempts to access them and do it on first access.
N)Ú	_fontdata)ÚwarnOnce)Ú	rl_isfileÚrl_globÚrl_isdirÚopen_and_readÚopen_and_readlinesÚfindInPathsÚisSeqÚisStr)ÚdefaultEncodingÚT1SearchPath)Ú
unicode2T1ÚinstanceStringWidthT1)Ú	rl_codecsó   nc                   ó   € ] tR t^'tRtR# )Ú	FontError© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    Ú`/var/www/html/daimler-pipeline/venv/lib/python3.14/site-packages/reportlab/pdfbase/pdfmetrics.pyr   r   '   ó   † Ûr   r   c                   ó   € ] tR t^)tRtR# )ÚFontNotFoundErrorr   Nr   r   r   r   r   r   )   r   r   r   c           	     ó  € \        V R4      p\        V4      ^8:  dC   V'       d   V^ ,          P                  R4      p\        V4      ^8:  d   \        RV ,          4      h/ p. pV Uu. uF  qDP	                  4       NK  	  ppV Uu. uF+  qDP                  4       P                  R4      '       d   K)  VNK-  	  pp^ pV EF  pVR,          R8X  d   ^pK  VR,          R8X  d   ^ pK(  V'       g   K2  VP                  R	4      pV Uu. uF  qˆP	                  4       NK  	  ppVR
,          w  ršpV	P                  4       w  rLVR8X  g   Q RV,          4       h\        V4      pV
P                  4       w  rLVR8X  g   Q RV,          4       h \        V4      pVP                  4       w  rLVR8X  g   Q RV,          4       hTpVP                  WÞV34       EK  	  ^ pV Fe  pVR,          R8X  d   ^pVR,          R8X  d   ^ pK%  V'       g   K/  VR,          R8X  d     VP                  R^4      w  pp \        T4      pTTT&   Kg  	  W#3# u upi u upi u upi   \         d    \        T4      p LØi ; i   \        RT : RT: R24      h; i    LT; i)a  Quick and dirty - gives back a top-level dictionary
with top-level items, and a 'widths' key containing
a dictionary of glyph names and widths.  Just enough
needed for embedding.  A better parser would accept
options for what data you wwanted, and preserve the
order.ÚrÚzAFM file %s hasn't enough dataÚcomment:é    é   NÚStartCharMetrics:r$   é   NÚEndCharMetricsÚ;:r$   é   NÚCzbad line in font file %sÚWXÚNÚStartFontMetrics:r$   é   NÚCommentÚ z Header information error in afm z: line='Ú')
r   ÚlenÚsplitÚ
ValueErrorÚstripÚlowerÚ
startswithÚintÚfloatÚappend)ÚafmFileNameÚlinesÚtopLevelÚ
glyphLevelÚlÚ	inMetricsÚlineÚchunksÚchunkÚcidChunkÚ
widthChunkÚ	nameChunkr!   ÚcidÚwidthÚnameÚinHeaderÚleftÚrights   &                  r   ÚparseAFMFilerN   ,   su  € ô ˜{¨CÓ0€EÜ
ˆ5ƒz�1„}ç˜% �(Ÿ.™.¨Ó.�%Üˆu‹:�qŒ=ÜÐ>ÀÕLÓMÐMØ€HØ€Já %Ó&¡˜1�W‰WŽY¡€EÐ&ÙÓE™�1§W¡W£Y×%9Ñ%9¸)×%D�QˆQ™€EÐEà€IÜˆØ��:Ð+Ô+ØŠIØ�$�ZÐ+Ô+ØŠIß‰YØ—Z‘Z “_ˆFÙ17Ó8±¨—k‘k–m±ˆFÐ8Ø.4°S­kÑ+ˆH )ð —>‘>Ó#‰DˆAØ˜”8Ð>Ð7¸$Õ>Ó>�8Ü�a“&ˆCð ×#Ñ#Ó%‰DˆAØ˜”9Ð?Ð8¸4Õ?Ó?�9ð!Ü˜A›�ð
 —?‘?Ó$‰DˆAØ˜”8Ð>Ð7¸$Õ>Ó>�8ØˆDà×Ñ˜s¨4Ð0×1ñ9 ð> €HÛˆØ��:Ð+Ô+ØˆHØ��:Ð+Ô+ØŠHß‰XØ�C�y˜IÔ% tðhØ"Ÿj™j¨¨QÓ/‘��eðÜ˜E›
�ð #ˆH�T‹Nñ ð$ Ð!Ð!ùòm 'ùÚEùò 9øô ô !Ü˜a›’ð!ûð*hÝ ÓT_ÓaeÐ!fÓgÐgûðÙúsB   Á'H?Â&IÂ0IÄI	ÆIÈI*È(JÉI'É&I'É*J ÊJc                   ó<   a € ] tR t^ut o R tR tR tRR ltRtV t	R# )ÚTypeFacec                ó  € Wn         . V n        / V n        ^ V n        ^ V n        RV n        ^ V n        ^ V n        VR8X  d	   RV n        MVR8X  d	   RV n        MRV n        V\        9   d   ^V n
        V P                  V4       R# ^ V n
        R# )r$   NÚZapfDingbatsÚZapfDingbatsEncodingÚSymbolÚSymbolEncoding)rJ   Ú
glyphNamesÚglyphWidthsÚascentÚdescentÚ
familyNameÚboldÚitalicÚrequiredEncodingÚstandardFontsÚbuiltInÚ_loadBuiltInData©ÚselfrJ   s   &&r   Ú__init__ÚTypeFace.__init__v   s‡   € ØŒ	ØˆŒØˆÔØˆŒØˆŒð
 ˆŒØˆŒ	ØˆŒà�>Ô!Ø$:ˆDÕ!Ø�XÔØ$4ˆDÕ!à$(ˆDÔ!Ø”=Ô ØˆDŒLØ×!Ñ! $Ö'àˆDŽLr   c                óì   € \        V4      p\        P                  V,          V n        \	        V P                  P                  4       4      V n        \        P                  V,          w  V n        V n	        R# )zyCalled for the built in 14 fonts.  Gets their glyph data.
We presume they never change so this can be a shared reference.N)
Ústrr   ÚwidthsByFontGlyphrW   ÚlistÚkeysrV   Úascent_descentrX   rY   ra   s   &&r   r`   ÚTypeFace._loadBuiltInData�   sT   € ô �4‹yˆÜ$×6Ñ6°tÕ<ˆÔÜ˜t×/Ñ/×4Ñ4Ó6Ó7ˆŒÜ#,×#;Ñ#;¸DÕ#AÑ ˆŒ�D–Lr   c                ó   € . # )z=Info function, return list of the font files this depends on.r   ©rb   s   &r   ÚgetFontFilesÚTypeFace.getFontFiles˜   s   € àˆ	r   c                óê  € VP                  4       VP                  4       3p\        V R 4      '       d[   \        P                  P                  V P                  4      ^ ,          pV F$  p\        W4,           4      '       g   K  W4,           u # 	   \        P                  ! V P                  4      pXf   \        RT: RT P                  : R24       T#    \        T P                  4      pT'       d~   TP                  4       R8X  dP   T FG  p\        P                  P                  T4      ^ ,          T,           p\        T4      '       d   TpKE  RpKI  	   L§TP                  4       R8X  d   Tp LÀRp LÄ; i)ÚpfbFileNameú.pfbNz.afmzCan't find z for face 'r2   )r7   ÚupperÚhasattrÚosÚpathÚsplitextrq   r   r   Ú
findT1FilerJ   ÚbruteForceSearchForAFMr   )rb   ÚextÚpossible_extsÚ
r_basenameÚer!   ÚafmÚpfbs   &&      r   rx   ÚTypeFace.findT1Fileœ   s  € ØŸ™› c§i¡i£kÐ2ˆÜ�4˜×&Ò&ÜŸ™×)Ñ)¨$×*:Ñ*:Ó;¸AÕ>ˆJÛ"�Ü˜Z�^×,Ô,Ø%�>Ò)ñ #ð	Ü×$Ò$ T§Y¡YÓ/ˆAð Š9Ý³c¸4¿9¼9ÐEÔFØˆøð!	Ü(¨¯©Ó3ˆCßØ—9‘9“; &Ô(Û*˜Ü Ÿg™g×.Ñ.¨sÓ3°AÕ6¸Õ:˜Ü$ SŸ>š>Ø #šAà $šAó +ð —Y‘Y“[ FÔ*Ø�Aùà’ús   Â C ÃBE2ÅE2Å.E2)
rX   r[   r_   rY   rZ   rV   rW   r\   rJ   r]   N)rr   )
r   r   r   r   rc   r`   rn   rx   r   Ú__classdictcell__©Ú__classdict__s   @r   rP   rP   u   s   ø‡ € òò4Bò÷ò r   rP   c                 ó  € Vf   ^ RI Hp \        V 4      '       d   V # \        P                  P                  V 4      pV FJ  p\        V4      '       g   K  \        P                  P                  W24      p\        V4      '       g   KH  Vu # 	  V # )N©r   )Úreportlab.rl_configr   r   ru   rv   Úbasenamer   Újoin)ÚfnÚ
searchPathÚbfnÚdirnameÚtfns   &&   r   ÚbruteForceSearchForFilerŽ   ·   si   € ØÒÕUÜ�‡}‚}˜R�iÜ
�'‰'×
Ñ
˜2Ó
€CÛˆÜ˜× Ò ¡(Ü�g‰g�l‰l˜7Ó'ˆÜ�S�>Œ> #š:ñ ð €Ir   c           	     ó¤  € ^ RI Hp V Fh  p\        V4      '       g   K  \        V\        P
                  ,           R,           4      pV F%  p \        V4      w  rVVR,          V 8X  d   Vu u # K'  	  Kj  	  R#    \        P                  ! 4       w  rxp	RP                  \        \        TP                  4      4      RT ,          ,           3Tn        h ; i)z_Looks in all AFM files on path for face with given name.

Returns AFM file name or None.  Ouch!r…   z*.[aA][fF][mM]ÚFontNamer1   z, while looking for faceName=%rN)r†   r   r   r   ru   ÚseprN   ÚsysÚexc_inforˆ   Úmaprf   Úargs)
ÚfaceNamer   rŒ   Ú	possiblesÚpossibleÚtopDictÚ	glyphDictÚtÚvÚbs
   &         r   ry   ry   Á   s¬   € õ 1ãˆÜ˜× Ò ¡(Ü˜G¤b§f¡fÕ,Ð/?Õ?Ó@ˆ	Û!ˆHðÜ%1°(Ó%;Ñ"�Ø˜:Õ&¨(Ô2Ø#”Oñ 3ó "ó  øðÜ—l’l“n‘��AØŸ(™(¤3¤s¨1¯6©6£?Ó3Ð4UÐX`Õ4`Õ`Ðb�”Øús   ÁA7Á7ACc                   óX   a € ] tR t^Ùt o RtRR ltR tR tR tR t	R t
R	 tR
 tRtV tR# )ÚEncodingz1Object to help you create and refer to encodings.Nc                ód  € Wn         ^ V n        V\        9   d0   Ve   Q R4       hWn        \        P
                  V,          V n        R# VR8X  d.   \        V n        \        P
                  \        ,          V n        R# \        V4      '       d7   \        V4      pVP                   V n        VP                  R,          V n        R# \        V4      '       d   \        V n        VR,          V n        R# \        V\        4      '       d,   VP                   V n        VP                  R,          V n        R# R# )r$   Nz2Can't have a base encoding for a standard encoding:NNN)rJ   ÚfrozenÚstandardEncodingsÚbaseEncodingNamer   Ú	encodingsÚvectorr   r   ÚgetEncodingr
   Ú
isinstancerŸ   )rb   rJ   ÚbaseÚbaseEncs   &&& r   rc   ÚEncoding.__init__Û   sØ   € ØŒ	ØˆŒØÔ$Ô$Ø’<ÐUÐ!UÓU�<Ø$(Ô!Ü#×-Ñ-¨dÕ3ˆDŽKØ�TŒ\ä$3ˆDÔ!Ü#×-Ñ-¬oÕ>ˆDŽKÜ�4�[Š[Ü! $Ó'ˆGØ$+§L¡LˆDÔ!Ø!Ÿ.™.¨Õ+ˆDŽKÜ�4�[Š[Ü$3ˆDÔ!Ø˜q�'ˆDŽKÜ˜œh×'Ò'à$(§I¡IˆDÔ!ØŸ+™+ a�.ˆDŽKñ (r   c                ó(   € V P                   V,          # )z.Return glyph name for that code point, or None)r¥   )rb   Úindexs   &&r   Ú__getitem__ÚEncoding.__getitem__ò   s   € ð �{‰{˜5Õ!Ð!r   c                ó¼   € V P                   ^ 8X  g   Q R4       hV P                  V,          V8w  d,   \        V P                  4      pW#V&   \        V4      V n        R# R# )r$   úCannot modify a frozen encodingN)r¡   r¥   rh   Útuple)rb   r¬   ÚvalueÚLs   &&& r   Ú__setitem__ÚEncoding.__setitem__÷   sP   € à�{‰{˜aÔÐBÐ!BÓBÐØ�;‰;�uÕ˜uÔ$Ü�T—[‘[Ó!ˆAØˆe‰HÜ ›(ˆDŽKñ %r   c                óH   € \        V P                  4      V n        ^V n        R# )é   N)r±   r¥   r¡   rm   s   &r   ÚfreezeÚEncoding.freezeÿ   s   € Ü˜DŸK™KÓ(ˆŒØˆŽr   c                óš   € V P                   VP                   8H  ;'       d,    \        V P                  4      \        VP                  4      8H  # ©N)rJ   r±   r¥   )rb   Úothers   &&r   ÚisEqualÚEncoding.isEqual  s4   € Ø�y‰y˜%Ÿ*™*Ñ$×PÐP¬¨t¯{©{Ó);¼UÀ5Ç<Á<Ó=PÑ)PÐPr   c                óz   € V P                   ^ 8X  g   Q R4       hTpV F  pW@P                  V&   V^,           pK  	  R# )zASet a group of character names starting at the code point 'base'.r°   N)r¡   r¥   )rb   r¨   ÚnewNamesÚidxrJ   s   &&&  r   ÚmodifyRangeÚEncoding.modifyRange  s>   € à�{‰{˜aÔÐBÐ!BÓBÐØˆÛˆDØ#�K‰K˜ÑØ˜•'ŠCó r   c                ól  € . pRp\        \        V P                  4      4       Ft  pV P                  V,          pWQP                  V,          8X  d    V'       d   VP                  V4       . pKJ  KL  V'       d   VP                  V4       Kg  V'       g   Kq  WE.pKv  	  V'       d   VP                  V4       V# )a  
Return a compact list of the code points differing between two encodings

This is in the Adobe format: list of
   [[b1, name1, name2, name3],
   [b2, name4]]
   
where b1...bn is the starting code point, and the glyph names following
are assigned consecutive code points.

N)Úranger3   r¥   r;   )rb   ÚotherEncÚrangesÚcurRangeÚiÚglyphs   &&    r   ÚgetDifferencesÚEncoding.getDifferences  sŽ   € ð ˆØˆÜ”s˜4Ÿ;™;Ó'Ö(ˆAØ—K‘K •NˆEØ—o‘o aÕ(Ô(ßØ—M‘M (Ô+Ø!’Hñ ÷ Ø—O‘O EÖ*ß‘UØ !˜z’Hñ )÷ Ø�M‰M˜(Ô#Øˆr   c                óà  € ^ RI Hp / pV P                  p\        V4      pV P	                  V4      pV. 8X  d   VP                  V4      # . pV FI  pVP                  V^ ,          4       VR,           F!  pVf   K	  VP                  RV,           4       K#  	  KK  	  VP                  V4      VR&   VR9   d   VP                  V4      VR&   VP                  R4      VR&   VP                  V4      p	V	# )	z&Returns a PDF Object representing self©Úpdfdoc:r·   NNÚ/ÚDifferencesÚBaseEncodingrŸ   ÚType)ÚMacRomanEncodingÚMacExpertEncodingÚWinAnsiEncoding)	Úreportlab.pdfbaserÏ   r£   r¦   rË   ÚPDFNamer;   ÚPDFArrayÚPDFDictionary)
rb   rÏ   ÚDr£   r©   ÚdifferencesÚ	diffArrayrÅ   Ú	glyphNameÚPDs
   &         r   ÚmakePDFObjectÚEncoding.makePDFObject,  sñ   € õ 	-àˆØ×0Ñ0ÐÜÐ.Ó/ˆØ×)Ñ)¨'Ó2ˆð ˜"ÔØ—>‘>Ð"2Ó3Ð3ð ˆIÛ$�Ø× Ñ   q¥Ô*Ø!& r§ �IØ Ô,à!×(Ñ(¨¨y­Ö9ó "+ñ %ð  &Ÿ™¨yÓ9ˆAˆmÑØÐ#]Ô]à$*§N¡NÐ3CÓ$D��.Ñ!ØŸ™ zÓ2ˆAˆf‰IØ×%Ñ% aÓ(ˆBØˆIr   )r£   r¡   rJ   r¥   r»   )r   r   r   r   Ú__doc__rc   r­   r´   r¸   r½   rÂ   rË   rà   r   r�   r‚   s   @r   rŸ   rŸ   Ù   s6   ø‡ € Ù;ô)ò."ò
#òòQòò÷<ð r   rŸ   c                   ó\   a € ] tR tRt o Rt^ t^ tRtRR ltRR lt	R t
R tR	 tR
 tRtV tR# )ÚFontiQ  a0  Represents a font (i.e combination of face and encoding).

Defines suitable machinery for single byte fonts.  This is
a concrete class which can handle the basic built-in fonts;
not clear yet if embedded ones need a new font class or
just a new typeface class (which would do the job through
composition)FNc                óH  € Wn         \        V4      ;qPn        \        V4      V n        W0n        VP                  '       d   VP                  f   \        MT;'       g    . V n	        V P                  4        \        V n        VR8H  ;'       d    T ;'       g    \        V n        R # )NrR   )ÚfontNameÚgetTypeFaceÚfacer¦   ÚencodingÚencNamer_   r]   ÚstandardT1SubstitutionFontsÚsubstitutionFontsÚ_calcWidthsÚ_notdefCharÚ_notdefFont)rb   rJ   r–   rê   rì   rè   s   &&&&& r   rc   ÚFont.__init__^  s†   € ØŒÜ& xÓ0Ð0ˆŒyÜ" 7Ó+ˆŒØŒà'+§|§| |¸×8MÑ8MÒ8Uõ #>à):×)@Ð)@¸bð 	Ôð 	×ÑÔÜ&ˆÔØ Ñ/×8Ð8°D×GÐG¼KˆÖr   c                ó   € \        WW#R 7      # )©ré   )r   )rb   ÚtextÚsizeré   s   &&&&r   ÚstringWidthÚFont.stringWidthj  s   € Ü$ T°ÔIÐIr   c                óh   € R V P                   P                  : RV P                  P                  : R2# )Ú<r1   Ú>)Ú	__class__r   rè   rJ   rm   s   &r   Ú__repr__ÚFont.__repr__m  s   � Ø ŸN™N×3Ô3°T·Y±Y·^´^ÐDÐDr   c           	     ó’  € ^ .R,          pV P                   P                  pV P                  P                  p\	        R4       F  pW4,          pVf   K   W%,          pWaV&   K   	  Wn        R#   \
         dP    ^ RIpTP                  P                  '       d,   \        RT P                   P                  : RT: R24        K€   Kƒ  i ; i)z)Vector of widths for stringWidth functioné   Nz
typeface "z" does not have a glyph "z", bad font!)rè   rW   ré   r¥   rÅ   ÚKeyErrorr†   Ú	rl_configÚwarnOnMissingFontGlyphsÚprintrJ   Úwidths)rb   ÚwÚgwÚvecrÉ   rÞ   rI   Ú	reportlabs   &       r   rí   ÚFont._calcWidthsp  s¦   € ð ˆC�#�IˆØ�Y‰Y×"Ñ"ˆØ�m‰m×"Ñ"ˆÜ�s–ˆAØ�ˆIØÔ$ðØ�M�EØ �a“Dñ ð Žøô  ô Û.Ø ×*Ñ*×B×BÐBÝÐW[×W`ÑW`×WeÔWeÓgpÐq×râðús   ÁA,Á,*CÂ(CÃCc                óè   € Rp\        R4       F`  pVR,           \        \        V P                  V,          4      R4      ,           pV^ÿ8X  d
   VR,           pV^,          ^8X  g   KW  VR,           pKb  	  V# )z<returns a pretty block in PDF Array format to aid inspectionó   [rþ   ó    Úutf8s    ]ó   
)rÅ   Úbytesrf   r  )rb   ró   rÉ   s   &  r   Ú_formatWidthsÚFont._formatWidths„  sb   € àˆÜ�s–ˆAØ˜$•;¤¤s¨4¯;©;°q­>Ó':¸6Ó!BÕBˆDØ�CŒxØ˜e•|�Ø�2�v˜Ž|Ø˜e•|’ñ ð ˆr   c                óê  € ^ RI Hp R\        \        VP                  4      ^,           4      ,           pVP                  4       pW4n        V P                  P                  Vn	        RV P                  ,          Vn        V P                  P                  4       p\        V4      '       d   VR9   d   WTn        V P                  P                  \         9   gO   ^ Vn        ^ÿVn        VP'                  V P(                  4      Vn        V P                  P-                  V4      Vn        VP1                  WC4      pVP2                  R,          P4                  pWGV&   RV,           VP                  V P                  &   R# )z›Makes and returns one or more PDF objects to be added
to the document.  The caller supplies the internal name
to be used (typically F1, F2... in sequence) rÎ   ÚFzFont %sÚ
BasicFontsrÐ   N)z/MacRomanEncodingz/MacExpertEncodingz/WinAnsiEncoding)r×   rÏ   Úreprr3   ÚfontMappingÚPDFType1FontÚNamerè   rJ   ÚBaseFontræ   Ú__Comment__ré   rà   r   rŸ   r^   Ú	FirstCharÚLastCharrÙ   r  ÚWidthsÚ
addObjectsÚFontDescriptorÚ	ReferenceÚ
idToObjectÚdict)rb   ÚdocrÏ   ÚinternalNameÚpdfFontr}   ÚrefÚfontDicts   &&      r   r  ÚFont.addObjects�  s  € õ
 	-ð œT¤# c§o¡oÓ"6°qÕ"8Ó9Õ9ˆØ×%Ñ%Ó'ˆØ#ŒØŸ9™9Ÿ>™>ˆÔØ'¨$¯-©-Õ7ˆÔØ�M‰M×'Ñ'Ó)ˆÜ�Q�xŠx˜1Ð ]Ô]à Ôð �y‰y�~‰~¤Ô.Ø !ˆGÔØ"ˆGÔØ#Ÿ_™_¨T¯[©[Ó9ˆGŒNØ%)§Y¡Y×%9Ñ%9¸#Ó%>ˆGÔ"à�m‰m˜GÓ2ˆð —>‘> ,Õ/×4Ñ4ˆØ!(�Ñð *-¨|Õ);ˆ�‰˜Ÿ™Ó&r   )rî   rï   rê   ré   rè   ræ   rì   r  r»   ©r  )r   r   r   r   râ   Ú
_multiByteÚ_dynamicFontÚshapablerc   rõ   rû   rí   r  r  r   r�   r‚   s   @r   rä   rä   Q  sA   ø‡ € ñð €JØ€LØ€Hô
HôJòEòò(	÷ <ð  <r   rä   c                 ó^  € \        W,          4      \        8w  g   \        W^,           ,          4      V8w  dB   \        RV\        \        4      \        V4      WV ,          W^,           ,          3,          4      hV\        8X  d   R# V ^,           p W^,           ,          ^,          W^,           ,          ^,          ,          W^,           ,          ,          ^,          W,          ,          pV ^,           p W,           \        V4      8”  d   \        RW0V\        V4      3,          4      hW V,           3# )r·   zGBad pfb file'%s' expected chr(%d)chr(%d) at char %d, got chr(%d)chr(%d)Nz1Bad pfb file'%s' needed %d+%d bytes have only %d!)ÚchrÚ
PFB_MARKERr5   ÚordÚPFB_EOFr3   )ÚpÚdÚmr‰   r@   s   &&&& r   Ú	_pfbCheckr4  ¶  s  € Ü
ˆ1�4ƒy”*Ô¤ A¨¥c¥F£¨Q¤ÜÐdÐhjÔknÔoyÓkzÔ{~ð  @Aó  |Bð  CDð  GHõ  EIð  JKð  NOõ  LOõ  JPð  hQõ  Qó  Rð  	RØŒ'„z‘6Ø	ˆA�€AØ��s�V�a�K˜!˜a�C�& 1�Õ$ q¨1­¥vÕ
.°Õ	2°QµTÕ:€AØ	ˆA�€AØ…sŒ3ˆq‹6„zÜÐNÐRTÐWXÔY\Ð]^ÓY_ÐQ`Õ`ÓaÐaØ��cˆ6€Mr   c                   óB   a € ] tR tRt o RtR tR tR tR tR t	Rt
V tR	# )
ÚEmbeddedType1FaceiÂ  z_A Type 1 font other than one of the basic 14.

Its glyph data will be embedded in the PDF file.c                óT  € \         P                  V R 4       \        V\        4      p\        V\        4      p\        P
                  P                  V4      V n        \        P
                  P                  V4      V n        R V n	        V P                  V4       V P                  V4       R # r»   )rP   rc   r	   r   ru   rv   Úabspathr<   rq   r]   Ú_loadGlyphsÚ_loadMetrics)rb   r<   rq   s   &&&r   rc   ÚEmbeddedType1Face.__init__Æ  sz   € ä×Ñ˜$ Ô%ô " +¬lÓ;ˆÜ! +¬lÓ;ˆÜŸ7™7Ÿ?™?¨;Ó7ˆÔÜŸ7™7Ÿ?™?¨;Ó7ˆÔØ $ˆÔØ×Ñ˜Ô%Ø×Ñ˜+Ö&r   c                ó2   € V P                   V P                  .# r»   )r<   rq   rm   s   &r   rn   ÚEmbeddedType1Face.getFontFilesÓ  s   € Ø× Ñ  $×"2Ñ"2Ð3Ð3r   c                óÀ  € \        V4      p\        V4      '       g   Q RV,          4       h\        VR4      p\        ^ V\        V4      w  r4\        WB\
        V4      w  rV\        Wb\        V4      w  rx\        W‚\        V4       W#V W%V ,           W'V ,           V n        \        V P                  4      V n	        WC,
          V n
        We,
          V n        W‡,
          V n        R# )zaLoads in binary glyph data, and finds the four length
measurements needed for the font descriptorzfile %s not foundr�   N)rŽ   r   r   r4  Ú	PFB_ASCIIÚ
PFB_BINARYr0  Ú_binaryDatar3   Ú_lengthÚ_length1Ú_length2Ú_length3)	rb   rq   r2  Ús1Úl1Ús2Úl2Ús3Úl3s	   &&       r   r9  ÚEmbeddedType1Face._loadGlyphsÖ  s¿   € ô .¨kÓ:ˆÜ˜×%Ò%ÐHÐ':¸[Õ'HÓHÐ%Ü˜+ sÓ+ˆÜ˜1˜Qœy¨Ó5‰ˆÜ˜2¤
¨;Ó7‰ˆÜ˜2¤	¨+Ó6‰ˆÜ�"”w˜{Ô+Ø ˜8 A¨ HÕ,¨Q°"¨XÕ5ˆÔä˜4×+Ñ+Ó,ˆŒØ�ˆŒØ�ˆŒØ�ˆŽr   c                óÄ  € \        V4      p\        V4      w  r#VR,          V n        VR,          V n        VP	                  RR4      V n        VP	                  R^ 4      V n        VP	                  RR4      V n        VP	                  R^ 4      V n        VP	                  R^ 4      V n	        VP	                  R	R4      V n
        VP	                  R
. RO4      pVP                  4       p. V n        V F'  pV P                  P                  \        V4      4       K)  	  / pV F
  w  r‰p
W—V
&   K  	  Wpn        \!        VP#                  4       4      V n        V P$                  P'                  4        VP	                  RR4      R8X  dÑ   \(        f    ^ RIHp Vs?R.R,          p/ p/ pV FC  w  rùp
^ Tu;8:  d
   ^ÿ8:  g   K  M K  W¬V&   \(        P	                  V
R4      pVf   K;  VWï&   WýV&   KE  	  \0        P2                  ! RV P                  ,          4      p\4        P6                  P9                  VWÞ4       VV n        \=        VV4      p\?        V4       R# R#    / s\/        R4      h; i)z Loads in and parses font metricsr�   Ú
FamilyNameÚAscenderéè  Ú	DescenderÚ	CapHeightÚItalicAngleÚstemVÚXHeightÚFontBBoxÚEncodingSchemeNÚFontSpecific)Ú_glyphname2unicodezˆcannot import module reportlab.pdfbase._glyphlist module
you can obtain a version from here
https://www.reportlab.com/ftp/_glyphlist.py
rþ   zrl-dynamic-%s-encoding)r$   r$   rP  rP  ) rŽ   rN   rJ   rZ   ÚgetrX   rY   Ú	capHeightÚitalicAnglerT  ÚxHeightr4   Úbboxr;   r9   rW   rh   ri   rV   ÚsortÚ_postScriptNames2UnicodeÚreportlab.pdfbase._glyphlistrY  r5   r¤   Únormalize_encodingr   Ú	RL_CodecsÚadd_dynamic_codecr]   rŸ   ÚregisterEncoding)rb   r<   r>   Ú	glyphDataÚstrBboxÚtokensÚtokrW   rH   rI   rJ   rY  ÚnamesÚexÚrexÚcodeÚurê   Úencs   &&                 r   r:  ÚEmbeddedType1Face._loadMetricsè  s+  € ô .¨kÓ:ˆÜ ,¨[Ó 9Ñˆà˜ZÕ(ˆŒ	Ø" <Õ0ˆŒØ—l‘l :¨tÓ4ˆŒØ—|‘| K°Ó3ˆŒØ!Ÿ™ k°4Ó8ˆŒØ#Ÿ<™<¨°qÓ9ˆÔØ—\‘\ '¨1Ó-ˆŒ
Ø—|‘| I¨tÓ4ˆŒà—,‘,˜zª?Ó;ˆØ—‘“ˆØˆŒ	ÛˆCØ�I‰I×ÑœS ›XÖ&ñ ð ˆÛ"+ÑˆS˜Ø %˜Óñ #,à&ÔÜ˜{×/Ñ/Ó1Ó2ˆŒØ�‰×ÑÔð �<‰<Ð(¨$Ó/°>ÔAä'Ò/ð
ÝOØ/AÐ,Ø*ð �F˜S•LˆEØˆBØˆCÛ'0Ñ#�˜dØ�d–<˜C—<’<Ø"&˜$‘KÜ0×4Ñ4°T¸$Ó?�AØ”}Ø$%˜™	Ø $˜1›ñ (1ô  ×2Ò2Ð3KÈdÏiÉiÕ3WÓXˆGÜ×Ñ×1Ñ1°'¸"ÔAØ$+ˆDÔ!Ü˜7 EÓ*ˆCÜ˜SÖ!ñ; BøðØ/1Ð,Ü$ðLóð ús   Æ	I ÉIc                ó   € ^ RI Hp VP                  4       pV P                  Vn        V P
                  VP                  R&   V P                  VP                  R&   V P                  VP                  R&   VP                  VRV P                  ,           4      pVP                  RRRV P                  R	V P                  R
V P                  R^"RVP                  V P                   4      RVP#                  V P$                  4      RV P&                  RV P(                  RV P*                  RV/4      pVP                  VRV P$                  ,           4      pV# )zFAdd whatever needed to PDF file, and return a FontDescriptor referencerÎ   ÚLength1ÚLength2ÚLength3z	fontFile:rÓ   z/FontDescriptorÚAscentrR  ÚDescentÚFlagsrV  r�   rS  ÚStemVrU  ÚFontFilezfontDescriptor:)r×   rÏ   Ú	PDFStreamrA  ÚcontentrC  Ú
dictionaryrD  rE  r  rq   rÚ   rX   r[  rY   rÙ   r^  rØ   rJ   r\  rT  r]  )rb   r"  rÏ   ÚfontFileÚfontFileRefÚfontDescriptorÚfontDescriptorRefs   &&     r   r  ÚEmbeddedType1Face.addObjects%  s  € å,à×#Ñ#Ó%ˆØ×+Ñ+ˆÔà)-¯©ˆ×Ñ˜IÑ&Ø)-¯©ˆ×Ñ˜IÑ&Ø)-¯©ˆ×Ñ˜IÑ&ð —m‘m H¨k¸D×<LÑ<LÕ.LÓMˆà×-Ñ-ØÐ%Ø�T—[‘[Ø˜Ÿ™Ø�d—l‘lØ�RØ�v—‘ t§y¡yÓ1Ø�v—~‘~ d§i¡iÓ0Ø˜$×*Ñ*Ø�D—J‘JØ�d—l‘lØ˜ð/ó ˆð  ŸM™M¨.Ð:KÈdÏiÉiÕ:WÓXÐØ Ð r   )rA  rB  rC  rD  rE  r<   rX   r^  r[  rY   rZ   rV   rW   r\  rJ   rq   r]   rT  r]  N)r   r   r   r   râ   rc   rn   r9  r:  r  r   r�   r‚   s   @r   r6  r6  Â  s)   ø‡ € ñ8ò'ò4òò$;"÷z!ð !r   r6  c                 óÌ   € \        V \        4      '       g   Q R V ,          4       hV \        V P                  &   V P                  \        9   g   \        V P                  4       R# R# )zNot a TypeFace: %sN)r§   rP   Ú
_typefacesrJ   r^   ÚregisterFontFamily)rè   s   &r   ÚregisterTypeFacer…  C  sM   € Ü�dœH×%Ò%ÐBÐ';¸dÕ'BÓBÐ%Ø „Jˆt�y‰yÑØ�9‰9œÔ%ô 	˜4Ÿ9™9Ö%ñ &r   c                 ór  € \        V \        4      '       g   Q R V ,          4       hV P                  \        9   d[   V P	                  \        V P                  ,          4      '       d   V P                  4        R# \        RV P                  ,          4      hV \        V P                  &   V P                  4        R# )zNot an Encoding: %sz>Encoding "%s" already registered with a different name vector!N)r§   rŸ   rJ   Ú
_encodingsr½   r¸   r   )ro  s   &r   re  re  K  s|   € Ü�cœ8×$Ò$ÐAÐ&;¸cÕ&AÓAÐ$Ø
‡x�x”:Ôà�;‰;”z #§(¡(Õ+×,Ò,Ø�J‰JŽLäÐ\Ð_b×_gÑ_gÕgÓhÐhà"Œ
�3—8‘8ÑØ�
‰
Žr   c                 óJ  € ^ RI Hp V'       g   T pV P                  4       p V'       g   T;'       g    T;'       g    TpV'       g   TpV'       g   TpVP                  V ^ ^ V4       VP                  V ^^ V4       VP                  V ^ ^V4       VP                  V ^^V4       R# )r$   )ÚfontsN)Úreportlab.libr‰  r7   Ú
addMapping)ÚfamilyÚnormalr[   r\   Ú
boldItalicr‰  s   &&&&& r   r„  r„  X  sŒ   € Ý#ß˜F�6Ø�\‰\‹^€Fß F×$<Ð$<¨d×$<Ð$<°f�zß˜�ß˜F�6Ø	×Ñ�V˜Q  6Ô*Ø	×Ñ�V˜Q  4Ô(Ø	×Ñ�V˜Q  6Ô*Ø	×Ñ�V˜Q  :Ö.r   c                ó¤  € V P                   pV P                  '       d€   V P                  P                  pV\        9  d^   V\
        9   dA   \
        V,          pVP                  '       g   \        RV: RV : RV: 24      hV\        V&   MV ;\
        V&   \        V&   M	V \        V&   V P                  '       d   \        V P                   4       R# R# )zGRegisters a font, including setting up info for accelerated stringWidthzAttempt to register fonts r1   z
 for face N)	ræ   r*  rè   rJ   Ú_fontsÚ_dynFaceNamesr5   r)  r„  )Úfontræ   r–   Úofonts   &   r   ÚregisterFontr”  d  s¦   € ð �}‰}€HØ××ÐØ—9‘9—>‘>ˆØœ6Ô!Øœ=Ô(Ü% hÕ/�Ø×)×)Ð)Ý$ÓV[Ó]aÒckÐ%lÓmÐmà',”F˜8Ò$à=AÐA”˜hÑ'¬&°Ñ*:øàŒˆxÑà‡‡€ô 	˜4Ÿ=™=Ö)ñ	 r   c                ó  €  \         V ,          #   \         dç    T \        9   dE   \        T 4      p\        P
                  T ,          w  Tn        Tn        Tn        \        T4       Tu # \        T 4      pT'       dƒ   R FC  p\        P                  P                  T4      ^ ,          T,           p\        T4      '       g   KC   M	  \        X4      '       g   Q RT,          4       h\        Y$4      p\        T4       Tu # h i ; i)z-Lazily construct known typefaces if not foundzfile %s not found!)rr   z.PFB)rƒ  rÿ   r^   rP   r   ÚstandardFontAttributesrZ   r[   r\   r…  ry   ru   rv   rw   r   r6  )r–   rè   r~   r}   r   s   &    r   rç   rç   |  s×   € ðÜ˜(Õ#Ð#øÜô à”}Ô$Ü˜HÓ%ˆDÜ8A×8XÑ8XÐYaÕ8bÑ5ˆTŒ_˜dœi¨¬Ü˜TÔ"ð ŠKô )¨Ó2ˆCßÛ)�AÜŸ'™'×*Ñ*¨3Ó/°Õ2°QÕ6�CÜ  —~”~¡uñ *ô ! —~’~ÐAÐ';¸cÕ'AÓA�~Ü(¨Ó2�Ü  Ô&Ø’àð+ús   ‚ �AD Á)AD Ã;D Ã>D c                óˆ   €  \         V ,          #   \         d(    T \        9   d   \        T 4      p\	        T4       Tu # h i ; i)z-Lazily construct known encodings if not found)r‡  rÿ   r¢   rŸ   re  )rê   ro  s   & r   r¦   r¦   —  sD   € ð	Ü˜'Õ"Ð"øÜô ØÔ'Ô'Ü˜7Ó#ˆCÜ˜SÔ!àŠJàðús   ‚ �.A¿Ac                ó  € \        V 4      p \        V 4      \         J g   Q R\        V 4      ,          4       h\        V 4      pVP                  '       d   \        W VP                  4      pM\        W \        4      p\        V4       V# )z-search for and register a font given its namez$fontName=%s is not required type str)rf   ÚtypeÚasciirç   r]   rä   r   r”  )ræ   rè   r’  s   &  r   ÚfindFontAndRegisterr›  ¤  sp   € ä�8‹}€HÜ�‹>œSÓ ÐZÐ"HÌ5ÐQYË?Õ"ZÓZÐ ô �xÓ €DØ××ÐÜ�H¨×(=Ñ(=Ó>‰ä�H¬Ó8ˆÜ�ÔØ€Kr   c                óV   €  \         V ,          #   \         d    \        T 4      u # i ; i)zÚLazily constructs known fonts if not found.

Names of form 'face-encoding' will be built if
face and encoding are known.  Also if the name is
just one of the standard 14, it will make up a font
in the default encoding.)r�  rÿ   r›  )ræ   s   &r   ÚgetFontr�  ²  s,   € ð-Ü�hÕÐøÜô -Ü" 8Ó,Ò,ð-ús   ‚ �(§(rR   rT   c                 óø   € \        V 4      p VP                  pVP                  pT'       d   TR ,          pY5,          YE,          3# Y43#    TP                  P                  pTP                  P                  p LT; i)g     @�@)r�  rX   rY   rè   )ræ   ÚfontSizer’  rX   rY   Únorms   &&    r   ÚgetAscentDescentr¡  Á  sm   € Ü�8Ó€Dð$Ø—‘ˆØ—,‘,ˆ÷ Ø˜�~ˆØ�{˜G�LÐ(Ð(àˆÐøð$Ø—‘×!Ñ!ˆØ—)‘)×#Ñ#Šús   �A	 Á	.A9c                 ó&   € \        W4      ^ ,          # )r$   ©r¡  ©ræ   rŸ  s   &&r   Ú	getAscentr¥  Ï  ó   € Ü˜HÓ.¨qÕ1Ð1r   c                 ó&   € \        W4      ^,          # )r·   r£  r¤  s   &&r   Ú
getDescentr¨  Ò  r¦  r   c                 ó`   € \        \        P                  4       4      p V P                  4        V # )zReturns what's in there)rh   r�  ri   r_  )Úregs    r   ÚgetRegisteredFontNamesr«  Õ  s    € ä
Œv�{‰{‹}Ó
€CØ‡H�H„JØ€Jr   c                ó:   € \        V4      P                  WVR7      # )zfCompute width of string in points;
not accelerated as fast enough because of instanceStringWidthT1/TTFrò   )r�  rõ   )ró   ræ   rŸ  ré   s   &&&&r   rõ   rõ   Û  s   € ô �8Ó×(Ñ(¨À(Ð(ÓKÐKr   c            
      ó’  € \        R 4       \        \        P                  4       4      p V P	                  4        V  F  p\        RV4       K  	  \        4        \        R4       \        \
        P                  4       4      pVP	                  4        V F  p\        RV4       K  	  \        4        \        R4       \        \        P                  4       4      pVP	                  4        V FZ  p\        V,          p\        RVP                  : RVP                  P                  : RVP                  P                  : R24       K\  	  R# )	zRegistered Encodings:z   zRegistered Typefaces:zRegistered Fonts:z    z (rÐ   Ú)N)r  rh   r‡  ri   r_  rƒ  r�  ræ   rè   rJ   ré   )ri   rê   Úfacesr–   ÚkÚkeyr’  s          r   ÚdumpFontDatar²  à  sØ   € Ü	Ð
!Ô"Ü”
—‘Ó!Ó"€DØ‡I�I„KÛˆÜˆe�GÖñ ô 
„GÜ	Ð
!Ô"Ü”—‘Ó"Ó#€EØ	‡J�J„LÛˆÜˆe�HÖñ ô 
„GÜ	Ð
ÔÜŒV�[‰[‹]Ó€AØ‡F�F„HÛˆÜ�c�{ˆÝ $§-¤-°·±·´ÀÇÁ×ASÔASÐTÖUó r   c                 óô  € ^ RI p\        R,           Fâ  pVP                  4       p\        V4      P                  pV  F&  p^ pV F  pWd\	        V4      ,          ,           pK  	  K(  	  VP                  4       p\        RWƒ,
          ,          4       VP                  4       pV  F  p\        V4      P                  V^
4      p	K   	  VP                  4       p\        RWƒ,
          ,          4       \        4        Kä  	  R# )r$   N:r$   r·   Nzslow stringWidth took %0.4fz'class lookup and stringWidth took %0.4f)Útimer^   r�  r  r/  r  rõ   )
Útextsr´  ræ   Út0r  ró   rI  ÚchÚt1rK  s
   &         r   Útest3widthsr¹  ÷  sÅ   € ãÜ! #×&Ð&ˆð �Y‰Y‹[ˆÜ�HÓ×$Ñ$ˆÛˆDØˆBÛ�ØœC ›G�*•_’ó ñ ð �Y‰Y‹[ˆÜÐ+¨r­wÕ7Ô8à�Y‰Y‹[ˆÛˆDÜ˜Ó"×.Ñ.¨t°RÓ8ŠBñ à�Y‰Y‹[ˆÜÐ7¸2½7ÕCÔDÜŽó+ 'r   c                  ó`  € \        R 4      P                  4       p \        R\        V 4      ,          4       \        R4       \	        V .4       \        4        V P                  4       p\        R\        V4      R\        V 4      ,          \        V4      ,          3,          4       \	        V4       R# )z-../../rlextra/rml2pdf/doc/rml_user_guide.prepzrawdata length %dztest one huge string...z7test %d shorter strings (average length %0.2f chars)...g      ð?N)ÚopenÚreadr  r3   r¹  r4   )ÚrawdataÚwordss     r   ÚtestStringWidthAlgorithmsr¿    sƒ   € ÜÐBÓC×HÑHÓJ€GÜ	Ð
¤ G£Õ
,Ô-Ü	Ð
#Ô$Ü��	ÔÜ	„GØ�M‰M‹O€EÜ	Ð
CÄsÈ5ÃzÐSVÔWZÐ[bÓWcÕScÔdgÐhmÓdnÕSnÐFoÕ
oÔpÜ�Ör   c                  óÔ   € \        R 4      p \        V 4       \        V P                  R,          4       \        R4      p\        VP                  4       \        V4       \	        4        R# )Ú	Helvetica:r$   é   NÚWombatN)rP   r…  r  rV   r²  )ÚhelvÚwombats     r   ÚtestrÆ    sJ   € Ü�KÓ €DÜ�TÔÜ	ˆ$�/‰/˜$Õ
Ô ä�hÓ€FÜ	ˆ&×
Ñ
ÔÜ�VÔä†Nr   )rƒ  r‡  r�  r‘  c                 óØ   € V P                  4        F7  w  r\        4       V,          pVP                  4        VP                  V4       K9  	  \        P
                  P                  4        R # r»   )ÚitemsÚglobalsÚclearÚupdater   rc  Úreset_dynamic_codecs)Úinitial_dictsr°  rœ   r2  s   &   r   Ú_resetrÎ  (  sL   € ð ×"Ñ"Ö$‰ˆÜ
‹)�A�,ˆØ	�‰Œ	Ø	�‰�Žñ %ô ×Ñ×,Ñ,Ö.r   )Úregister_resetÚ__main__r»   )NNNNr(  )LÚ__version__râ   ru   r’   r¤   r×   r   Úreportlab.lib.loggerr   Úreportlab.lib.utilsr   r   r   r   r   r	   r
   r   r†   r   r   Úreportlab.lib.rl_accelr   r   r   rî   rc  Úregisterr^   r¢   rƒ  r‡  r�  r‘  Ú	Exceptionr   r   rN   rP   rŽ   ry   rŸ   rë   rä   r-  r.  r?  r@  r0  r4  r`  r6  r…  re  r„  r”  rç   r¦   r›  r�  rï   Úextendr¡  r¥  r¨  r«  rõ   r²  r¹  r¿  rÆ  r!  ÚcopyrÎ  rÏ  r   r   r   r   Ú<module>rÙ     sê  ðð
 €ð	€÷ Ó Ý 'Ý )ß z× zÓ zß =ß DÝ 'Ø€à 	× Ñ × Ñ Ô Ø×'Ñ'€Ø×/Ñ/Ð à€
Ø€
Ø	€Ø€ô	�	ô 	ô	˜	ô 	òG"÷R@ñ @ôDò÷0qñ qðn !Ð ÷^<ñ ^<ñ@ ˆt‹9€
Ù
ˆa‹&€	Ùˆq‹6€
ÙˆA‹€ò	ð  Ð ô!˜ô !òB&ò
ô
/ò*ò0ò6òò
-ñ �nÓ%€Ø × "Ñ "¡G¨HÓ$5°kÐ#BÔ Côô2ô2òôLò
Vò.ò4ò	ñ Ø#Ÿ™Ó*Ø#Ÿ™Ó*Ø—[‘[“]Ø)×.Ñ.Ó0ô	ô/õ /Ù ˆvÔ ØàˆZÔÙ„FÙÖñ r   