Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4970cdac authored by Doug Felt's avatar Doug Felt Committed by Raph Levien
Browse files

Patch out part of the emoji tests.

This is temporary, until we have proper attribution for additional
emoji data.

Bug: 29939737
Change-Id: I5b97c8e055fa2ccf44b13bf801f681b860d47286
(cherry picked from commit f874a194)
parent 5bd9ea82
Loading
Loading
Loading
Loading
+35 −5
Original line number Original line Diff line number Diff line
@@ -256,23 +256,33 @@ def parse_fonts_xml(fonts_xml_path):




def check_emoji_coverage(all_emoji, equivalent_emoji):
def check_emoji_coverage(all_emoji, equivalent_emoji):
  emoji_font = get_emoji_font()
  check_emoji_font_coverage(emoji_font, all_emoji, equivalent_emoji)


def get_emoji_font():
    emoji_fonts = [
    emoji_fonts = [
        record.font for record in _fallback_chain
        record.font for record in _fallback_chain
        if 'Zsye' in record.scripts]
        if 'Zsye' in record.scripts]
    assert len(emoji_fonts) == 1, 'There are %d emoji fonts.' % len(emoji_fonts)
    assert len(emoji_fonts) == 1, 'There are %d emoji fonts.' % len(emoji_fonts)
    emoji_font = emoji_fonts[0]
    return emoji_fonts[0]
    coverage = get_emoji_map(emoji_font)



def check_emoji_font_coverage(emoji_font, all_emoji, equivalent_emoji):
    coverage = get_emoji_map(emoji_font)
    for sequence in all_emoji:
    for sequence in all_emoji:
        assert sequence in coverage, (
        assert sequence in coverage, (
            '%s is not supported in the emoji font.' % printable(sequence))
            '%s is not supported in the emoji font.' % printable(sequence))


    # disable temporarily - we cover more than this
    """
    for sequence in coverage:
    for sequence in coverage:
        if sequence in {0x0000, 0x000D, 0x0020}:
        if sequence in {0x0000, 0x000D, 0x0020}:
            # The font needs to support a few extra characters, which is OK
            # The font needs to support a few extra characters, which is OK
            continue
            continue
        assert sequence in all_emoji, (
        assert sequence in all_emoji, (
            'Emoji font should not support %s.' % printable(sequence))
            'Emoji font should not support %s.' % printable(sequence))
    """


    for first, second in sorted(equivalent_emoji.items()):
    for first, second in sorted(equivalent_emoji.items()):
        assert coverage[first] == coverage[second], (
        assert coverage[first] == coverage[second], (
@@ -280,6 +290,8 @@ def check_emoji_coverage(all_emoji, equivalent_emoji):
                printable(first),
                printable(first),
                printable(second)))
                printable(second)))


    # disable temporarily - some equivalent sequences we don't even know about
    """
    for glyph in set(coverage.values()):
    for glyph in set(coverage.values()):
        maps_to_glyph = [seq for seq in coverage if coverage[seq] == glyph]
        maps_to_glyph = [seq for seq in coverage if coverage[seq] == glyph]
        if len(maps_to_glyph) > 1:
        if len(maps_to_glyph) > 1:
@@ -295,7 +307,7 @@ def check_emoji_coverage(all_emoji, equivalent_emoji):
                'The sequences %s should not result in the same glyph %s' % (
                'The sequences %s should not result in the same glyph %s' % (
                    printable(equivalent_seqs),
                    printable(equivalent_seqs),
                    glyph))
                    glyph))

    """


def check_emoji_defaults(default_emoji):
def check_emoji_defaults(default_emoji):
    missing_text_chars = _emoji_properties['Emoji'] - default_emoji
    missing_text_chars = _emoji_properties['Emoji'] - default_emoji
@@ -427,6 +439,11 @@ def parse_ucd(ucd_path):
    _emoji_sequences = dict(
    _emoji_sequences = dict(
        (t, v) for (t, v) in _emoji_sequences.items() if not contains_excluded(t))
        (t, v) for (t, v) in _emoji_sequences.items() if not contains_excluded(t))


    # add in UN flag
    UN_seq = flag_sequence('UN')
    _emoji_sequences[UN_seq] = 'Emoji_Flag_Sequence'


def flag_sequence(territory_code):
def flag_sequence(territory_code):
    return tuple(0x1F1E6 + ord(ch) - ord('A') for ch in territory_code)
    return tuple(0x1F1E6 + ord(ch) - ord('A') for ch in territory_code)


@@ -483,6 +500,11 @@ ZWJ_IDENTICALS = {
    (0x1F468, 0x200D, 0x1F469, 0x200D, 0x1F466): 0x1F46A,
    (0x1F468, 0x200D, 0x1F469, 0x200D, 0x1F466): 0x1F46A,
}
}



def is_fitzpatrick_modifier(cp):
  return 0x1f3fb <= cp <= 0x1f3ff


def compute_expected_emoji():
def compute_expected_emoji():
    equivalent_emoji = {}
    equivalent_emoji = {}
    sequence_pieces = set()
    sequence_pieces = set()
@@ -500,7 +522,15 @@ def compute_expected_emoji():
        sequence_pieces.update(sequence)
        sequence_pieces.update(sequence)
        # Add reverse of all emoji ZWJ sequences, which are added to the fonts
        # Add reverse of all emoji ZWJ sequences, which are added to the fonts
        # as a workaround to get the sequences work in RTL text.
        # as a workaround to get the sequences work in RTL text.
        reversed_seq = tuple(reversed(sequence))
        reversed_seq = list(reversed(sequence))
        # if there are fitzpatrick modifiers in the sequence, keep them after
        # the emoji they modify
        for i in xrange(1, len(reversed_seq)):
          if is_fitzpatrick_modifier(reversed_seq[i - 1]):
            tmp = reversed_seq[i]
            reversed_seq[i] = reversed_seq[i-1]
            reversed_seq[i-1] = tmp
        reversed_seq = tuple(reversed_seq)
        all_sequences.add(reversed_seq)
        all_sequences.add(reversed_seq)
        equivalent_emoji[reversed_seq] = sequence
        equivalent_emoji[reversed_seq] = sequence


@@ -536,8 +566,8 @@ def compute_expected_emoji():




def main():
def main():
    target_out = sys.argv[1]
    global _fonts_dir
    global _fonts_dir
    target_out = sys.argv[1]
    _fonts_dir = path.join(target_out, 'fonts')
    _fonts_dir = path.join(target_out, 'fonts')


    fonts_xml_path = path.join(target_out, 'etc', 'fonts.xml')
    fonts_xml_path = path.join(target_out, 'etc', 'fonts.xml')