summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean McQuillan <seanmcq@google.com>2021-03-18 17:04:38 -0700
committerSean McQuillan <seanmcq@google.com>2021-03-19 16:27:38 -0700
commit5427e233ab5d11946486bb13c5098db741581123 (patch)
tree827cb5fc6aa7d8c4e716858bdb57ead46823931f
parentbac26d88f57ba07a294c4c1cdae21a24e53082d4 (diff)
downloadnoto-fonts-5427e233ab5d11946486bb13c5098db741581123.tar.gz
Create new emoji-compat-flatbuffers module
This module only contains Apache 2 licensed flatbuffers code that previously lived next to OFL and UNICODE licensed code in emoji-compat. By extracting this, we can link the flatbuffers without having to add notification of OFL and UNICODE in the module depending on these flatbuffer definitions. Update createfont.py to point to this new module, all files are validated, and java src is moved to this new module. Note: This change manually reverts the generated font since we are missing source files for a reproducable build at time of merge. To be addressed in followup CL. Test: ./createfont.py {path}/NotoColorEmoji.ttf {path}/unicode ../emoji-compat-flatbuffers Bug: b/178035684 Change-Id: I696debd751ad853c126a7b3d4d62db57db8cbc7d
-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()