import os
import sys
from PIL import ImageFont

class CFontHandler():

    _font_path:str = None
    _fonts = None

    def __init__(self, font_path = None):
        if font_path is None:
            self._font_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'fonts'))
        else:
            self._font_path = font_path
        self._fonts = {}

    def load_font(self, fnt_type):
        ttf = fnt_type[0]
        size = fnt_type[1]
        if ttf in self._fonts:
            if size in self._fonts[ttf]:
                return self._fonts[ttf][size]
        fn = os.path.join(self._font_path, ttf)
        font = ImageFont.truetype(fn, int(size))
        if ttf not in self._fonts:
            self._fonts[ttf] = {}
        self._fonts[ttf][size] = font
        return self._fonts[ttf][size]
