Handle variable fonts like cascadia code that dont have a postfix variation prefix name for some of their faces

This commit is contained in:
Kovid Goyal
2024-05-18 15:12:56 +05:30
parent 815df1e210
commit b017cc0c1e
7 changed files with 97 additions and 65 deletions

View File

@@ -8,10 +8,18 @@ import unittest
from functools import partial
from kitty.constants import is_macos, read_kitty_resource
from kitty.fast_data_types import DECAWM, get_fallback_font, sprite_map_set_layout, sprite_map_set_limits, test_render_line, test_sprite_position_for, wcwidth
from kitty.fast_data_types import (
DECAWM,
get_fallback_font,
sprite_map_set_layout,
sprite_map_set_limits,
test_render_line,
test_sprite_position_for,
wcwidth,
)
from kitty.fonts import family_name_to_key
from kitty.fonts.box_drawing import box_chars
from kitty.fonts.common import all_fonts_map, face_from_descriptor, get_font_files, get_named_style
from kitty.fonts.common import FontSpec, all_fonts_map, face_from_descriptor, get_font_files, get_named_style, spec_for_face
from kitty.fonts.render import coalesce_symbol_maps, render_string, setup_for_testing, shape_string
from kitty.options.types import Options
from kitty.options.utils import parse_font_spec
@@ -93,6 +101,18 @@ class Selection(BaseTest):
d = get_font_files(opts)['medium']
face = face_from_descriptor(d)
self.ae(get_named_style(face)['name'], 'Black')
if has('cascadia code'):
opts = Options()
opts.font_family = parse_font_spec('family="cascadia code"')
opts.italic_font = parse_font_spec('family="cascadia code" variable_name= style="Light Italic"')
ff = get_font_files(opts)
def t(x, **kw):
kw['family'] = 'Cascadia Code'
face = face_from_descriptor(ff[x])
self.ae(FontSpec(**kw).as_setting, spec_for_face('Cascadia Code', face).as_setting)
t('medium', variable_name='CascadiaCodeRoman', style='Regular')
t('italic', variable_name='', style='Light Italic')
class Rendering(BaseTest):