From 84440686adaae485c459698e6f9a7172978eef42 Mon Sep 17 00:00:00 2001 From: rsheeter Date: Tue, 27 Aug 2024 10:12:24 -0700 Subject: [PATCH] Make rebuilding a bit simpler --- .gitignore | 1 + BUILD.md | 66 +++---------------------------------------------- full_rebuild.sh | 59 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 63 insertions(+), 63 deletions(-) create mode 100755 full_rebuild.sh diff --git a/.gitignore b/.gitignore index 8307d40fe..907f1545a 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ __pycache__/ waveflag build/ venv/ +emojicompat/ diff --git a/BUILD.md b/BUILD.md index b9678f680..499456ad0 100644 --- a/BUILD.md +++ b/BUILD.md @@ -39,69 +39,9 @@ Edit `NotoColorEmoji.tmpl.ttx.tmpl` * New flags are added to `wave_list.txt` * To wave only the new flag delete other entries locally -## CBDT +## Rebuild the fonts ```bash -rm -rf venv # in case you have an old borked venv! -python3 -m venv venv -source venv/bin/activate -pip install -r requirements.txt -python size_check.py -rm -rf build/ && time make -j 48 -# Should take 2-3 minutes to create noto-emoji/NotoColorEmoji.ttf - -mv *.ttf fonts/ - -# make noflags CBDT font -rm fonts/NotoColorEmoji-noflags.ttf -python drop_flags.py fonts/NotoColorEmoji.ttf +# Build CBDT, COLR, flags-only, and emojicompat fonts +$ ./full_rebuild.sh ``` - -## COLRv1 - -```bash -# If you are updating to a new Unicode rev, update configs -python colrv1_generate_configs.py -git diff colrv1/*.toml - -# Compile the fonts -(cd colrv1 && rm -rf build/ && time nanoemoji *.toml) -cp colrv1/build/NotoColorEmoji.ttf fonts/Noto-COLRv1.ttf -cp colrv1/build/NotoColorEmoji-noflags.ttf fonts/Noto-COLRv1-noflags.ttf - -# Post-process them -python colrv1_postproc.py -``` - -## Emojicompat - -``` -# Add support for new sequences per https://github.com/googlefonts/emojicompat#support-new-unicode-sequences -# Install https://github.com/googlefonts/emojicompat in a venv -# Create emojicompat versions of the fonts you made -# Starting from the root of noto-emoji-next: - -$ pushd fonts -$ cp NotoColorEmoji.ttf NotoColorEmoji-emojicompat.ttf -$ cp Noto-COLRv1.ttf Noto-COLRv1-emojicompat.ttf -$ emojicompat --op setup --font NotoColorEmoji-emojicompat.ttf -$ emojicompat --op setup --font Noto-COLRv1-emojicompat.ttf -$ emojicompat --op check --font NotoColorEmoji-emojicompat.ttf -$ emojicompat --op check --font Noto-COLRv1-emojicompat.ttf - -# The emojicompat --op check step should print something akin to: -3835 items_by_codepoints -0 PUA missing -0 PUA point at wrong glyph -3835 PUA correct -0 Emji entries did NOT match a glyph -``` - -## Flags only - -```bash -$ hb-subset --unicodes-file=flags-only-unicodes.txt \ - --output-file=fonts/NotoColorEmoji-flagsonly.ttf \ - fonts/NotoColorEmoji.ttf -$ python update_flag_name.py -``` \ No newline at end of file diff --git a/full_rebuild.sh b/full_rebuild.sh new file mode 100755 index 000000000..37f8fecb4 --- /dev/null +++ b/full_rebuild.sh @@ -0,0 +1,59 @@ +#!/usr/bin/env bash + +set -e +set -v + +# We have to have hb-subset on PATH +which hb-subset + +# Build the CBDT font + +rm -rf venv # in case you have an old borked venv! +python3 -m venv venv +source venv/bin/activate +pip install -r requirements.txt + +rm -rf emojicompat +git clone git@github.com:googlefonts/emojicompat.git +pip install emojicompat/ + +# Validation +python size_check.py +rm -rf build/ && time make -j 48 +# Should take 2-3 minutes to create noto-emoji/NotoColorEmoji.ttf + +mv *.ttf fonts/ + +# make noflags CBDT font +rm fonts/NotoColorEmoji-noflags.ttf +python drop_flags.py fonts/NotoColorEmoji.ttf + +# Build the COLRv1 font (slow) + +python colrv1_generate_configs.py +git diff colrv1/*.toml + +# Compile the fonts +# Should take ~20 minutes +(cd colrv1 && rm -rf build/ && time nanoemoji *.toml) +cp colrv1/build/NotoColorEmoji.ttf fonts/Noto-COLRv1.ttf +cp colrv1/build/NotoColorEmoji-noflags.ttf fonts/Noto-COLRv1-noflags.ttf + +# Post-process them +python colrv1_postproc.py + +# Produce emojicompat variants +# Add support for new sequences per https://github.com/googlefonts/emojicompat#support-new-unicode-sequences + +pushd fonts +cp NotoColorEmoji.ttf NotoColorEmoji-emojicompat.ttf +cp Noto-COLRv1.ttf Noto-COLRv1-emojicompat.ttf +emojicompat --op setup --font NotoColorEmoji-emojicompat.ttf +emojicompat --op setup --font Noto-COLRv1-emojicompat.ttf +emojicompat --op check --font NotoColorEmoji-emojicompat.ttf +emojicompat --op check --font Noto-COLRv1-emojicompat.ttf + +hb-subset --unicodes-file=flags-only-unicodes.txt \ + --output-file=fonts/NotoColorEmoji-flagsonly.ttf \ + fonts/NotoColorEmoji.ttf +python update_flag_name.py \ No newline at end of file