From 631766222fdcf2b168936b9d80a7a639b6ce7ae1 Mon Sep 17 00:00:00 2001 From: Cosimo Lupo Date: Thu, 3 Feb 2022 12:28:16 +0000 Subject: [PATCH] empty subdivision flag (1F3F4+E007F) should be mapped to uknown flag, not the black flag The substitution BLACK_FLAG + CANCEL_TAG => UNKNOWN_FLAG is alrady handled by the _add_fallback_subs_for_unknown_flags method, added in the previous commit. There's no BLACK_FLAG + CANCEL_TAG => BLACK_FLAG substituion in the current NotoColorEmoji.ttf CBDT font. In fact, it makes much more sense that all unsupported subdivision flag sequences, i.e. BLACK_FLAG + (zero or more non-cancel tags) + CANCEL_TAG, are all displayed with the unknown flag. No reason to special case BLACK_FLAG + CANCEL_TAG. I'm not sure where the conclusion about the BLACK_FLAG + CANCEL_TAG => BLACK_FLAG came from (got to ask Rod). --- colrv1_postproc.py | 28 +--------------------------- 1 file changed, 1 insertion(+), 27 deletions(-) diff --git a/colrv1_postproc.py b/colrv1_postproc.py index 424f4713a..bb5481231 100644 --- a/colrv1_postproc.py +++ b/colrv1_postproc.py @@ -147,31 +147,6 @@ def _Cmap(ttfont): return functools.reduce(_Reducer, unicode_cmaps, {}) -BLACK_FLAG = 0x1F3F4 - - -def _map_empty_flag_tag_to_black_flag(colr_font): - # fontchain_lint wants direct support for empty flag tags - # so map them to the default flag to match cbdt behavior - - # if the emoji font starts using extensions this code will require revision - - cmap = _Cmap(colr_font) - black_flag_glyph = cmap[BLACK_FLAG] - cancel_tag_glyph = cmap[CANCEL_TAG] - lookup_list = colr_font["GSUB"].table.LookupList - liga_set = _ligaset_for_glyph(lookup_list, black_flag_glyph) - assert liga_set is not None, "There should be existing ligatures using black flag" - - # Map black flag + cancel tag to just black flag - # Since this is the ligature set for black flag, component is just cancel tag - # Since we only have one component its safe to put our rule at the front - liga = ot.Ligature() - liga.Component = [cancel_tag_glyph] - liga.LigGlyph = black_flag_glyph - liga_set.insert(0, liga) - - def _add_vertical_layout_tables(cbdt_font, colr_font): upem_scale = colr_font["head"].unitsPerEm / cbdt_font["head"].unitsPerEm @@ -209,6 +184,7 @@ def _add_vertical_layout_tables(cbdt_font, colr_font): UNKNOWN_FLAG_PUA = 0xFE82B +BLACK_FLAG = 0x1F3F4 REGIONAL_INDICATORS = set(range(0x1F1E6, 0x1F1FF + 1)) @@ -342,8 +318,6 @@ def main(argv): _map_missing_flag_tag_chars_to_empty_glyphs(colr_font) - _map_empty_flag_tag_to_black_flag(colr_font) - add_soft_light_to_flags(colr_font) _add_vertical_layout_tables(cbdt_font, colr_font)