Ë
    ¨ehP  ã                   óÆ   — d Z ddlmZ ddl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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     úa/var/www/skyplay_api_hub/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                 ó0  — t        j                  dd¬«      }|xj                  g d¢z  c_        | j                  d«      rd|_        t        j
                  | |«      }t        j                  |¬«      }|j                  |¬«       |j                  |«       |S )a¢  
    Subset a TTF font

    Reads the named fontfile and restricts the font to the characters.

    Parameters
    ----------
    fontfile : str
        Path to the font file
    characters : str
        Continuous set of characters to include in subset

    Returns
    -------
    fontTools.ttLib.ttFont.TTFont
        An open font object representing the subset, which needs to
        be closed by the caller.
    T)Úglyph_namesÚrecommended_glyphs)ÚFFTMÚPfEdÚBDFÚmetaÚMERGÚTSIVÚZapfÚbdatÚblocÚcidgÚfdscÚfeatÚfmtxÚfondÚjustÚkerxÚltagÚmorxÚtrakÚxrefz.ttcr   )Úoptions)Útext)r   ÚOptionsÚdrop_tablesÚendswithÚfont_numberÚ	load_fontÚ	SubsetterÚpopulate)ÚfontfileÚ
charactersr)   ÚfontÚ	subsetters        r   Úget_glyphs_subsetr6      sŠ   € ô( �n‰n¨À$ÔG€Gð ×Òò ñ Õð. ×Ñ˜Ô ØˆÔä×Ñ˜H gÓ.€DÜ× Ñ ¨Ô1€IØ×Ñ˜JÐÔ'Ø×Ñ�TÔØ€Kó    c                 ó@   — t        «       }| j                  |d¬«       |S )zï
    Convert a TTFont object into a file-like object.

    Parameters
    ----------
    font : fontTools.ttLib.ttFont.TTFont
        A font object

    Returns
    -------
    BytesIO
        A file object with the font saved into it
    F)ÚreorderTables)r   Úsave)r4   r   s     r   Úfont_as_filer;   O   s    € ô 
‹€BØ‡I�Iˆb €IÔ&Ø€Ir7   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__j   s	   € Øˆ�	r7   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)rB   r4   ÚsÚchar_to_fontÚ_cÚ_fs         r   ÚtrackzCharacterTracker.trackm   sW   € à×(Ñ(¨Ó+ˆØ"×(Ñ(Ó*ò 	?‰FˆB�Ø�I‰I× Ñ  §¡¬3«5Ó1×5Ñ5´c¸"³gÕ>ñ	?r7   c                 ó~   — | j                   j                  |j                  t        «       «      j	                  |«       y)zARecord that codepoint *glyph* is being typeset using font *font*.N)r@   rG   r   rH   rI   )rB   r4   Úglyphs      r   Útrack_glyphzCharacterTracker.track_glyphs   s'   € à�	‰	×Ñ˜TŸZ™Z¬«Ó/×3Ñ3°EÕ:r7   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rC   rO   rR   © r7   r   r=   r=   b   s   „ ñòò?ó;r7   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?   )ÚsuperrC   ÚwidthÚheight)rB   r\   r]   Ú	__class__s      €r   rC   zRendererPDFPSBase.__init__}   s   ø€ Ü‰ÑÔØˆŒ
Øˆ�r7   c                  ó   — y)NFrW   rA   s    r   ÚflipyzRendererPDFPSBase.flipy‚   s   € àr7   c                  ó   — y)NTrW   rA   s    r   Úoption_scale_imagez$RendererPDFPSBase.option_scale_image†   s   € àr7   c                 ó*   — t         j                  d    S )Nzimage.composite_image)ÚmplÚrcParamsrA   s    r   Úoption_image_nocompositez*RendererPDFPSBase.option_image_nocompositeŠ   s   € ô —<‘<Ð 7Ñ8Ð8Ð8r7   c                 ó>   — | j                   dz  | j                  dz  fS )Ng      R@)r\   r]   rA   s    r   Úget_canvas_width_heightz)RendererPDFPSBase.get_canvas_width_height�   s   € à�z‰z˜DÑ  $§+¡+°Ñ"4Ð4Ð4r7   c                 óŒ  •— |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'                  «       \  }}	|j)                  «       }
d}||z  }|	|z  }	|
|z  }
||	|
fS )NÚTeXéH   iè  g        )Úflagsg      �?)r[   Úget_text_width_height_descentÚ
_text2pathÚmathtext_parserÚparser\   r]   Údepthrd   re   Ú_use_afm_rc_nameÚ_get_font_afmÚget_str_bbox_and_descentÚget_size_in_pointsÚ_get_font_ttfÚset_textr   Ú	LoadFlagsÚ
NO_HINTINGÚget_width_heightÚget_descent)rB   rK   ÚpropÚismathrp   r4   ÚlÚbÚwÚhÚdÚscaler^   s               €r   rm   z/RendererPDFPSBase.get_text_width_height_descent“   sF  ø€ à�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¬×(9Ñ(9×(DÑ(DˆMÔEØ×(Ñ(Ó*‰DˆAˆqØ× Ñ Ó"ˆAØˆEØ�‰JˆAØ�‰JˆAØ�‰JˆAØ�a˜�7ˆNr7   c                 ó\   — t        j                  |d| j                  ¬«      }t        |«      S )NÚafm)ÚfontextÚ	directory)r   ÚfindfontÚ_afm_font_dirr   )rB   r|   r   s      r   rs   zRendererPDFPSBase._get_font_afm­   s*   € Ü×%Ñ%Ø˜%¨4×+=Ñ+=ô?ˆä)¨%Ó0Ð0r7   c                 ó>  — t         j                  j                  |«      }	 t        j                  |«      }|j	                  «        |j                  |j                  «       d«       |S # t        $ r+ t        j                  t        «      j                  d|«       ‚ w xY w)Nrk   zMThe PostScript/PDF backend does not currently support the selected font (%s).)r   ÚfontManagerÚ_find_fonts_by_propsÚget_fontÚclearÚset_sizeru   ÚRuntimeErrorÚloggingÚ	getLoggerrS   Úwarning)rB   r|   Úfnamesr4   s       r   rv   zRendererPDFPSBase._get_font_ttf²   s‡   € Ü×)Ñ)×>Ñ>¸tÓDˆð		Ü×(Ñ(¨Ó0ˆDØ�J‰JŒLØ�M‰M˜$×1Ñ1Ó3°RÔ8ØˆKøÜò 	Ü×ÑœhÓ'×/Ñ/ð2Ø39ô;ð ð		ús   ¡AA( Á(4B)rS   rT   rU   rC   r`   rb   rf   rh   rm   rs   rv   Ú__classcell__)r^   s   @r   rY   rY   x   s+   ø„ ô
ò
òò9ò
5ôò41ö
r7   rY   )rV   Úior   Ú	functoolsr‘   Ú	fontToolsr   Ú
matplotlibrd   Ú r   r   Ú_afmr   Úbackend_basesr	   Ú	lru_cacher   r6   r;   r=   rY   rW   r7   r   ú<module>rž      sh   ðñõ Û Û å ã ß $Ý Ý (ð €×Ñ�RÓñó ðò
5òp÷&;ñ ;ô,E˜õ Er7   