font_manager.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import pygame
  2. if not pygame.font.get_init():
  3. pygame.font.init()
  4. __font_files = {}
  5. __fonts = {}
  6. __initialized = False
  7. def add_fontfile(name: str, ttffile: str,):
  8. global __font_files
  9. __font_files[name] = ttffile
  10. def __get_font_info(fontname: str):
  11. data = fontname.split("_")
  12. return data[0], int(data[1])
  13. def set_font(asname: str, fontname: str):
  14. global __fonts
  15. try:
  16. __fonts[asname] = __fonts[fontname]
  17. except KeyError:
  18. fontinfo = __get_font_info(fontname)
  19. __fonts[fontname] = pygame.font.Font(__font_files[fontinfo[0]], fontinfo[1])
  20. __fonts[asname] = __fonts[fontname]
  21. def get_font(fontname: str):
  22. global __fonts
  23. try:
  24. return __fonts[fontname]
  25. except KeyError:
  26. fontinfo = __get_font_info(fontname)
  27. try:
  28. __fonts[fontname] = pygame.font.Font(__font_files[fontinfo[0]], fontinfo[1])
  29. return __fonts[fontname]
  30. except KeyError:
  31. print("WARN: FontManager - Trying to load '{font}' but not TTF defined for it.".format(font=fontname))
  32. return __fonts["default"]
  33. if __initialized is False:
  34. # Load default font
  35. add_fontfile("default", "fonts/VarelaRound-Regular.ttf")
  36. set_font("default", "default_12")
  37. __initialized = True