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).pull/378/head
parent
f8ec04e4a3
commit
631766222f
|
@ -147,31 +147,6 @@ def _Cmap(ttfont):
|
||||||
return functools.reduce(_Reducer, unicode_cmaps, {})
|
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):
|
def _add_vertical_layout_tables(cbdt_font, colr_font):
|
||||||
upem_scale = colr_font["head"].unitsPerEm / cbdt_font["head"].unitsPerEm
|
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
|
UNKNOWN_FLAG_PUA = 0xFE82B
|
||||||
|
BLACK_FLAG = 0x1F3F4
|
||||||
REGIONAL_INDICATORS = set(range(0x1F1E6, 0x1F1FF + 1))
|
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_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_soft_light_to_flags(colr_font)
|
||||||
|
|
||||||
_add_vertical_layout_tables(cbdt_font, colr_font)
|
_add_vertical_layout_tables(cbdt_font, colr_font)
|
||||||
|
|
Loading…
Reference in New Issue