Use font metrics for wcwidth()

This commit is contained in:
Kovid Goyal 2016-10-25 09:31:28 +05:30
parent b4730e747a
commit ca57eb9d05
2 changed files with 6 additions and 4 deletions

View File

@ -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')

View File

@ -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():