123456789101112131415161718192021222324252627282930313233 |
- import uharfbuzz as hb
- import gflanguages
- import pytest
- langs = gflanguages.LoadLanguages()
- xfail_langs = {"kkh_Lana": "Tai Tham encoding is over-differentiated (see L2/19-365)"}
- @pytest.fixture
- def hb_font():
- # Persuade Harfbuzz we have a font that supports
- # every codepoint.
- face = hb.Face(b"")
- font = hb.Font(face)
- funcs = hb.FontFuncs.create()
- funcs.set_nominal_glyph_func((lambda font, cp, data: cp), None)
- font.funcs = funcs
- return font
- @pytest.mark.parametrize("lang", langs.keys())
- def test_dotted_circle(lang, hb_font):
- if lang in xfail_langs:
- pytest.xfail("Language is expected to fail: " + xfail_langs[lang])
- item = langs[lang]
- samples = item.sample_text.ListFields()
- for sample_name, sample in sorted(samples, key=lambda x: len(x[1])):
- buf = hb.Buffer()
- buf.add_str(sample)
- buf.guess_segment_properties()
- hb.shape(hb_font, buf)
- ok = not any(info.codepoint == 0x25CC for info in buf.glyph_infos)
- assert ok, f"Dotted circle found in {sample} ({lang}.{sample_name.name})"
|