From f8b311b289c826e21bd6eef457b9e662bb89dbac Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 21 Apr 2019 11:07:37 +0530 Subject: [PATCH] Cache calls to fc_match since FcFontMatch is very slow Fixes #1547 --- kitty/fonts/fontconfig.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/kitty/fonts/fontconfig.py b/kitty/fonts/fontconfig.py index 1712443e6..6a00adee6 100644 --- a/kitty/fonts/fontconfig.py +++ b/kitty/fonts/fontconfig.py @@ -7,7 +7,7 @@ from functools import lru_cache from kitty.fast_data_types import ( FC_SLANT_ITALIC, FC_SLANT_ROMAN, FC_WEIGHT_BOLD, FC_WEIGHT_REGULAR, - fc_list, fc_match, + fc_list, fc_match as fc_match_impl, ) attr_map = {(False, False): 'font_family', @@ -48,6 +48,11 @@ def family_name_to_key(family): return re.sub(r'\s+', ' ', family.lower()) +@lru_cache() +def fc_match(family, bold, italic): + return fc_match_impl(family, bold, italic) + + def find_best_match(family, bold=False, italic=False, monospaced=True): q = family_name_to_key(family) font_map = all_fonts_map(monospaced)