from io import BytesIO

from matplotlib._typing import *
from matplotlib.backend_bases import RendererBase
from matplotlib.font_manager import FontProperties

def get_glyphs_subset(fontfile: str, characters: str) -> BytesIO: ...

class CharacterTracker:
    def __init__(self) -> None: ...
    def track(self, font, s: str) -> None: ...
    def track_glyph(self, font, glyph) -> None: ...

class RendererPDFPSBase(RendererBase):
    def __init__(self, width, height) -> None: ...
    def flipy(self) -> bool: ...
    def option_scale_image(self) -> bool: ...
    def option_image_nocomposite(self) -> bool: ...
    def get_canvas_width_height(self) -> tuple[float, float]: ...
    def get_text_width_height_descent(self, s: str, prop: FontProperties, ismath: bool) -> tuple[float, float, float]: ...
