Ë
    µ2Úi\  ã                   ó¸   — d Z ddlmZ ddlZddlmZ ddlZddlm	Z	m
Z
 ddlmZ ddlmZ  ej                  d	«      d
„ «       Zd„ Z G d„ d«      Z G d„ de«      Zy)z7
Common functionality between the PDF and PS backends.
é    )ÚBytesION)Úsubseté   )Úfont_managerÚft2font)ÚAFM)ÚRendererBaseé2   c                 ó\   — t        | d«      5 }t        |«      cd d d «       S # 1 sw Y   y xY w)NÚrb)Úopenr   )ÚfnameÚfhs     úZ/var/www/html/acx/venv/lib/python3.12/site-packages/matplotlib/backends/_backend_pdf_ps.pyÚ_cached_get_afm_from_fnamer      s*   € ä	ˆe�TÓ	ð ˜bÜ�2‹w÷÷ ò ús   �"¢+c                 ó–  — t        j                  dd¬«      }|xj                  g d¢z  c_        | j                  d«      rd|_        t        j
                  | |«      5 }t        j                  |¬«      }|j                  |¬«       |j                  |«       t        «       }|j                  |d¬	«       |cd
d
d
«       S # 1 sw Y   y
xY w)aF  
    Subset a TTF font

    Reads the named fontfile and restricts the font to the characters.
    Returns a serialization of the subset font as file-like object.

    Parameters
    ----------
    fontfile : str
        Path to the font file
    characters : str
        Continuous set of characters to include in subset
    T)Úglyph_namesÚrecommended_glyphs)ÚFFTMÚPfEdÚBDFÚmetaz.ttcr   )Úoptions)ÚtextF)ÚreorderTablesN)
r   ÚOptionsÚdrop_tablesÚendswithÚfont_numberÚ	load_fontÚ	SubsetterÚpopulater   Úsave)ÚfontfileÚ
charactersr   ÚfontÚ	subsetterr   s         r   Úget_glyphs_subsetr(      s´   € ô �n‰n¨À$ÔG€Gð ×Òò ñ Õð ×Ñ˜Ô ØˆÔä	×	Ñ	˜( GÓ	,ð °Ü×$Ñ$¨WÔ5ˆ	Ø×Ñ 
ÐÔ+Ø×Ñ˜ÔÜ‹YˆØ�	‰	�" Eˆ	Ô*Ø÷÷ ò ús   ÁAB?Â?Cc                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)ÚCharacterTrackerz²
    Helper for font subsetting by the pdf and ps backends.

    Maintains a mapping of font paths to the set of character codepoints that
    are being used from that font.
    c                 ó   — i | _         y ©N)Úused©Úselfs    r   Ú__init__zCharacterTracker.__init__D   s	   € Øˆ�	ó    c                 óâ   — |j                  |«      }|j                  «       D ]K  \  }}| j                  j                  |j                  t        «       «      j                  t        |«      «       ŒM y)z:Record that string *s* is being typeset using font *font*.N)Ú_get_fontmapÚitemsr-   Ú
setdefaultr   ÚsetÚaddÚord)r/   r&   ÚsÚchar_to_fontÚ_cÚ_fs         r   ÚtrackzCharacterTracker.trackG   sW   € à×(Ñ(¨Ó+ˆØ"×(Ñ(Ó*ò 	?‰FˆB�Ø�I‰I× Ñ  §¡¬3«5Ó1×5Ñ5´c¸"³gÕ>ñ	?r1   c                 ó~   — | j                   j                  |j                  t        «       «      j	                  |«       y)zARecord that codepoint *glyph* is being typeset using font *font*.N)r-   r5   r   r6   r7   )r/   r&   Úglyphs      r   Útrack_glyphzCharacterTracker.track_glyphM   s'   € à�	‰	×Ñ˜TŸZ™Z¬«Ó/×3Ñ3°EÕ:r1   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r0   r=   r@   © r1   r   r*   r*   <   s   „ ñòò?ó;r1   r*   c                   óL   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zˆ fd„Zd„ Z	d„ Z
ˆ xZS )	ÚRendererPDFPSBasec                 ó>   •— t         ‰| �  «        || _        || _        y r,   )Úsuperr0   ÚwidthÚheight)r/   rJ   rK   Ú	__class__s      €r   r0   zRendererPDFPSBase.__init__W   s   ø€ Ü‰ÑÔØˆŒ
Øˆ�r1   c                  ó   — y)NFrE   r.   s    r   ÚflipyzRendererPDFPSBase.flipy\   s   € àr1   c                  ó   — y)NTrE   r.   s    r   Úoption_scale_imagez$RendererPDFPSBase.option_scale_image`   s   € àr1   c                 ó*   — t         j                  d    S )Nzimage.composite_image)ÚmplÚrcParamsr.   s    r   Úoption_image_nocompositez*RendererPDFPSBase.option_image_nocomposited   s   € ô —<‘<Ð 7Ñ8Ð8Ð8r1   c                 ó>   — | j                   dz  | j                  dz  fS )Ng      R@)rJ   rK   r.   s    r   Úget_canvas_width_heightz)RendererPDFPSBase.get_canvas_width_heighti   s   € à�z‰z˜DÑ  $§+¡+°Ñ"4Ð4Ð4r1   c                 óx  •— |dk(  rt         ‰| �  |||«      S |rJ| j                  j                  j	                  |d|«      }|j
                  |j                  |j                  fS t        j                  | j                     rO| j                  |«      }|j                  |«      \  }}}}	}
|j                  «       dz  }||z  }|	|z  }	|
|z  }
||	|
fS | j                  |«      }|j                  |dt         j"                  ¬«       |j%                  «       \  }}	|j'                  «       }
d}||z  }|	|z  }	|
|z  }
||	|
fS )NÚTeXéH   iè  g        )Úflagsg      �?)rI   Úget_text_width_height_descentÚ
_text2pathÚmathtext_parserÚparserJ   rK   ÚdepthrR   rS   Ú_use_afm_rc_nameÚ_get_font_afmÚget_str_bbox_and_descentÚget_size_in_pointsÚ_get_font_ttfÚset_textr   ÚLOAD_NO_HINTINGÚget_width_heightÚget_descent)r/   r9   ÚpropÚismathr^   r&   ÚlÚbÚwÚhÚdÚscalerL   s               €r   r[   z/RendererPDFPSBase.get_text_width_height_descentm   s@  ø€ à�UŠ?Ü‘7Ñ8¸¸DÀ&ÓIÐIÙØ—O‘O×3Ñ3×9Ñ9¸!¸RÀÓFˆEØ—;‘; §¡¨e¯k©kÐ9Ð9Ü�\‰\˜$×/Ñ/Ò0Ø×%Ñ% dÓ+ˆDØ ×9Ñ9¸!Ó<‰MˆAˆq�!�Q˜Ø×+Ñ+Ó-°Ñ4ˆEØ�‰JˆAØ�‰JˆAØ�‰JˆAØ�a˜�7ˆNà×%Ñ% dÓ+ˆDØ�M‰M˜!˜S¬×(?Ñ(?ˆMÔ@Ø×(Ñ(Ó*‰DˆAˆqØ× Ñ Ó"ˆAØˆEØ�‰JˆAØ�‰JˆAØ�‰JˆAØ�a˜�7ˆNr1   c                 ó\   — t        j                  |d| j                  ¬«      }t        |«      S )NÚafm)ÚfontextÚ	directory)r   ÚfindfontÚ_afm_font_dirr   )r/   ri   r   s      r   ra   zRendererPDFPSBase._get_font_afm‡   s*   € Ü×%Ñ%Ø˜%¨4×+=Ñ+=ô?ˆä)¨%Ó0Ð0r1   c                 óÎ   — t         j                  j                  |«      }t        j                  |«      }|j	                  «        |j                  |j                  «       d«       |S )NrY   )r   ÚfontManagerÚ_find_fonts_by_propsÚget_fontÚclearÚset_sizerc   )r/   ri   Úfnamesr&   s       r   rd   zRendererPDFPSBase._get_font_ttfŒ   sM   € Ü×)Ñ)×>Ñ>¸tÓDˆÜ×$Ñ$ VÓ,ˆØ�
‰
ŒØ�‰�d×-Ñ-Ó/°Ô4Øˆr1   )rA   rB   rC   r0   rN   rP   rT   rV   r[   ra   rd   Ú__classcell__)rL   s   @r   rG   rG   R   s+   ø„ ô
ò
òò9ò
5ôò41ö
r1   rG   )rD   Úior   Ú	functoolsÚ	fontToolsr   Ú
matplotlibrR   Ú r   r   Ú_afmr   Úbackend_basesr	   Ú	lru_cacher   r(   r*   rG   rE   r1   r   ú<module>r‡      s^   ðñõ Û å ã ß $Ý Ý (ð €×Ñ�RÓñó ðò
#÷L;ñ ;ô,?˜õ ?r1   