diff options
author | Sean McQuillan <seanmcq@google.com> | 2021-03-22 23:37:53 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-03-22 23:37:53 +0000 |
commit | dfe91865b0e6eea581caf25908f1def9d6f0b2f0 (patch) | |
tree | dac1265989afd5e0ea16b4a9dbc93e26cf48fdcb | |
parent | 7b8d72097c98b611b5982775ad40adcf56687b65 (diff) | |
parent | 6438f2d74a2520310cc67fda9d45091f02274f37 (diff) | |
download | noto-fonts-dfe91865b0e6eea581caf25908f1def9d6f0b2f0.tar.gz |
Merge "Create new emoji-compat-flatbuffers module" into androidx-main am: 6438f2d74a
Original change: https://android-review.googlesource.com/c/platform/external/noto-fonts/+/1646614
Change-Id: I89066db6ffb31e9a4ccfc87901f95b10b046d352
-rw-r--r-- | emoji-compat-flatbuffers/Android.mk (renamed from emoji-compat/Android.mk) | 2 | ||||
-rw-r--r-- | emoji-compat-flatbuffers/build.gradle (renamed from emoji-compat/build.gradle) | 0 | ||||
-rw-r--r-- | emoji-compat-flatbuffers/data/emoji_metadata.fbs (renamed from emoji-compat/data/emoji_metadata.fbs) | 0 | ||||
-rw-r--r-- | emoji-compat-flatbuffers/data/flatbuffer_header.txt (renamed from emoji-compat/data/flatbuffer_header.txt) | 0 | ||||
-rw-r--r-- | emoji-compat-flatbuffers/jarjar-rules.txt (renamed from emoji-compat/jarjar-rules.txt) | 0 | ||||
-rw-r--r-- | emoji-compat-flatbuffers/settings.gradle (renamed from emoji-compat/settings.gradle) | 0 | ||||
-rw-r--r-- | emoji-compat-flatbuffers/src/java/androidx/text/emoji/flatbuffer/MetadataItem.java (renamed from emoji-compat/src/java/androidx/text/emoji/flatbuffer/MetadataItem.java) | 0 | ||||
-rw-r--r-- | emoji-compat-flatbuffers/src/java/androidx/text/emoji/flatbuffer/MetadataList.java (renamed from emoji-compat/src/java/androidx/text/emoji/flatbuffer/MetadataList.java) | 0 | ||||
-rwxr-xr-x | emoji-compat/createfont.py | 72 |
9 files changed, 51 insertions, 23 deletions
diff --git a/emoji-compat/Android.mk b/emoji-compat-flatbuffers/Android.mk index bc47046..76bd918 100644 --- a/emoji-compat/Android.mk +++ b/emoji-compat-flatbuffers/Android.mk @@ -15,7 +15,7 @@ LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) -LOCAL_MODULE := noto-emoji-compat-java +LOCAL_MODULE := noto-emoji-compat-flatbuffers-java LOCAL_SRC_FILES := $(call all-java-files-under, src/java) LOCAL_SDK_VERSION := current diff --git a/emoji-compat/build.gradle b/emoji-compat-flatbuffers/build.gradle index 20d8dfb..20d8dfb 100644 --- a/emoji-compat/build.gradle +++ b/emoji-compat-flatbuffers/build.gradle diff --git a/emoji-compat/data/emoji_metadata.fbs b/emoji-compat-flatbuffers/data/emoji_metadata.fbs index 23d0db9..23d0db9 100644 --- a/emoji-compat/data/emoji_metadata.fbs +++ b/emoji-compat-flatbuffers/data/emoji_metadata.fbs diff --git a/emoji-compat/data/flatbuffer_header.txt b/emoji-compat-flatbuffers/data/flatbuffer_header.txt index 2b40a04..2b40a04 100644 --- a/emoji-compat/data/flatbuffer_header.txt +++ b/emoji-compat-flatbuffers/data/flatbuffer_header.txt diff --git a/emoji-compat/jarjar-rules.txt b/emoji-compat-flatbuffers/jarjar-rules.txt index fdc3188..fdc3188 100644 --- a/emoji-compat/jarjar-rules.txt +++ b/emoji-compat-flatbuffers/jarjar-rules.txt diff --git a/emoji-compat/settings.gradle b/emoji-compat-flatbuffers/settings.gradle index 5e6c61e..5e6c61e 100644 --- a/emoji-compat/settings.gradle +++ b/emoji-compat-flatbuffers/settings.gradle diff --git a/emoji-compat/src/java/androidx/text/emoji/flatbuffer/MetadataItem.java b/emoji-compat-flatbuffers/src/java/androidx/text/emoji/flatbuffer/MetadataItem.java index 0b2a694..0b2a694 100644 --- a/emoji-compat/src/java/androidx/text/emoji/flatbuffer/MetadataItem.java +++ b/emoji-compat-flatbuffers/src/java/androidx/text/emoji/flatbuffer/MetadataItem.java diff --git a/emoji-compat/src/java/androidx/text/emoji/flatbuffer/MetadataList.java b/emoji-compat-flatbuffers/src/java/androidx/text/emoji/flatbuffer/MetadataList.java index 6330098..6330098 100644 --- a/emoji-compat/src/java/androidx/text/emoji/flatbuffer/MetadataList.java +++ b/emoji-compat-flatbuffers/src/java/androidx/text/emoji/flatbuffer/MetadataList.java diff --git a/emoji-compat/createfont.py b/emoji-compat/createfont.py index 5f03721..39204f8 100755 --- a/emoji-compat/createfont.py +++ b/emoji-compat/createfont.py @@ -68,7 +68,7 @@ SCRIPT_DIR = os.path.abspath(os.path.dirname(__file__)) FONT_DIR = os.path.join(SCRIPT_DIR, 'font') DATA_DIR = os.path.join(SCRIPT_DIR, 'data') SUPPORTED_EMOJIS_DIR = os.path.join(SCRIPT_DIR, 'supported-emojis') -JAVA_SRC_DIR = os.path.join(SCRIPT_DIR, 'src', 'java') +JAVA_SRC_DIR = os.path.join('src', 'java') ####### output files ####### # font file FONT_PATH = os.path.join(FONT_DIR, 'NotoColorEmojiCompat.ttf') @@ -90,10 +90,12 @@ ANDROID_EMOJIS_SEQ_FILE = os.path.join('additions', 'emoji-sequences.txt') EMOJI_STYLE_OVERRIDE_FILE = os.path.join('additions', 'emoji-data.txt') # emoji metadata file INPUT_META_FILE = OUTPUT_META_FILE +# default flatbuffer module location (if not specified by caller) +FLATBUFFER_MODULE_DIR = os.path.join(SCRIPT_DIR, '..', 'emoji-compat-flatbuffers') # flatbuffer schema -FLATBUFFER_SCHEMA = os.path.join(DATA_DIR, 'emoji_metadata.fbs') +FLATBUFFER_SCHEMA = os.path.join(FLATBUFFER_MODULE_DIR, 'data', 'emoji_metadata.fbs') # file path for java header, it will be prepended to flatbuffer java files -FLATBUFFER_HEADER = os.path.join(DATA_DIR, "flatbuffer_header.txt") +FLATBUFFER_HEADER = os.path.join(FLATBUFFER_MODULE_DIR, 'data', 'flatbuffer_header.txt') # temporary emoji metadata json output file OUTPUT_JSON_FILE_NAME = 'emoji_metadata.json' # temporary binary file generated by flatbuffer @@ -105,7 +107,7 @@ FLATBUFFER_JAVA_PATH = os.path.join(FLATBUFFER_PACKAGE_PATH) FLATBUFFER_METADATA_LIST_JAVA = "MetadataList.java" FLATBUFFER_METADATA_ITEM_JAVA = "MetadataItem.java" # directory under source where flatbuffer java files will be copied into -FLATBUFFER_JAVA_TARGET = os.path.join(JAVA_SRC_DIR, FLATBUFFER_PACKAGE_PATH) +FLATBUFFER_JAVA_TARGET = os.path.join(FLATBUFFER_MODULE_DIR, JAVA_SRC_DIR, FLATBUFFER_PACKAGE_PATH) # meta tag name used in the font to embed the emoji metadata. This value is also used in # MetadataListReader.java in order to locate the metadata location. EMOJI_META_TAG_NAME = 'Emji' @@ -130,28 +132,28 @@ def codepoint_to_string(codepoints): """Converts a list of codepoints into a string separated with space.""" return ' '.join([to_hex_str(x) for x in codepoints]) -def prepend_header_to_file(file_path): +def prepend_header_to_file(file_path, header_path): """Prepends the header to the file. Used to update flatbuffer java files with header, comments and annotations.""" with open(file_path, "r+") as original_file: - with open(FLATBUFFER_HEADER, "r") as copyright_file: + with open(header_path, "r") as copyright_file: original_content = original_file.read() original_file.seek(0) original_file.write(copyright_file.read() + "\n" + original_content) -def update_flatbuffer_java_files(flatbuffer_java_dir): +def update_flatbuffer_java_files(flatbuffer_java_dir, header_dir, target_dir): """Prepends headers to flatbuffer java files and copies to the final destination""" tmp_metadata_list = flatbuffer_java_dir + FLATBUFFER_METADATA_LIST_JAVA tmp_metadata_item = flatbuffer_java_dir + FLATBUFFER_METADATA_ITEM_JAVA - prepend_header_to_file(tmp_metadata_list) - prepend_header_to_file(tmp_metadata_item) + prepend_header_to_file(tmp_metadata_list, header_dir) + prepend_header_to_file(tmp_metadata_item, header_dir) - if not os.path.exists(FLATBUFFER_JAVA_TARGET): - os.makedirs(FLATBUFFER_JAVA_TARGET) + if not os.path.exists(target_dir): + os.makedirs(target_dir) - shutil.copy(tmp_metadata_list, FLATBUFFER_JAVA_TARGET + FLATBUFFER_METADATA_LIST_JAVA) - shutil.copy(tmp_metadata_item, FLATBUFFER_JAVA_TARGET + FLATBUFFER_METADATA_ITEM_JAVA) + shutil.copy(tmp_metadata_list, os.path.join(target_dir, FLATBUFFER_METADATA_LIST_JAVA)) + shutil.copy(tmp_metadata_item, os.path.join(target_dir, FLATBUFFER_METADATA_ITEM_JAVA)) def create_test_data(unicode_path): """Read all the emojis in the unicode files and update the test file""" @@ -427,7 +429,7 @@ def inject_meta_into_font(ttf, flatbuffer_bin_filename): update_ttlib_orig_sort() -def validate_input_files(font_path, unicode_path): +def validate_input_files(font_path, unicode_path, flatbuffer_path): """Validate the existence of font file and the unicode files""" if not os.path.isfile(font_path): raise ValueError("Font file does not exist: " + font_path) @@ -443,6 +445,16 @@ def validate_input_files(font_path, unicode_path): if not os.path.isfile(emoji_filename): raise ValueError("Unicode emoji data file does not exist: " + emoji_filename) + if not os.path.isdir(flatbuffer_path): + raise ValueError( + "Flatbuffer directory does not exist or is not a directory " + flatbuffer_path) + + flatbuffer_filenames = [os.path.join(flatbuffer_path, FLATBUFFER_SCHEMA), + os.path.join(flatbuffer_path, FLATBUFFER_HEADER)] + for flatbuffer_filename in flatbuffer_filenames: + if not os.path.isfile(flatbuffer_filename): + raise ValueError("Flatbuffer file does not exist: " + flatbuffer_filename) + def add_file_to_sha(sha_algo, file_path): with open(file_path, 'rb') as input_file: @@ -461,7 +473,7 @@ class EmojiFontCreator(object): """Creates the EmojiCompat font""" def __init__(self, font_path, unicode_path): - validate_input_files(font_path, unicode_path) + validate_input_files(font_path, unicode_path, FLATBUFFER_MODULE_DIR) self.font_path = font_path self.unicode_path = unicode_path @@ -647,8 +659,14 @@ class EmojiFontCreator(object): total_emoji_count = self.write_metadata_json(output_json_file) # create the flatbuffers binary and java classes - flatc_command = 'flatc -o {0} -b -j {1} {2}'.format(tmp_dir, FLATBUFFER_SCHEMA, output_json_file) - subprocess.check_output(flatc_command, shell=True) + flatc_command = ['flatc', + '-o', + tmp_dir, + '-b', + '-j', + FLATBUFFER_SCHEMA, + output_json_file] + subprocess.check_output(flatc_command) # inject metadata binary into font inject_meta_into_font(ttf, flatbuffer_bin_file) @@ -660,7 +678,9 @@ class EmojiFontCreator(object): # save the new font ttf.save(FONT_PATH) - update_flatbuffer_java_files(flatbuffer_java_dir) + update_flatbuffer_java_files(flatbuffer_java_dir, #tmp dir + FLATBUFFER_HEADER, + FLATBUFFER_JAVA_TARGET) create_test_data(self.unicode_path) @@ -676,9 +696,17 @@ def print_usage(): print("Please specify a path to font and unicode files.\n" "usage: createfont.py noto-color-emoji-path unicode-dir-path") - -if __name__ == '__main__': - if len(sys.argv) < 3: +def parse_args(argv): + # parse manually to avoid any extra dependencies + if len(argv) < 3: print_usage() sys.exit(1) - EmojiFontCreator(sys.argv[1], sys.argv[2]).create_font() + return (sys.argv[1], sys.argv[2]) + +def main(): + font_file, unicode_dir = parse_args(sys.argv) + EmojiFontCreator(font_file, unicode_dir).create_font() + + +if __name__ == '__main__': + main() |