
    Bh`                         S r SSKrSSKrSSKJr  SSKJr  SSKJr  SSK	r	SSK
Jr  SSKJrJrJr  SSKJr  S	S
KJrJr  S	SKJr  S	SKJrJrJrJrJr  S	SKJrJr   " S S5      r S r!S r"S r#g)zFonts integration in PDF.    N)md5)WARNING)ceil)subset)TTFont
TTLibErrorttFont)instantiateVariableFont   )LOGGERcapture_logs)PANGO_STRETCH_PERCENT)
FROM_UNITSffiharfbuzzharfbuzz_subsetpango)get_hb_object_dataget_pango_font_hb_facec                   B    \ rS rSrS rS r\S 5       rS rS r	S r
Srg	)
Font   c           	      *  ^ [         R                  " U5      U l        [        U5      U l        [        U R                  5      U l        [        R                  " U R                  5      U l	        X0l
        [         R                  " U5      U l        [        R                  " [         R                  " U5      5      U l        0 U l        [         R$                  " U5      nU[        R&                  :w  aw  [        R                  " U5      R)                  5       R+                  S5       Vs0 s H3  nUR+                  S5      S   [-        UR+                  S5      S   5      _M5     snU l        U R"                  R/                  S5      =n(       a'  [1        U5      U l        [         R4                  " X&5        O[         R6                  " U5      U l        U R"                  R/                  S5      (       a&  [         R8                  " U[         R:                  5        OEU R"                  R/                  S5      (       a%  [         R8                  " U[         R<                  5        U R"                  R/                  S5      =mb:  [?        [@        RB                  " 5       U4S	 jS
9S   n[         RD                  " X'5        [        R                  " [         RF                  " U5      5      nSRI                  S [K        USS9RM                  5       S S  5       5      U l'        [P        R*                  " SU5      S   n	SU RN                  RS                  5       -   S-   U	RU                  SS5      -   U l+        U R                  (       a  [         RX                  " U[        R&                  5      n
[1        [         RZ                  " U
5      [\        -  U R                  -  S-  5      U l/        [1        [         R`                  " U
5      [\        -  U R                  -  S-  5      * U l1        OS=U l/        U l1        [        Rd                  " SS5      n[        Rd                  " S5      n[        Rd                  " S5      n[        Rf                  " U R                  SX5        / U l4        [k        US   5       HY  n[        Rl                  " X   U5        U Rh                  Ro                  [        R                  " U5      R)                  5       5        M[     SU l8        SU Rh                  ;   a  SU Rh                  ;   a  SU Rh                  ;   ap  [        Rr                  " SS5      n[        Rt                  " U R                  U5      n[        Rv                  " U5      S:X  a  SU l8        [        Rx                  " U5        OSU l8        SU l=        [        R|                  " U R                  5      U l?        [        R                  " U R                  5      U lA        [        R                  " U R                  5      U lC        S U lD        S U lE        0 U lF        0 U lG        SU lH        S!U lI        U R                  (       a  U =R                  S"-  slI        S#U	R+                  S5      ;   a  U =R                  S$-  slI        g g s  snf )%N,=r      weightitalslntwdthc                 &   > [        U S   T-
  5      $ )Nr   )abs)itemwidths    F/var/www/html/env/lib/python3.13/site-packages/weasyprint/pdf/fonts.py<lambda>Font.__init__.<locals>.<lambda>3   s    T!Wu_!5    )key c              3   D   #    U  H  n[        S US-  -   5      v   M     g7f)A      N)chr.0letters     r%   	<genexpr> Font.__init__.<locals>.<genexpr>9   s)      LJ '-CVb[ !!Js    F)usedforsecurity   s    [#@]   /   +       -  zunsigned int *d   zhb_tag_t[100]zchar[4]EBDTEBLCglyfs   glyfTP      @   s   Serifr   )Jr   pango_font_get_hb_fonthb_fontr   hb_facer   file_contentr   hb_face_get_indexindex	font_size pango_font_description_get_stylestyler   string!pango_font_description_get_familyfamily
variations%pango_font_description_get_variationsNULLdecodesplitfloatgetroundr   !pango_font_description_set_weight!pango_font_description_get_weight pango_font_description_set_stylePANGO_STYLE_ITALICPANGO_STYLE_OBLIQUEminr   items"pango_font_description_set_stretch pango_font_description_to_stringjoinr   digesthashreencodereplacenamepango_font_get_metricspango_font_metrics_get_ascentr   ascentpango_font_metrics_get_descentdescentnewhb_face_get_table_tagstablesrangehb_tag_to_stringappendbitmaphb_tag_from_stringhb_face_reference_tablehb_blob_get_lengthhb_blob_destroyitalic_anglehb_face_get_upemupemhb_ot_color_has_pngpnghb_ot_color_has_svgsvgstemvstemhwidthscmapused_in_formsflags)self
pango_fontdescriptionrI   rO   partr   stretchdescription_stringrf   pango_metricstable_count
table_tags
table_nameitagblobr$   s                    @r%   __init__Font.__init__   s   33J?-j9.t||<//=
";;KH
jj!H!H!UV@@M
!  JJz299;AA#FHFD 

3"E$**S/!*<$==FHDO __((2262-DK33KHAA+NDK??v&&22U557__  ((22U668__((00E=%++-5778:G 44[J ZZ22;?A GG L%u=DDFrJL L	
 xx"45a8499++--4t||D$7OO	 >>!88SXXNM33MBZO!%&'DK "44]CjP!%&' 'DL *+*DK$, gg.4WW_-
WWY'
''aQ{1~&A%%jmZ@KKszz*5<<>? ' T[[ Vt{{%:$11'2>77cJ..t49"&DK((."--dll;	//=//=

	" "
::JJ,&Jtzz$''JJ,&J (YHs   ":Zc                    U R                  X5        SU R                  ;   Ga  [        R                  " U R                  5      n[        X0R                  S9nSU R                  ;  a  U R                  U R                  S'   SU R                  ;  a  U R                  U R                  S'   SU R                  ;  aq  SnU R                  S:X  aQ  US   R                   H>  nUR                  S:X  d  M  UR                  S:X  a  UR                  nOUR                  n  O   XPR                  S'   SU R                  ;  a%  [        U R                  S	:H  5      U R                  S'   [        R                  " 5       n [!        X@R                  5      nUS
   R"                  R%                  5        H$  u  nu  pU	S:  d  M  SU
4US
   R"                  U'   M&     UR'                  U5        UR)                  5       U l        U R0                  (       d  U R2                  (       Ga  [        R                  " U R                  5      n[        X0R                  S9n SU R                  ;  d  SU R                  ;  a  [4        R6                  " S5      " 5       US'   [4        R6                  " S5      " 5       US'   UR9                  5       US   l        US   R:                   Vs0 s H(  nU[4        R<                  " S5      R?                  5       _M*     snUS   l         O@US   R@                   H-  n[4        R<                  " S5      R?                  5       US   U'   M/     S H  nX;   d  M
  XM	 M     [        R                  " 5       nUR'                  U5        UR)                  5       U l        gg! [*         a    [,        R.                  " S5         GNf = fs  snf ! [B         a    [,        R.                  " S5         gf = f)zRemove useless data from font.fvar
fontNumberwghtopszr   r   r   r   r   hmtxzUnable to mutate variable fontlocar>   )CBDTCBLCzSVG zUnable to save emoji fontN)"r   rn   ioBytesIOrF   r   rH   rO   r   rI   rK   axesaxisTagmaxValueminValueintr
   metricsr]   savegetvalue	Exceptionr   warningr{   r}   r	   getTableClassgetGlyphOrder
glyphOrdergetTableModuleGlyphglyphsr   )r   r   hinting	full_fontttfontr   axepartial_fontr)   advancebearingrf   glyphr   output_fonts                  r%   clean
Font.cleanq   s,    	D" T[[ 

4#4#45II**=FT__,*.++'T__,*...'T__,::?%f~22;;&0"||q0'*||'*||!  3 +/'T__,*-djjAo*>'::<L	<0I/5f~/E/E/K/K/M+C+'{78'lv..s3 0N L) %1$9$9$;! 88txxx

4#4#45II**=F<,dkk0I%+%9%9&%A%CF6N%+%9%9&%A%CF6N060D0D0FF6N- %+6N$=$=-?$=D f33F;AACC$=-?F6N) "(!6!6060E0Ef0M0S0S0Uvu- "7":J!+". #; !jjlK($/$8$8$:!)    A?@A-?  <:;<sE   4>N 6)N BO /O?AO AO  N>=N>O  O)(O)c                 0    U R                   S S S:X  a  S$ S$ )NrA   s   OTTOotfttf)rF   )r   s    r%   type	Font.type   s!    ))"1-8uCeCr(   c                     U(       d  g[         (       a/  [        R                  " SSS5      (       a  U R                  X5        gU R	                  X5        g)z*Remove unused glyphs and tables from font.NrA   r   r   )r   r   hb_version_atleast_harfbuzz_subset_fonttools_subset)r   r   r   s      r%   r   Font.subset   s=    ?x::1aCC!!$0""41r(   c                    [         R                  " [        R                  " 5       [        R                  5      n[        R
                  " U5      n[         R                  " S[        U5       S3[        U5      5      n[        R                  " XE[        U5      5        [        R                  [        R                  -  [        R                  -  n[        R                  " X65        [        R                  " U[        R                   5      n[#        S S 5       5      n[         R                  " S[        U5       S3U5      n	[        R                  " Xy[        U5      5        [         R                  " [        R$                  " U R&                  U5      [        R(                  5      n
[        R
                  " U5      n[#        [+        [-        U5      S-   5      5      n[         R                  " S[        U5       S3U5      n[        R                  " XE[        U5      5        [        R                  [        R                  -  nU(       d  U[        R.                  -  n[        R                  " X65        [         R                  " [        R$                  " X5      [        R(                  5      n
U
(       a  [1        U
5      nU(       a  Xl        g[4        R6                  " S5        g)zSubset font using Harfbuzz.zhb_codepoint_t[]c              3   P   #    U  H  n[         R                  " US 5      v   M     g7f)r?   N)r   rs   )r0   rf   s     r%   r2   (Font._harfbuzz_subset.<locals>.<genexpr>   s*      ( O'dH77bAA O's   $&)s   BASEs   DSIGs   EBDTs   EBLCs   EBSCs   GPOSs   GSUBs   JSTFs   LTSHs   PCLTs   SVG r   Nz#Unable to subset font with Harfbuzz)r   gcr   hb_subset_input_create_or_failhb_subset_input_destroyhb_subset_input_glyph_setrl   lensortedr   hb_set_add_sorted_arrayHB_SUBSET_FLAGS_RETAIN_GIDS(HB_SUBSET_FLAGS_PASSTHROUGH_UNRECOGNIZEDHB_SUBSET_FLAGS_DESUBROUTINIZEhb_subset_input_set_flagshb_subset_input_setHB_SUBSET_SETS_DROP_TABLE_TAGtuplehb_subset_or_failrE   hb_face_destroyro   maxHB_SUBSET_FLAGS_NO_HINTINGr   rF   r   r   )r   r   r   	hb_subsetgid_set	gid_arrayr   drop_setdrop_tablesdrop_tables_arrayrE   keeprF   s                r%   r   Font._harfbuzz_subset   s/   FF::<335	
 ";;IFGGoc$i[:F4LI	((SYG 77DDE::; 	 	11)C #66DDF ( O' ( (  GGoc+6F5Gq$I;W((c+FVW &&--dllIF$$&
 ";;IFU3t9q=)*GGoc$i[:DA	((SYG DD::; 	 _???E11)C &&--gA$$&
 -g6L$0!<=r(   c                    [         R                  " U R                  5      n[        R                  " SSSUSS9nU=R
                  / SQ-  sl        [        R                  " U5      nUR                  US9   [        X0R                  S9n[        S[        S9 nUR                  U5        SSS5        W H3  n[        R                  " S	U R                  R                  5       U5        M5     [         R                  " 5       n	UR!                  U	5        U	R#                  5       U l        g! , (       d  f       N= f! [$         a    [        R                  " S
5         gf = f)zSubset font using Fonttools.T)retain_gidspassthrough_tablesignore_missing_glyphsr   desubroutinize)GSUBGPOSSVG)gidsr   	fontTools)levelNz*fontTools warning when subsetting "%s": %sz$Unable to subset font with fontTools)r   r   rF   r   Optionsr   	Subsetterpopulater   rH   r   r   r   r   rN   rR   r   r   r   )
r   r   r   r   options	subsetterr   logslogoptimized_fonts
             r%   r   Font._fonttools_subset   s   JJt001	 ..TD2 	66$$W-	%	:I**=Fk9T  ( :@KK&&(#/   ZZ\NKK' . 7 7 9D :9  	CNNAB	Cs+   6!D7 D&)AD7 &
D40D7 7 EE)ri   rr   r   rk   rN   rF   r   rI   rb   rE   rD   rH   rw   rf   r{   r   r~   rK   r}   rn   ry   r   rO   r   r   N)__name__
__module____qualname____firstlineno__r   r   propertyr   r   r   r   __static_attributes__ r(   r%   r   r      s5    Z'x><@ D D	2:>x:r(   r   c                    [         R                  " 5       n0 nUR                  5        H.  nUR                  UR                  / 5      R                  U5        M0     0 nUR                  5        H  u  pU
S   nUR                  (       a  M  0 nU(       a*  UR                  (       d  U
 H  n0 UEUR                  EnM     UR                  XS   5        UR                  S:X  a  [         R                  " SS05      nO+[         R                  " S[        UR                  5      05      n[         R                  " UR                  /XS9nU R                  U5        UR                   X'   M     UR                  5        GH  nU(       a*  UR                  (       d  UR"                  nUR                  nO[$        R&                  " UR                  5      n[)        UUR*                  S9n0 0 p[-        UR/                  5       R                  5       5       H%  u  nnUR0                  S	-  UR2                  -  UU'   M'     UR5                  5       R                  5        H-  u  nnUR7                  U5      nUU;  d  M  [9        U5      UU'   M/     [         R                  " / S
QUS9n[        U5      n[;        UR                  5       5      n[=        [?        US-  5      5       H  n[A        SUUS-  -
  5      nURB                  R                  U S3RE                  5       5        UUS-  US-   S-    HO  u  nnSRG                  S U 5       5      nURB                  R                  SUS SU S3RE                  5       5        MQ     URB                  R                  S5        M     URB                  RI                  / SQ5        U R                  U5        [         R                  " SSUR                  (       a  SOS 3URJ                  UR                   S.5      nUR                  (       a  [M        UXXU5        O[O        UXXXR                     US   5        U R                  U5        UR                   XWR                  '   GM     U$ )zBuild PDF dictionary for fonts.r   r   r   Subtype	/OpenTypeLength1compressr   r:   )s$   /CIDInit /ProcSet findresource begins   12 dict begins	   begincmaps   /CIDSystemInfos   << /Registry (Adobe)s   /Ordering (UCS)s   /Supplement 0s   >> defs!   /CMapName /Adobe-Identity-UCS defs   /CMapType 2 defs   1 begincodespaceranges   <0000> <ffff>s   endcodespaceranger;   z beginbfcharr   r*   c              3   `   #    U  H$  oR                  S 5      R                  5        v   M&     g7f)z	utf-16-beN)rd   hexr/   s     r%   r2   )build_fonts_dictionary.<locals>.<genexpr>[  s*      -NHLf}}[155789s   ,.<04xz> <>s	   endbfchar)s   endcmaps-   CMapName currentdict /CMap defineresource pop   endr	  /Fontz/Type   )Typer   BaseFont	ToUnicodepdf_version)(pydyf
Dictionaryvalues
setdefaultrb   rq   r]   rr   r   r   r   r   r   rF   Stream
add_object	referencer   r   r   r   rH   	enumerategetGlyphSetr$   ry   getBestCmap
getGlyphIDr.   r   ro   r   r\   streamrd   r`   extendrf   _build_bitmap_font_dictionary_build_vector_font_dictionary)pdffontsr  r   r   	pdf_fontsfonts_by_file_hashfontfont_references_by_file_hash	file_hash
file_fontsr   	file_font
font_extrafont_streamfont_widthsr   r   r   r   r1   r)   
to_unicodecmap_length
cmap_itemsbatch_lengthtextunicode_codepointsfont_dictionarys                                r%   build_fonts_dictionaryr2    s     "I%%dii4;;DA #% !3!9!9!;	!};; $,,'	1$1)..1 (

4+, 99))9k*BCJ))9c$:K:K6L*MNJllD$5$5#6
V{#2=2G2G$/) "<, $,,++K99D 

4#4#45II$**=F "B%f&8&8&:&A&A&CD5!&t!3dii!?A E%11399;))#.$"%f+DK  <
 \\ #" -56
 $i4::<(
tK#-./AsK!c'$9:L$$~\%B%I%I%KL)!C%1c	:t%'WW -NHL-N &N"!!((c{#&8%9;BBDF  ;
 $$\2 0 	   " 	
 	z"**DKKqQ78		#--	,
  ;;)K6K *K,YY79OQ 	'.88	)) B r(   c                   ^7^8^9 [         R                  " / SQ5      U S'   [         R                  " / SQ5      U S'   U(       a  [        [        UR                  5      5      nO[        [        S5      5      nUS   US   p/ n	[        U5       H1  n
U
S-
  U;  a  U	R                  U
5        U	R                  S	U
 35        M3     XpS
'   XS'   [         R                  " S[         R                  " U	5      S.5      U S'   [         R                  " 0 5      n[        R                  " UR                  5      n[        XR                  S9nUS   R                  S   nS/X-
  S-   -  n0 nUR                  5        GH\  u  nn
U
R                  5       nUR!                  U5      nUS:X  a  U
R"                  nUS   R$                  S   R&                  nU H  nUR(                  nUR*                  nUUs=::  a  U::  d  M*  O  M.  UR,                  R.                  nUR,                  R0                  =nm9UR,                  R2                  nUR,                  R4                  n  O   [6        R8                  " SU 35        GM   US;   a  SOSnU
R"                  US  nU
R"                  SS u  nm9[:        R=                  U
R"                  SS SSS9n[:        R=                  U
R"                  SS SSS9nU
R"                  S   nUU-
  nUU;   a  UUUU-
  '   [?        T9S-  5      nT9UUUUS S S.=nUU'   ST9U4;   d  U(       d  SUS'   GM  US;   a  UUS'   GM  US ;   a  ST9S-  -
  S-  m8[A        [;        URC                  5       S!5      5      SS  m7T7RE                  S[G        U5      -  5      m7S"RI                  U7U8U94S# j[        U5       5       5      n [;        U S5      RK                  UU-  S5      US'   GMr  US$;   a  / =n!US%'   US&:X  a  SOSn"[:        R=                  UU"U"S-    S5      n#[        U#5       H{  n$U"S-   U$S-  -   n%[:        R=                  UU%U%S-    S5      n&[:        R=                  UU%S-   U%S-    SSS9n'[:        R=                  UU%S-   U%S-    SSS9n(U!R                  U&U'U(S'.5        M}     GM2  [6        R8                  " S(U 35        [M        UU-  5      US'   GM_     UR                  5        GH  u  nnUU;  a  M  US)   nUS*   m9US+   nUS,   n'US-   n(US   GcM  UU-  n)[:        R=                  [M        U)5      S5      n*US%    GH  n+U+S,   n,U+S-   n-U+S.   n.U.U;  a  [6        R8                  " S/U. 35        M4  UU.   n+U+S   c  [6        R8                  " S0U. 35        MZ  [        U+S+   5       H  n/[O        U/U+S)   -  U/S-   U+S)   -  5      n0U+S   U0   n1[:        R=                  U1S5      n2US-  UU--
  U/-
  S-
  -  n3UU+S)   -
  n4U4S:  a	  U2U4S-  -  n2OU4S:  a	  U2U4* S-  -  n2U,S:  a  U2U,-  n2OU,S:  a  U2U,* -  n2U2SUS-  -  -  n2U2U3-  n2U*U2-  n*M     GM     U*RK                  U)S5      n5OUS   n5[         RP                  " S1T9 S2U S3U' S3U( S43RS                  5       S5S6S7T9S8US9S:S;U5S</US=9n6URU                  U65        U6RV                  UU'   GM     URU                  U5        [         R                  " U5      U S>'   URV                  U S?'   g )@N)r   r   r   r   FontBBox)r   r   r   r   r   r   
FontMatrix   r   r?   r   /	FirstCharLastCharz	/Encoding)r  DifferencesEncodingr   r<      r=   z"Unknown bitmap metrics for glyph: )r   r      r=  r   r  bigT)signedrA   )r$   heightxystriderr   	subglyphsr(   rr   )r   r5   )r   r<        r*   c              3   L   >#    U  H  nTUT-  US -   T-   TS-  -   v   M     g7f)r   0Nr   )r0   r   bitspaddingr$   s     r%   r2   0_build_bitmap_font_dictionary.<locals>.<genexpr>  s4      "(&A QYA/'C-?&s   !$)r=  	   rD  rL  )idrA  rB  z!Unsupported bitmap glyph format: rC  r$   r@  rA  rB  rM  zUnknown subglyph: z"Unsupported subglyph in subglyph: s   0 0 d0z 0 0  z cms   BIs   /IM trues   /Ws   /Hs   /BPC 1s   /D [1 0]s   IDs   EIr  Widths	CharProcs),r  Arrayr   r   r   ro   rq   r  r   r   rF   r   rH   
strikeDatar]   	getFormatr  datastrikesindexSubTablesfirstGlyphIndexlastGlyphIndexr   r@  r$   horiBearingXhoriBearingYr   r   r   
from_bytesr   binr  zfillr   r`   to_bytesbytesslicer  rd   r  r  ):r1  r  r#  r   r  r   charsfirstlastdifferencesr   
char_procsr   r   font_glyphsglyphs_infor)   glyph_formatglyph_idrT  	subtablessubtablefirst_index
last_indexr@  r   	bearing_x	bearing_y
data_start
position_yrC  
glyph_infobitmap_bitsrD  r   number_of_componentsjrH   subglyph_idrA  rB  length
bitmap_intsubglyphsub_xsub_ysub_idrow_y	row_slicerowrow_intshiftstride_differencerr   bitmap_streamrI  rJ  r$   s:                                                          @@@r%   r  r  z  s   "'++l";OJ$)KK0B$COL!fTYY'(eCj!(E"I4K19F"u%Qug;'   $)K "&J"'"2"2{{;/4 #OJ !!"%J

4,,-II**5F.++A.KSDL1$%FK!'')
U($$S) 1::Dv..q1@@I%&66%44
(8j88%--44F&.&6&6&<&<<Ge ( 0 0 = =I ( 0 0 = =I & !CH:NO*i7QJ::jk*D!JJqOMFEuzz!AdKIuzz!AdKIjjmG'
u'.F8e#$eai.
 	

[* t#&Jx V##'Jx Y&EAI!+Gs488:r*+AB/D::a#d)m,D'' "(v"( (K $'{A#6#?#?QV#WJx V#244I
;/!Q&AA#&>>$q1+u#E /0Q1q5)!nnT%a-@%HNN4aa#8%NMNN4aa#8%NM  !!!DE 1 NN>|nMN#(&#9Jx E *H !, 1 1 3*5  H%7#H%sOsOh'f_Ffu=J&{3  !$,NN%7x#@A&v.H%-NN%Gx#PQ"8H#56E % 22hx&88!:I #8,Y7C!nnS%8G"QJ&5.5*@1*DEE(.(1C(C%(1,$5$99*Q.%6$6$::qyE)UF*qFQJ.G%G')J% 7 4>  ((7F)FgU6(!A3as#.5575665
&
 
 	}%,66
8y !4| NN: %F 3OH#-#7#7OK r(   c                    SUR                   S:X  a  SOS 3nU(       a  [        UR                  5       5      OSnSUR                  XR                  4n	UR
                  n
[        U5      S:  a5  [        [        UR                  R                  5       5      5      S:X  a  U
S-  n
[        R                  " SSS	UR                  S
[        R                  " UR                  5      SU
S[        R                  " U	5      SUR                  SUR                  SUR                  SU	S   SUR                   SUR"                  Xu05      n[%        U5      S::  a  ['        UR                  5      n[)        US   S-   S-  5      nS/U-  S-  nU H  nSX'   M	     [        R*                  " [-        SR/                  U5      S5      R1                  US5      4US9nUR3                  U5        UR4                  US'   UR                   S:X  a  SUS'   UR3                  U5        [        R                  " 5       n['        U5       HW  nUS-
  U;  a7  UR7                  U5        [        R                  " 5       nUR7                  U5        WR7                  UU   5        MY     [        R                  " SSUR                   S:X  a  SOS 3UR                  [        R                  " [        R                  " S 5      [        R                  " S!5      SS".5      S#UUR4                  S$.5      nUR3                  U5        S%U S&'   [        R                  " UR4                  /5      U S''   g )(NFontFiler   r  r   r   r   r  z/FontDescriptorFontName
FontFamilyFlagsr4  ItalicAngleAscentDescent	CapHeightStemVStemHz1.4r?   r=  rH  1r*   r>  r  CIDSetr   r   r
  z/CIDFontTypeAdobeIdentity)RegistryOrdering
Supplementz	/Identity)r  r   r  CIDSystemInfoCIDToGIDMapWFontDescriptorz/Identity-Hr;  DescendantFonts)r   r   r  rk   ri   r   r   setr   r  r  rf   StringrN   rQ  rw   r~   r   strr   r   r  r   r`   r^  r  r  rq   )r1  r  r#  r   r  r  r  	font_filemax_xbboxr   font_descriptorcidspadded_widthrI  cidr  
pdf_widthsr   current_widthssubfont_dictionarys                        r%   r  r    s   		U 21:;I$*C Et||UKK0DJJE
6{Q3s4;;#5#5#789Q>&&!DIIell4;;/EKK%t(($++4<<T!W( O ;5 dkk"T"X\Q./u|#a'CDI "++L%@B 	v$*$4$4!yyE%0	"NN?#JF^q5a "[[]Nn-fQi(  ))!tyyE'9!q!ABII))W-Z0+
 
 #)33+  NN%&"/OJ).6H6R6R5S)TO%&r(   )$__doc__r   rc   hashlibr   loggingr   mathr   r  r   r   fontTools.ttLibr   r   r	   fontTools.varLib.mutatorr
   loggerr   r   text.constantsr   text.ffir   r   r   r   r   
text.fontsr   r   r   r2  r  r  r   r(   r%   <module>r     sV     	 	      6 6 < ) 2 H H CB: B:J^B^8B<Ur(   