Ë
    £ëiÿm  ã                   óÞ   — d Z ddlZddlZddlmZ ddlmZ ddlmZ ddl	Z	ddl
mZ ddlmZmZmZ ddlmZ d	d
lmZmZ d	dlmZ d	dlmZmZmZmZmZ d	dlmZmZ  G d„ d«      Z d„ Z!d„ Z"d„ Z#y)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                   ó@   — e Zd Zd„ Zd„ Zd„ Zed„ «       Zd„ Zd„ Z	d„ Z
y)	ÚFontc           	      ó  ‡— t        j                  |«      | _        t        |«      | _        t        | j                  «      | _        t        j                  | j                  «      | _	        || _
        t        j                  |«      | _        t        j                  t        j                  |«      «      j!                  «       | _        i | _        t        j&                  |«      }|t        j(                  k7  rst        j                  |«      j!                  «       j+                  d«      D �ci c]2  }|j+                  d«      d   t-        |j+                  d«      d   «      “Œ4 c}| _        | j$                  j/                  d«      x}r't1        |«      | _        t        j4                  ||«       nt        j6                  |«      | _        | j$                  j/                  d«      r%t        j8                  |t         j:                  «       n?| j$                  j/                  d«      r$t        j8                  |t         j<                  «       | j$                  j/                  d«      xŠ�;t?        tA        jB                  «       ˆfd	„¬
«      d   }t        jD                  ||«       t        j                  t        jF                  |«      «      }djI                  d„ tK        |d¬«      jM                  «       d d D «       «      | _'        tQ        j*                  d|«      d   }	d| jN                  jS                  «       z   dz   |	jU                  dd«      z   | _+        | j                  ršt        jX                  |t        j(                  «      }
t1        t        jZ                  |
«      t\        z  | j                  z  dz  «      | _/        t1        t        j`                  |
«      t\        z  | j                  z  dz  «       | _1        ndx| _/        | _1        t        jd                  dd«      }t        jd                  d«      }t        jd                  d«      }t        jf                  | j                  d||«       g | _4        tk        |d   «      D ]W  }t        jl                  ||   |«       | jh                  jo                  t        j                  |«      j!                  «       «       ŒY d| _8        d| jh                  v rŽd| jh                  v r€d| jh                  v rkt        jr                  dd«      }t        jt                  | j                  |«      }t        jv                  |«      dk(  rd| _8        t        jx                  |«       nd| _8        d| _=        t        j|                  | j                  «      | _?        t        j€                  | j                  «      | _A        t        j„                  | j                  «      | _C        t        jˆ                  | j                  «      | _E        d | _F        d | _G        i | _H        i | _I        i | _J        d| _K        d!| _L        | j                  r| xj˜                  d"z  c_L        d#|	j+                  d«      v r| xj˜                  d$z  c_L        y y c c}w )%Nú,ú=r   é   ÚweightÚitalÚslntÚwdthc                 ó&   •— t        | d   ‰z
  «      S )Nr   )Úabs)ÚitemÚwidths    €úT/var/www/html/chat/reports/venv/lib/python3.12/site-packages/weasyprint/pdf/fonts.pyú<lambda>zFont.__init__.<locals>.<lambda>4   s   ø€ ¤ T¨!¡W¨u¡_Ó!5€ ó    )ÚkeyÚ c              3   ó>   K  — | ]  }t        d |dz  z   «      –— Œ y­w)éA   é   N)Úchr©Ú.0Úletters     r$   ú	<genexpr>z Font.__init__.<locals>.<genexpr>:   s%   è ø€ ò LØ&,ŒC��V˜b‘[Ñ ×!ñLùs   ‚F)Úusedforsecurityé   s    [#@]ó   /ó   +ó    ó   -éè  zunsigned int *éd   zhb_tag_t[100]zchar[4]ÚEBDTÚEBLCÚglyfs   glyféÿÿÿÿTéP   é   é@   s   Serifr   )Mr   Ú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ÚdecodeÚfamilyÚ
variationsÚ%pango_font_description_get_variationsÚNULLÚ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Úhb_face_get_glyph_countÚglyph_countÚstemvÚstemhÚwidthsÚ
to_unicodeÚmissingÚused_in_formsÚflags)ÚselfÚ
pango_fontÚdescriptionrF   rM   Úpartr   ÚstretchÚdescription_stringrc   Úpango_metricsÚtable_countÚ
table_tagsÚ
table_nameÚiÚtagÚblobr#   s                    @r$   Ú__init__zFont.__init__   s,  ø€ Ü×3Ñ3°JÓ?ˆŒÜ-¨jÓ9ˆŒÜ.¨t¯|©|Ó<ˆÔÜ×/Ñ/°·±Ó=ˆŒ
à"ˆŒÜ×;Ñ;¸KÓHˆŒ
Ü—j‘jÜ×3Ñ3°KÓ@óBßBHÁ&Ã(ð 	Œð ˆŒÜ×@Ñ@ÀÓMˆ
ØœŸ™Ò!ô  ŸJ™J zÓ2×9Ñ9Ó;×AÑAÀ#ÓFöHàð —
‘
˜3“ Ñ"¤E¨$¯*©*°S«/¸!Ñ*<Ó$=Ñ=òHˆDŒOð —_‘_×(Ñ(¨Ó2Ð2ˆ6Ð2Ü ›-ˆDŒKÜ×3Ñ3°KÀÕHä×AÑAÀ+ÓNˆDŒKØ�?‰?×Ñ˜vÔ&Ü×2Ñ2ØœU×5Ñ5õ7à�_‰_× Ñ  Ô(Ü×2Ñ2ØœU×6Ñ6ô8à—_‘_×(Ñ(¨Ó0Ð0ˆEÐ=ÜÜ%×+Ñ+Ó-Û5ô7à78ñ:ˆGô ×4Ñ4°[À'ÔJÜ ŸZ™ZÜ×2Ñ2°;Ó?óAÐð —G‘Gñ LäÐ%°uÔ=×DÑDÓFÀrÈÐJôLó LˆŒ	ô
 �x‰x˜Ð"4Ó5°aÑ8ˆØ˜4Ÿ9™9×+Ñ+Ó-Ñ-°Ñ4°t·|±|ÀDÈ$Ó7OÑOˆŒ	ð �>Š>Ü!×8Ñ8¸ÄSÇXÁXÓNˆMÜÜ×3Ñ3°MÓBÄZÑOØ—‘ñØ!%ñ&ó'ˆDŒKô "Ü×4Ñ4°]ÓCÄjÑPØ—‘ñØ!%ñ&ó'ð 'ˆD�Lð *+Ð*ˆDŒK˜$œ,ô —g‘gÐ.°Ó4ˆÜ—W‘W˜_Ó-ˆ
Ü—W‘W˜YÓ'ˆ
Ü×'Ñ'¨¯©°a¸ÀjÔQØˆŒÜ�{ 1‘~Ó&ò 	@ˆAÜ×%Ñ% j°¡m°ZÔ@Ø�K‰K×ÑœsŸz™z¨*Ó5×<Ñ<Ó>Õ?ð	@ð ˆŒØ�T—[‘[Ñ  V¨t¯{©{Ñ%:Ø˜Ÿ™Ñ$Ü×1Ñ1°'¸2Ó>�Ü×7Ñ7¸¿¹ÀcÓJ�Ü×.Ñ.¨tÓ4¸Ò9Ø"&�D”KÜ×(Ñ(¨Õ.à"�”ØˆÔÜ×-Ñ-¨d¯l©lÓ;ˆŒ	Ü×/Ñ/°·±Ó=ˆŒÜ×/Ñ/°·±Ó=ˆŒÜ#×;Ñ;¸D¿L¹LÓIˆÔØˆŒ
ØˆŒ
ØˆŒØˆŒØˆŒØ"ˆÔð "ˆŒ
Ø�:Š:Ø�JŠJ˜,Ñ&�JØ�t—z‘z $Ó'Ñ'Ø�JŠJ˜,Ñ&ŽJð (ùò]Hs   Ä)7Z
c                 óò   — || j                   vr[| j                  t        | j                   «      z   }|dkD  r%t        j                  d| j
                  › d�«       d}|| j                   |<   | j                   |   S )uJ   Get a glyph id thatâ€™s not used in the font, for given Unicode codepoint.iÿÿ  zToo many glyphs missing from "z!", expect text selection problems)r�   r|   Úlenr   ÚwarningrL   )r„   Ú	codepointÚnext_unused_glyph_ids      r$   Úget_unused_glyph_idzFont.get_unused_glyph_idt   sw   € à˜DŸL™LÑ(Ø#'×#3Ñ#3´c¸$¿,¹,Ó6GÑ#GÐ Ø# kÒ1Ü—‘Ø4°T·[±[°Mð B5ð 5ô6ð (3Ð$Ø&:ˆD�L‰L˜Ñ#Ø�|‰|˜IÑ&Ð&r&   c                 óö  — | j                  ||«       d| j                  v �r t        j                  | j                  «      }t        || j                  ¬«      }|d   j                  D �ci c]  }|j                  |“Œ }}d|v r'd| j                  vr| j                  | j                  d<   d|v r'd| j                  vr| j                  | j                  d<   d|v r_d| j                  vrQd}| j                  dk(  r1|d   j                  dk(  r|d   j                  }n|d   j                  }|| j                  d<   d|v r3d| j                  vr%t        | j                  d	k(  «      | j                  d<   t        j                  «       }	 t!        || j                  d
¬«      }|j#                  |«       |j%                  «       | _        | j0                  s| j2                  �rtt        j                  | j                  «      }t        || j                  ¬«      }	 d| j                  vsd| j                  vrš t5        j6                  d«      «       |d<    t5        j6                  d«      «       |d<   |j9                  «       |d   _        |d   j:                  D �
ci c]&  }
|
t5        j<                  d«      j?                  «       “Œ( c}
|d   _         n=|d   j@                  D ]+  }t5        j<                  d«      j?                  «       |d   |<   Œ- dD ]
  }||v sŒ||= Œ t        j                  «       }|j#                  |«       |j%                  «       | _        yyc c}w # t&        $ rE}	t)        j*                  d| j,                  › d�«       t)        j.                  d|	¬«       Y d}	~	�ŒÜd}	~	ww xY wc c}
w # tB        $ rD}	t)        j*                  d| j,                  › d�«       t)        j.                  d|	¬«       Y d}	~	yd}	~	ww xY w)zRemove useless data from font.Úfvar©Ú
fontNumberÚwghtÚopszr   r   r   r   r   T)ÚstaticzUnable to instantiate "z" variable fontúOriginal exception:©Úexc_infoNÚlocar;   )ÚCBDTÚCBLCzSVG zUnable to save emoji font "ú")"r   rk   ÚioÚBytesIOrC   r   rE   ÚaxesÚaxisTagrM   r   rF   rH   ÚmaxValueÚminValueÚintr
   ÚsaveÚgetvalueÚ	Exceptionr   r”   rL   Údebugrx   rz   r	   ÚgetTableClassÚgetGlyphOrderÚ
glyphOrderÚgetTableModuleÚGlyphÚglyphsr   )r„   r€   ÚhintingÚ	full_fontÚttfontÚaxisr¨   r   Úpartial_fontÚ	exceptionrc   Úglyphr�   Úoutput_fonts                 r$   Úcleanz
Font.clean€   ss  € ð 	�‰�J Ô(ð �T—[‘[Ò ÜŸ
™
 4×#4Ñ#4Ó5ˆIÜ˜I°$·*±*Ô=ˆFØ39¸&±>×3FÑ3FÖG¨4�D—L‘L $Ñ&ÐGˆDÐGØ˜‰~ &°·±Ñ"?Ø*.¯+©+�—‘ Ñ'Ø˜‰~ &°·±Ñ"?Ø*.¯.©.�—‘ Ñ'Ø˜‰~ &°·±Ñ"?Ø�Ø—:‘: ’?Ø˜F‘|×,Ñ,°Ò1Ø# F™|×4Ñ4™à# F™|×4Ñ4˜Ø*.�—‘ Ñ'Ø˜‰~ &°·±Ñ"?Ü*-¨d¯j©j¸A©oÓ*>�—‘ Ñ'ÜŸ:™:›<ˆLð<Ü0°¸¿¹ÐQUÔV�Ø—‘˜LÔ)ð
 %1×$9Ñ$9Ó$;�Ô!ð �8Š8�t—x“xÜŸ
™
 4×#4Ñ#4Ó5ˆIÜ˜I°$·*±*Ô=ˆFðHà §¡Ñ,°¸d¿k¹kÑ0IØ%A¤V×%9Ñ%9¸&Ó%AÓ%C�F˜6‘NØ%A¤V×%9Ñ%9¸&Ó%AÓ%C�F˜6‘NØ06×0DÑ0DÓ0F�F˜6‘NÔ-ð %+¨6¡N×$=Ñ$=ö-?à ð œf×3Ñ3°FÓ;×AÑAÓCÑCò-?�F˜6‘NÕ)ð "(¨¡×!6Ñ!6ò V˜Ü06×0EÑ0EÀfÓ0M×0SÑ0SÓ0U˜˜v™ uÒ-ðVà":ò /�JØ! VÒ+Ø" :Ñ.ð/ô !Ÿj™j›l�Ø—‘˜KÔ(Ø$/×$8Ñ$8Ó$:�Õ!ð)  ùò5 Høô& ò HÜ—‘Ð!8¸¿¹¸À_ÐUÔVÜ—‘Ð2¸Y×GÓGûðHüò -?øô ò HÜ—‘Ð!<¸T¿[¹[¸MÈÐKÔLÜ—‘Ð2¸Y×GÒGûðHúsP   Á)MÆ)M ÈA?N+ Ê+N&Ê<AN+ Ì?N+ Í	N#Í:NÎN#Î&N+ Î+	O8Î4:O3Ï3O8c                 ó.   — | j                   d d dk(  rdS dS )Nr>   s   OTTOÚotfÚttf)rC   )r„   s    r$   Útypez	Font.type½   s!   € à×)Ñ)¨"¨1Ð-°Ò8ˆuÐC¸eÐCr&   c                 óŽ   — |syt         r*t        j                  ddd«      r| j                  ||«       y| j	                  ||«       y)z*Remove unused glyphs and tables from font.Nr>   r   r   )r   r   Úhb_version_atleastÚ_harfbuzz_subsetÚ_fonttools_subset)r„   r€   r·   s      r$   r   zFont.subsetÁ   s<   € áØåœx×:Ñ:¸1¸aÀÔCà×!Ñ! *¨gÕ6à×"Ñ" :¨wÕ7r&   c                 ó   — t        j                  t        j                  «       t        j                  «      }t        j
                  |«      }t        j                  dt        |«      › d�t        |«      «      }t        j                  ||t        |«      «       t        j                  t        j                  z  t        j                  z  }| j                  r|t        j                  z  }t        j                   ||«       t        j"                  |t        j$                  «      }t'        d„ dD «       «      }t        j                  dt        |«      › d�|«      }	t        j                  ||	t        |«      «       t        j                  t        j(                  | j*                  |«      t        j,                  «      }
t        j
                  |«      }t'        t/        t1        |«      dz   «      «      }t        j                  dt        |«      › d�|«      }t        j                  ||t        |«      «       t        j                  t        j                  z  }|s|t        j2                  z  }| j                  r|t        j                  z  }t        j                   ||«       t        j                  t        j(                  |
|«      t        j,                  «      }
|
rt5        |
«      }|r|| _        yt9        j:                  d| j<                  › d�«       y)	zSubset font using Harfbuzz.zhb_codepoint_t[ú]c              3   óH   K  — | ]  }t        j                  |d «      –— Œ y­w)r<   N)r   rp   )r.   rc   s     r$   r0   z(Font._harfbuzz_subset.<locals>.<genexpr>ã   s!   è ø€ ò (ÀdœH×7Ñ7¸¸b×Añ (ùs   ‚ ")s   BASEs   DSIGs   EBDTs   EBLCs   EBSCs   GPOSs   GSUBs   JSTFs   LTSHs   PCLTs   SVG r   NúUnable to subset "z" with HarfBuzz)r   Úgcr   Úhb_subset_input_create_or_failÚhb_subset_input_destroyÚhb_subset_input_glyph_setri   r“   Úsortedr   Úhb_set_add_sorted_arrayÚHB_SUBSET_FLAGS_RETAIN_GIDSÚ(HB_SUBSET_FLAGS_PASSTHROUGH_UNRECOGNIZEDÚHB_SUBSET_FLAGS_DESUBROUTINIZEr�   ÚHB_SUBSET_FLAGS_NOTDEF_OUTLINEÚhb_subset_input_set_flagsÚhb_subset_input_setÚHB_SUBSET_SETS_DROP_TABLE_TAGÚtupleÚhb_subset_or_failrB   Úhb_face_destroyrl   ÚmaxÚHB_SUBSET_FLAGS_NO_HINTINGr   rC   r   r”   rL   )r„   r€   r·   Ú	hb_subsetÚgid_setÚ	gid_arrayrƒ   Údrop_setÚdrop_tablesÚdrop_tables_arrayrB   ÚkeeprC   s                r$   rÆ   zFont._harfbuzz_subsetÌ   s|  € ä—F‘FÜ×:Ñ:Ó<Ü×3Ñ3ó5ˆ	ô
 "×;Ñ;¸IÓFˆÜ—G‘G˜o¬c°*«oÐ->¸aÐ@Ä&ÈÓBTÓUˆ	Ü×(Ñ(¨°)¼SÀ»_ÔMô ×7Ñ7Ü×DÑDñEä×:Ñ:ñ;ð 	ð �<Š<Ø”_×CÑCÑCˆEÜ×1Ñ1°)¸UÔCô #×6Ñ6Ø”×DÑDóFˆäñ (ð O'ô (ó (ˆô  ŸG™G o´c¸+Ó6FÐ5GÀqÐ$IÈ;ÓWÐÜ×(Ñ(¨Ð3DÄcÈ+ÓFVÔWô —&‘&Ü×-Ñ-¨d¯l©l¸IÓFÜ×$Ñ$ó&ˆô
 "×;Ñ;¸IÓFˆÜ”Uœ3˜z›?¨QÑ.Ó/Ó0ˆÜ—G‘G˜o¬c°$«i¨[¸Ð:¸DÓAˆ	Ü×(Ñ(¨°)¼SÀ»YÔGô ×DÑDÜ×:Ñ:ñ;ð 	ñ Ø”_×?Ñ?Ñ?ˆEØ�<Š<Ø”_×CÑCÑCˆEÜ×1Ñ1°)¸UÔCô —&‘&Ü×-Ñ-¨g°yÓAÜ×$Ñ$ó&ˆñ
 Ü-¨gÓ6ˆLÙØ$0�Ô!Øä�‰Ð+¨D¯K©K¨=¸ÐHÕIr&   c           
      ó&  — t        j                  | j                  «      }t        j                  ddd|dt        | j                  «      ¬«      }|xj                  g d¢z  c_        t        j                  |«      }|j                  |¬«       	 t        || j                  ¬«      }t        dt        ¬«      5 }|j                  |«       ddd«       D ]'  }t        j                  d	| j                   › d
|› �«       Œ) 	 t        j                  «       }	|j#                  |	«       |	j%                  «       | _        y# 1 sw Y   ŒqxY w# t&        $ rD}
t        j                  d| j                   › d�«       t        j(                  d|
¬«       Y d}
~
yd}
~
ww xY w)zSubset font using Fonttools.T)Úretain_gidsÚpassthrough_tablesÚignore_missing_glyphsr·   ÚdesubroutinizeÚnotdef_outline)ÚGSUBÚGPOSÚSVG)Úgidsrš   Ú	fontTools)ÚlevelNz#fontTools warning when subsetting "ú": rË   z" with fontToolsrŸ   r    )r¦   r§   rC   r   ÚOptionsÚboolr�   râ   Ú	SubsetterÚpopulater   rE   r   r   r   r”   rL   r­   r®   r   r°   )r„   r€   r·   r¸   ÚoptionsÚ	subsetterr¹   ÚlogsÚlogÚoptimized_fontr¼   s              r$   rÇ   zFont._fonttools_subset  sU  € ä—J‘J˜t×0Ñ0Ó1ˆ	ô —.‘.Ø°ÈTØ¨DÄÀdÇlÁlÓASôUˆð 	×ÒÒ6Ñ6ÕÜ×$Ñ$ WÓ-ˆ	Ø×Ñ 
ÐÔ+ð	:Ü˜I°$·*±*Ô=ˆFÜ˜k´Ô9ð )¸TØ× Ñ  Ô(÷)àò /�Ü—‘ðØŸ™�} C¨ uð.õ/ñ/ô  ŸZ™Z›\ˆNØ�K‰K˜Ô'Ø .× 7Ñ 7Ó 9ˆDÕ÷)ð )ûô ò 	DÜ�N‰NÐ/°·±¨}Ð<LÐMÔNÜ�L‰LÐ.¸×CÒCûð	Dús0   Â(E Â5D7Ã4E Ä7E Ä<E Å	FÅ:FÆFN)Ú__name__Ú
__module__Ú__qualname__r‘   r—   r¿   ÚpropertyrÃ   r   rÆ   rÇ   © r&   r$   r   r      s<   „ ò]'ò~
'ò;Hðz ñDó ðDò	8ò>Jó@:r&   r   c                 ó^  — t        j                  «       }i }|j                  «       D ]-  }|j                  |j                  g «      j                  |«       Œ/ i }|j                  «       D ]ç  \  }	}
|
d   }|j                  rŒi }|r#|j                  s|
D ]  }i |¥|j                  ¥}Œ |j                  ||d   «       |j                  dk(  rt        j                  ddi«      }n*t        j                  dt        |j                  «      i«      }t        j                  |j                  g||¬«      }| j                  |«       |j                   ||	<   Œé |j                  «       D �]Æ  }|r%|j                  s|j"                  }|j                  }nÒt%        j&                  |j                  «      }t)        ||j*                  ¬«      }i i }}t-        |j/                  «       j                  «       «      D ]$  \  }}|j0                  d	z  |j2                  z  ||<   Œ& |j5                  «       j                  «       D ])  \  }}|j7                  |«      }||vsŒt9        |«      ||<   Œ+ t        j                  g d
¢|¬«      }|j:                  }t        |«      }t=        |j                  «       «      }t?        tA        |dz  «      «      D ]œ  }tC        d||dz  z
  «      }|j                  |› d�jE                  «       «       ||dz  |dz   dz   D ]D  \  }}djG                  d„ |D «       «      }|j                  d|d›d|› d�jE                  «       «       ŒF |j                  d«       Œž |jI                  g d¢«       | j                  |«       t        j                  dd|j                  rdnd› �|jJ                  |j                   dœ«      }|j                  rtM        || ||||«       n!tO        || |||||j                     |d   «       | j                  |«       |j                   ||j                  <   �ŒÉ |S )zBuild PDF dictionary for fonts.r   r·   rÁ   ÚSubtypez	/OpenTypeÚLength1©Úcompressrš   r7   )ó$   /CIDInit /ProcSet findresource beginó   12 dict beginó	   begincmapó   /CIDSystemInfos   << /Registry (Adobe)s   /Ordering (UCS)s   /Supplement 0s   >> defs!   /CMapName /Adobe-Identity-UCS defs   /CMapType 2 defó   1 begincodespacerangeó   <0000> <ffff>ó   endcodespaceranger8   z beginbfcharr   r(   c              3   ó\   K  — | ]$  }|j                  d «      j                  «       › –— Œ& y­w)z	utf-16-beN)ra   Úhexr-   s     r$   r0   z)build_fonts_dictionary.<locals>.<genexpr>m  s/   è ø€ ò -NØ>D�v—}‘} [Ó1×5Ñ5Ó7Ð8Ó9ñ-Nùs   ‚*,ú<Ú04xz> <ú>s	   endbfchar©s   endcmaps-   CMapName currentdict /CMap defineresource popó   endr  ú/Fontz/Typeé   )ÚTyper  ÚBaseFontÚ	ToUnicodeÚpdf_version)(ÚpydyfÚ
DictionaryÚvaluesÚ
setdefaultr_   rn   rZ   ro   r‚   r€   r¿   rÃ   r“   rC   ÚStreamÚ
add_objectÚ	referencer   r¦   r§   r   rE   Ú	enumerateÚgetGlyphSetr#   rv   ÚgetBestCmapÚ
getGlyphIDr,   ÚstreamrÙ   rl   r   rY   ra   r]   Úextendrc   Ú_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½   r/   r'   Úglyph_idÚto_unicode_objectÚto_unicode_streamÚto_unicode_lengthÚto_unicode_itemsÚbatch_lengthÚtextÚunicode_codepointsÚfont_dictionarys                                  r$   Úbuild_fonts_dictionaryr=  *  s3  € ä× Ñ Ó"€IØÐØ—‘“ò BˆØ×%Ñ% d§i¡i°Ó4×;Ñ;¸DÕAðBà#%Ð Ø!3×!9Ñ!9Ó!;ò HÑˆ	�:à˜!‰}ˆØ�;Š;Øð ˆ
Ù˜$×,Ò,Ø'ò D�	ØC 
ÐC¨i×.BÑ.BÐC‘
ðDà�
‰
�:˜w yÑ1Ô2ð �9‰9˜ÒÜ×)Ñ)¨9°kÐ*BÓC‰Jä×)Ñ)¨9´c¸$×:KÑ:KÓ6LÐ*MÓNˆJÜ—l‘l D×$5Ñ$5Ð#6¸
ÈXÔVˆØ�‰�{Ô#Ø2=×2GÑ2GÐ$ YÒ/ð)Hð, —‘“ó @9ˆÙ˜$×,Ò,àŸ+™+ˆKØŸ™‰Jô Ÿ
™
 4×#4Ñ#4Ó5ˆIÜ˜I°$·*±*Ô=ˆFØ&(¨"˜ˆKÜ% f×&8Ñ&8Ó&:×&AÑ&AÓ&CÓDò @‘��5Ø!&§¡¨tÑ!3°d·i±iÑ!?�˜A’ð@à%×1Ñ1Ó3×9Ñ9Ó;ò 7‘�˜Ø!×,Ñ,¨SÓ1�Ø :Ò-Ü+.¨v«;�J˜xÒ(ð7ô
 "ŸL™Lò *"ð -5ô6Ðð .×4Ñ4ÐÜ 
›OÐÜ  ×!1Ñ!1Ó!3Ó4ÐÜ”tÐ-°Ñ3Ó4Ó5ò 	3ˆAÜ˜sÐ$5¸¸C¹Ñ$?Ó@ˆLØ×$Ñ$¨ ~°\Ð%B×%IÑ%IÓ%KÔLØ/°°#±°q¸±s¸C±iÐ@ò F‘��tØ%'§W¡Wñ -NØHLô-Nó &NÐ"à!×(Ñ(Ø˜˜c�{ #Ð&8Ð%9¸Ð;×BÑBÓDõFðFð
 ×$Ñ$ \Õ2ð	3ð 	× Ñ ò "ô 	ð
 	�‰Ð(Ô)Ü×*Ñ*ØØ D§K¢K™q°QÐ7Ð8ØŸ	™	Ø*×4Ñ4ñ	,
ó ˆð �;Š;Ü)Ø  d¨K¸À6õKô *Ø  d¨K¸Ø,¨T¯Y©YÑ7¸ÀÑ9OôQð 	�‰�Ô'Ø.×8Ñ8ˆ	�$—)‘)ÓðA@9ðD Ðr&   c                 óú  ‡7‡8‡9— t        j                  g d¢«      | d<   t        j                  g d¢«      | d<   |rt        t        |j                  «      «      }nt        t        d«      «      }|d   |d   }}g }	t        |«      D ].  }
|
dz
  |vr|	j                  |
«       |	j                  d	|
› �«       Œ0 || d
<   || d<   t        j                  dt        j                  |	«      dœ«      | d<   t        j                  i «      }t        j                  |j                  «      }t        ||j                  ¬«      }|d   j                  d   }dg||z
  dz   z  }i }|j                  «       D �]_  \  }}
|
j                  «       }|j!                  |«      }|dk(  rØ|
j"                  }|d   j$                  d   j&                  }|D ]„  }|j(                  }|j*                  }||cxk  r|k  sŒ'n Œ*|j,                  j.                  }|j,                  j0                  x}Š9|j,                  j2                  }|j,                  j4                  } nª t7        j8                  d|j:                  › d|› �«       �Œ|dv rdnd}|
j"                  |d  }|
j"                  dd \  }Š9t<        j?                  |
j"                  dd dd¬«      }t<        j?                  |
j"                  dd dd¬«      }|
j"                  d   }||z
  }||v r||||z
  <   tA        ‰9dz  «      }‰9||||d d dœx}||<   d‰9|fv s|sd|d<   �ŒÄ|d v r||d<   �ŒÏ|d!v r—d‰9dz  z
  dz  Š8tC        t=        |jE                  «       d"«      «      dd  Š7‰7jG                  dtI        |«      z  «      Š7d#jK                  ˆ7ˆ8ˆ9fd$„t        |«      D «       «      } t=        | d«      jM                  ||z  d«      |d<   �Œj|d%v r¼g x}!|d&<   |d'k(  rdnd}"t<        j?                  ||"|"dz    d«      }#t        |#«      D ]€  }$|"dz   |$dz  z   }%t<        j?                  ||%|%dz    d«      }&t<        j?                  ||%dz   |%dz    dd¬«      }'t<        j?                  ||%dz   |%dz    dd¬«      }(|!j                  |&|'|(d(œ«       Œ‚ �Œ*t7        j8                  d)|j:                  › d*|› �«       tO        ||z  «      |d<   �Œb |j                  «       D �]å  \  }}||vrŒ|d+   }|d,   Š9|d-   }|d.   }'|d/   }(|d   �€X||z  })t<        j?                  tO        |)«      d«      }*|d&   D �]  }+|+d.   },|+d/   }-|+d0   }.|.|vr&t7        j8                  d1|j:                  › d*|.› �«       Œ=||.   }+|+d   €&t7        j8                  d2|j:                  › d*|.› �«       Œmt        |+d-   «      D ]›  }/tQ        |/|+d+   z  |/dz   |+d+   z  «      }0|+d   |0   }1t<        j?                  |1d«      }2|dz  ||-z
  |/z
  dz
  z  }3||+d+   z
  }4|4dkD  r	|2|4dz  z  }2n|4dk  r	|2|4 dz  z  }2|,dkD  r|2|,z  }2n|,dk  r|2|, z  }2|2d|dz  z  z  }2|2|3z  }2|*|2z  }*Œ� �Œ |*jM                  |)d«      }5n|d   }5t        jR                  d3‰9› d4|› d5|'› d5|(› d6�jU                  «       d7d8d9‰9d:|d;d<d=|5d>g|¬?«      }6|jW                  |6«       |6jX                  ||<   �Œè |jW                  |«       t        j                  |«      | d@<   |jX                  | dA<   y )BN)r   r   r   r   ÚFontBBox)r   r   r   r   r   r   Ú
FontMatrixé   r   r<   r   ú/Ú	FirstCharÚLastCharz	/Encoding)r  ÚDifferencesÚEncodingrš   r9   é   r:   zUnknown bitmap metrics in "z" for glyph: )r   r   é   rH  r   r  ÚbigT)Úsignedr>   )r#   ÚheightÚxÚyÚstridero   Ú	subglyphsr&   ro   )r   r2   )r   rG  é   é   r(   c              3   óF   •K  — | ]  }‰|‰z  |d z   ‰z   ‰dz  z   –— Œ y­w)r   Ú0Nrÿ   )r.   rŽ   ÚbitsÚpaddingr#   s     €€€r$   r0   z0_build_bitmap_font_dictionary.<locals>.<genexpr>Ù  s5   øè ø€ ò "(àð �Q˜‘Y  A¡¨™Ð/°'¸C±-Õ?ñ"(ùs   ƒ!)rH  é	   rO  rV  )ÚidrL  rM  z$Unsupported bitmap glyph format in "rñ   rN  r#   rK  rL  rM  rW  zUnknown subglyph in "z%Unsupported subglyph in subglyph in "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€   rl   rn   r  r¦   r§   rC   r   rE   Ú
strikeDatarZ   Ú	getFormatr#  ÚdataÚstrikesÚindexSubTablesÚfirstGlyphIndexÚlastGlyphIndexÚmetricsrK  r#   ÚhoriBearingXÚhoriBearingYr   r”   rL   r¬   Ú
from_bytesr   Úbinr  Úzfillr“   r]   Úto_bytesÚbytesÚslicer  ra   r  r  ):r<  r(  r,  r   r  r   ÚcharsÚfirstÚlastÚdifferencesr½   Ú
char_procsr¸   r¹   Úfont_glyphsÚglyphs_infor'   Úglyph_formatr4  r^  Ú	subtablesÚsubtableÚfirst_indexÚ
last_indexrK  ÚadvanceÚ	bearing_xÚ	bearing_yÚ
data_startÚ
position_yrN  Ú
glyph_infoÚbitmap_bitsrO  rŽ   Únumber_of_componentsÚjrE   Úsubglyph_idrL  rM  ÚlengthÚ
bitmap_intÚsubglyphÚsub_xÚsub_yÚsub_idÚrow_yÚ	row_sliceÚrowÚrow_intÚshiftÚstride_differencero   Úbitmap_streamrT  rU  r#   s:                                                          @@@r$   r&  r&  Œ  së  ú€ ä"'§+¡+ªlÓ";€O�JÑÜ$)§K¡KÒ0BÓ$C€O�LÑ!ÙÜ”f˜TŸ_™_Ó-Ó.‰ä”e˜C“jÓ!ˆØ˜‘(˜E "™Iˆ4€EØ€KÜ˜“ò (ˆØ�1‰9˜FÑ"Ø×Ñ˜uÔ%Ø×Ñ˜Q˜u˜g˜;Õ'ð(ð $)€O�KÑ Ø"&€O�JÑÜ"'×"2Ñ"2ØÜ—{‘{ ;Ó/ñ4ó #€O�JÑô ×!Ñ! "Ó%€JÜ—
‘
˜4×,Ñ,Ó-€IÜ�I¨$¯*©*Ô5€FØ˜‘.×+Ñ+¨AÑ.€KØˆS�D˜5‘L 1Ñ$Ñ%€FØ€KØ!×'Ñ'Ó)ó D:‰
ˆˆUØ—‘Ó(ˆØ×$Ñ$ SÓ)ˆð ˜1ÒØ—:‘:ˆDØ˜v™×.Ñ.¨qÑ1×@Ñ@ˆIØ%ò �Ø&×6Ñ6�Ø%×4Ñ4�
Ø (Ô8¨jÖ8Ø%×-Ñ-×4Ñ4�FØ&.×&6Ñ&6×&<Ñ&<Ð<�G˜eØ (× 0Ñ 0× =Ñ =�IØ (× 0Ñ 0× =Ñ =�IÙðô —‘Ø1°$·+±+°¸mÈHÈ:ÐVôXáà*¨iÑ7™¸QˆJØ—:‘:˜j˜kÐ*ˆDØ!ŸJ™J q¨˜O‰MˆF�EÜŸ™ u§z¡z°!°A ¸Àd˜ÓKˆIÜŸ™ u§z¡z°!°A ¸Àd˜ÓKˆIØ—j‘j ‘mˆGØ Ñ'ˆ
Ø�uÑØ'.ˆF�8˜eÑ#Ñ$Ü�e˜a‘i“ˆàØØØØØØñ.
ð 	
ˆ
�[ Ñ*ð �˜�Ñ¡tØ#&ˆJ�xÓ Ø˜VÑ#Ø#'ˆJ�xÓ Ø˜YÑ&Ø˜E A™I‘¨!Ñ+ˆGÜ”s˜4Ÿ8™8›: rÓ*Ó+¨A¨BÐ/ˆDØ—:‘:˜a¤# d£)™mÓ,ˆDØŸ'™'õ "(ä˜v›ô"(ó (ˆKô $' {°AÓ#6×#?Ñ#?ÀÈÁÐQVÓ#WˆJ�xÓ Ø˜VÑ#Ø24Ð4ˆI˜
 ;Ñ/Ø! QÒ&‘¨AˆAÜ#&§>¡>°$°q¸¸1¹°+¸uÓ#EÐ ÜÐ/Ó0ò F�Ø˜Q™ 1 q¡5Ñ)�Ü!Ÿn™n¨T°%¸¸a¹Ð-@À%ÓH�Ü—N‘N 4¨¨a©°°a±Ð#8¸%È�NÓM�Ü—N‘N 4¨¨a©°°a±Ð#8¸%È�NÓM�Ø× Ñ ¨¸!À!Ñ!DÕEòFô �N‰NØ6°t·{±{°mÀ3À|ÀnÐUôWä#(¨°&©Ó#9ˆJ�xÓ ðID:ðL !,× 1Ñ 1Ó 3ó >7Ñˆ�*à˜5Ñ Øð ˜HÑ%ˆØ˜7Ñ#ˆØ˜HÑ%ˆØ�s‰OˆØ�s‰OˆØ�hÑÑ'Ø˜f‘_ˆFÜŸ™¬¨f«°uÓ=ˆJØ& {Ñ3ó  *�Ø  ™�Ø  ™�Ø! $™�Ø Ñ,Ü—N‘NÐ%:¸4¿;¹;¸-ÀsÈ6È(Ð#SÔTØØ& vÑ.�Ø˜HÑ%Ð-ä—N‘NðØ ŸK™K˜=¨¨F¨8ð5ô6ð Ü" 8¨HÑ#5Ó6ò *�EÜ %Ø ¨Ñ 2Ñ2Ø ™ h¨xÑ&8Ñ8ó!:�Ið # 8Ñ,¨YÑ7�CÜ!Ÿn™n¨S°%Ó8�GØ" Q™J¨&°5©.¸5Ñ*@À1Ñ*DÑE�EØ(.°¸(Ñ1CÑ(CÐ%Ø(¨1Ò,ØÐ$5¸Ñ$9Ñ9™Ø*¨QÒ.ØÐ%6Ð$6¸Ñ$:Ñ:˜Ø˜q’yØ EÑ)™Ø šØ U FÑ*˜Ø˜q F¨Q¡J™Ñ.�GØ Ñ%�GØ 'Ñ)‘Jò%*ð *ðB  ×(Ñ(¨°Ó7‰Fà Ñ)ˆFÜŸ™ØØˆg�U˜6˜( ! A 3 a¨ s¨#Ð.×5Ñ5Ó7ØØØ�5Ø�6ØØØ�6˜5ð
&
ð ô
ˆð 	�‰�}Ô%Ø,×6Ñ6ˆ
�8Óð}>7ð@ ‡N�N�:ÔÜ %§¡¨FÓ 3€O�HÑØ#-×#7Ñ#7€O�KÒ r&   c                 ó´	  — d|j                   dk(  rdnd› �}|rt        |j                  «       «      nd}d|j                  ||j                  f}	|j
                  }
t        |«      dkD  r4t        t        |j                  j                  «       «      «      dk(  r|
dz  }
t        j                  ddd	|j                  d
t        j                  |j                  «      d|
dt        j                  |	«      d|j                  d|j                  d|j                  d|	d   d|j                   d|j"                  ||i«      }t%        |«      dk  rŸt'        |j                  «      }t)        |d   dz   dz  «      }dg|z  dz  }|D ]  }d||<   Œ	 t        j*                  t-        dj/                  |«      d«      j1                  |d«      f|¬«      }|j3                  |«       |j4                  |d<   |j3                  |«       t        j                  «       }t'        |«      D ]S  }|dz
  |vr6|j7                  |«       t        j                  «       }|j7                  |«       j7                  ||   «       ŒU t        j                  dd|j                   dk(  rdnd› �|j                  t        j                  t        j                  d«      t        j                  d«      dd œ«      d!||j4                  d"œ«      }|j3                  |«       |j8                  �r¦t        j                  d#d$t        j                  t        j                  d«      t        j                  d«      dd œ«      d%œ«      }t        j*                  g d&¢||¬«      }t;        |j<                  «      }t        |«      }t?        t)        |d'z  «      «      D ]¾  }tA        d'||d'z  z
  «      }|jB                  j7                  |› d(�jE                  «       «       ||d'z  |dz   d'z   D ]R  }||j8                  j                  «       v rdn|}|jB                  j7                  d)|d*›d+|› �jE                  «       «       ŒT |jB                  j7                  d,«       ŒÀ |jB                  jG                  g d-¢«       |j3                  |«       |j4                  | d.<   nd/| d.<   t        j                  |j4                  g«      | d0<   y )1NÚFontFilerÁ   r  r   r   r   r  z/FontDescriptorÚFontNameÚ
FontFamilyÚFlagsr?  ÚItalicAngleÚAscentÚDescentÚ	CapHeightÚStemVÚStemHz1.4r<   rH  rS  Ú1r(   rI  r  ÚCIDSetr  z/CIDFontTypeÚAdobeÚIdentity)ÚRegistryÚOrderingÚ
Supplementz	/Identity)r  r  r  ÚCIDSystemInfoÚCIDToGIDMapÚWÚFontDescriptorz/CMapz/WP-Encod-0)r  ÚCMapNamer¡  )r  r  r  r  s   3 dict dup begins   /Registry (Adobe) defs   /Ordering (Identity) defs   /Supplement 0 defs   end defs   /CMapName /WP-Encod-0 defs   /CMapType 1 defr	  r
  r  r8   z begincidcharr  r  z> s
   endcidcharr  rF  z/Identity-HÚDescendantFonts)$rÃ   rÜ   r  rh   rf   rƒ   r“   Úsetr   r  r  rc   ÚStringrL   r[  rt   r}   r~   ÚstrrÐ   r   r  r¬   r]   ri  r  r  rn   r�   rÙ   r€   rl   rY   r$  ra   r%  )r<  r(  r,  r   r  r  r  Ú	font_fileÚmax_xÚbboxrƒ   Úfont_descriptorÚcidsÚpadded_widthrT  Úcidr$  Ú
pdf_widthsrŽ   Úcurrent_widthsÚsubfont_dictionaryÚ
cmap_extraÚencodingÚ	availableÚavailable_lengthr9  r4  Úfont_glyph_ids                               r$   r'  r'  1  sj  € à §	¡	¨UÒ 2™1¸Ð:Ð;€IÙ$*ŒC�—‘“Ô °€EØˆt�|‰|˜U D§K¡KÐ0€DØ�J‰J€EÜ
ˆ6ƒ{�Q‚œ3œs 4§;¡;×#5Ñ#5Ó#7Ó8Ó9¸QÒ>Ø�ÑˆÜ×&Ñ&ØÐ!Ø�D—I‘IØ”e—l‘l 4§;¡;Ó/Ø�Ø”E—K‘K Ó%Ø�t×(Ñ(Ø�$—+‘+Ø�4—<‘<Ø�T˜!‘WØ�—‘Ø�—‘Ø�9ð(ó €Oô ˆ;Ó˜5Ò Ü�d—k‘kÓ"ˆÜ˜T "™X¨™\¨QÑ.Ó/ˆØˆu�|Ñ# aÑ'ˆØò 	ˆCØˆD�ŠIð	ä—‘Ü�—‘˜“ Ó"×+Ñ+¨L¸%Ó@ÐBØôˆð 	�‰�vÔØ$*×$4Ñ$4ˆ˜Ñ!Ø‡N�N�?Ô#ä—‘“€JÜ�F‹^ò )ˆØˆq‰5˜ÑØ×Ñ˜aÔ Ü"Ÿ[™[›]ˆNØ×Ñ˜nÔ-Ø×Ñ˜f Q™iÕ(ð)ô ×)Ñ)ØØ! t§y¡y°EÒ'9¡!¸qÐ!AÐBØ—I‘IÜ×)Ñ)ÜŸ™ WÓ-ÜŸ™ ZÓ0Øñ+
ó ð
 #ØØ)×3Ñ3ñ+ó Ðð ‡N�NÐ%Ô&Ø‡|ƒ|ô ×%Ñ%ØØ%Ü"×-Ñ-Ü!ŸL™L¨Ó1Ü!ŸL™L¨Ó4Øñ/ó ñ'
ó ˆ
ô —<‘<ò !
ð  ô*ˆô  ˜$Ÿ/™/Ó*ˆ	Ü˜y›>ÐÜ”tÐ,¨sÑ2Ó3Ó4ò 	2ˆAÜ˜sÐ$4°q¸3±wÑ$>Ó?ˆLØ�O‰O×"Ñ" l ^°=Ð#A×#HÑ#HÓ#JÔKØ% a¨¡e¨Q¨q©S°#©IÐ6ò U�Ø%-°·±×1DÑ1DÓ1FÑ%F¡ÈH�Ø—‘×&Ñ&¨¨8°C¨.¸¸=¸/Ð'J×'QÑ'QÓ'SÕTðUð �O‰O×"Ñ" =Õ1ð	2ð 	�‰×Ñò  ô 	ð
 	�‰�xÔ Ø&.×&8Ñ&8ˆ˜
Ò#ð '4ˆ˜
Ñ#Ü).¯©Ð6H×6RÑ6RÐ5SÓ)T€OÐ%Ò&r&   )$Ú__doc__r¦   r`   Úhashlibr   Úloggingr   Úmathr   r  rï   r   ÚfontTools.ttLibr   r   r	   ÚfontTools.varLib.instancerr
   Úloggerr   r   Útext.constantsr   Útext.ffir   r   r   r   r   Ú
text.fontsr   r   r   r=  r&  r'  rÿ   r&   r$   ú<module>rÃ     sW   ðÙ ã 	Û 	Ý Ý Ý ã Ý ß 6Ñ 6Ý >ç )Ý 2ß HÕ Hß C÷S:ñ S:òl_òDb8óJhUr&   