From ca57eb9d05ab3a5398e3f8894ffeed4ab065e3c4 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 25 Oct 2016 09:31:28 +0530 Subject: [PATCH] Use font metrics for wcwidth() --- kitty/fonts.py | 3 ++- kitty/utils.py | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/kitty/fonts.py b/kitty/fonts.py index 8206a9d01..2ed6fa617 100644 --- a/kitty/fonts.py +++ b/kitty/fonts.py @@ -14,7 +14,7 @@ from freetype import ( FT_LOAD_NO_HINTING, FT_PIXEL_MODE_GRAY ) -from .utils import get_logical_dpi +from .utils import get_logical_dpi, set_current_font_metrics def escape_family_name(name): @@ -92,6 +92,7 @@ def set_font_family(family, size_in_pts): underline_thickness = font_units_to_pixels(face.underline_thickness, face.units_per_EM, size_in_pts, dpi[1]) CharTexture = ctypes.c_ubyte * (cell_width * cell_height) glyph_cache = GlyphCache() + set_current_font_metrics(glyph_cache.width) return cell_width, cell_height CharBitmap = namedtuple('CharBitmap', 'data bearingX bearingY advance rows columns') diff --git a/kitty/utils.py b/kitty/utils.py index 83dc351ec..4fa01ddff 100644 --- a/kitty/utils.py +++ b/kitty/utils.py @@ -33,12 +33,13 @@ def wcwidth(c: str) -> int: return 0 if wcwidth.current_font is None: return min(2, wcwidth_native(c)) -wcwidth.current_font = wcwidth.cell_width = None + return wcwidth.current_font(c) +wcwidth.current_font = None -def set_current_font_metrics(current_font, cw: int) -> None: +def set_current_font_metrics(current_font) -> None: wcwidth.cache_clear() - wcwidth.current_font, wcwidth.cell_width = current_font, cw + wcwidth.current_font = current_font def create_pty():