[colrv1] add script to regenerate nanoemoji configs by globbing source *.svg sources
Fixes https://github.com/googlefonts/noto-emoji/issues/397pull/399/head
parent
81a3995aa3
commit
e5666815c1
|
@ -0,0 +1,94 @@
|
|||
# Copyright 2020 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
# Generate config files for Noto-COLRv1
|
||||
|
||||
from nanoemoji.util import rel
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
_NOTO_FAMILY_NAME = "Noto Color Emoji"
|
||||
_NOTO_SVG_DIR = Path("svg")
|
||||
_REGIONAL_INDICATORS = {
|
||||
Path(_NOTO_SVG_DIR / f"emoji_u{i:x}.svg") for i in range(0x1F1E6, 0x1F1FF + 1)
|
||||
}
|
||||
_NOTO_WAVED_FLAG_SVG_DIR = Path("third_party/region-flags/waved-svg")
|
||||
_NOTO_SUBDIVISION_FLAGS = (
|
||||
_NOTO_WAVED_FLAG_SVG_DIR / "emoji_u1f3f4_e0067_e0062_e0065_e006e_e0067_e007f.svg",
|
||||
_NOTO_WAVED_FLAG_SVG_DIR / "emoji_u1f3f4_e0067_e0062_e0073_e0063_e0074_e007f.svg",
|
||||
_NOTO_WAVED_FLAG_SVG_DIR / "emoji_u1f3f4_e0067_e0062_e0077_e006c_e0073_e007f.svg",
|
||||
)
|
||||
_CONFIG_DIR = Path("colrv1")
|
||||
|
||||
|
||||
def _write_config(config_name, output_file, svg_files):
|
||||
svg_files = [rel(_CONFIG_DIR, Path(f)) for f in svg_files]
|
||||
config_file = f"{config_name}.toml"
|
||||
for svg_file in svg_files:
|
||||
assert _CONFIG_DIR.joinpath(
|
||||
svg_file
|
||||
).is_file(), f"{svg_file} not found relative to {_CONFIG_DIR}"
|
||||
svg_list = ",\n ".join(f'"{f}"' for f in sorted(svg_files)).rstrip()
|
||||
with open(_CONFIG_DIR / config_file, "w") as f:
|
||||
f.write(
|
||||
f"""
|
||||
family = "{_NOTO_FAMILY_NAME}"
|
||||
output_file = "{output_file}"
|
||||
color_format = "glyf_colr_1"
|
||||
clipbox_quantization = 32
|
||||
|
||||
[axis.wght]
|
||||
name = "Weight"
|
||||
default = 400
|
||||
|
||||
[master.regular]
|
||||
style_name = "Regular"
|
||||
srcs = [
|
||||
{svg_list},
|
||||
]
|
||||
|
||||
[master.regular.position]
|
||||
wght = 400
|
||||
"""
|
||||
)
|
||||
|
||||
|
||||
def _write_all_noto_configs():
|
||||
# includes all of noto-emoji svgs plus all the waved region flags
|
||||
svgs = tuple(_NOTO_SVG_DIR.glob("*.svg")) + tuple(
|
||||
_NOTO_WAVED_FLAG_SVG_DIR.glob("*.svg")
|
||||
)
|
||||
_write_config("all", "NotoColorEmoji.ttf", svgs)
|
||||
|
||||
|
||||
def _write_noto_noflag_configs():
|
||||
# Does not contain regional indicators and the region flags that are
|
||||
# composed with them. It still includes the England, Scotland and Wales
|
||||
# 'subdivision' flags, as those are not composed with Unicode regional
|
||||
# indicators, but use sequences of Unicode Tag letters prefixed with
|
||||
# the Black Flag and ending with a Cancel Tag.
|
||||
svgs = (
|
||||
tuple(p for p in _NOTO_SVG_DIR.glob("*.svg") if p not in _REGIONAL_INDICATORS)
|
||||
+ _NOTO_SUBDIVISION_FLAGS
|
||||
)
|
||||
_write_config("noflags", "NotoColorEmoji-noflags.ttf", svgs)
|
||||
|
||||
|
||||
def main():
|
||||
_write_all_noto_configs()
|
||||
_write_noto_noflag_configs()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Loading…
Reference in New Issue