summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean McQuillan <seanmcq@google.com>2021-03-22 23:37:53 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-03-22 23:37:53 +0000
commitdfe91865b0e6eea581caf25908f1def9d6f0b2f0 (patch)
treedac1265989afd5e0ea16b4a9dbc93e26cf48fdcb
parent7b8d72097c98b611b5982775ad40adcf56687b65 (diff)
parent6438f2d74a2520310cc67fda9d45091f02274f37 (diff)
downloadnoto-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-xemoji-compat/createfont.py72
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()