Visitar URL original
emoji-data/build at master · iamcal/emoji-data · GitHub
Skip to content

Latest commit

 

History

History

build

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Building the data

The scripts in this build/ sub directory allow you to rebuild the data files from a mix of sources, including unicode.org standards and the gemoji project.

You can rebuild by following these steps:

cd build/

# Rebuild catalog.php from the original data table (full.html)
php build_catalog.php full.html > catalog.php

# Rebuild the master mapping
./download_spec_files.sh
php build_map.php

# From the final mapping, build a preview table
php build_table.php > ../table.htm

# Rebuild positions and make the master spritesheets
# This step requires ImageMagick or GraphicsMagick. Versions of ImageMagick
# before 6.7 will build the images in an incorrect order, so make sure to
# update!
php build_image.php

# create quantized sheets and optimize them all
time ./quant_sheets.sh (~1 min)

time parallel ./optimize.sh ::: ../sheet_*.png (~19 mins)
time parallel ./optimize.sh ::: ../sheets-*/*.png (~25 mins)
time parallel ./optimize.sh ::: ../img-*-64/* (~95 mins)

To find out how to extract the original source glyphs, look inside the sub directories under build/.

Upgrading to a new version of the Unicode & Emoji standard

  • Update ./download_spec_files.sh to point to the latest source files, then run it
  • Edit find_added_in_version_names.php to point to the version you care about, then generate names, e.g. php find_added_in_version_names.php > data_emoji_names_v13.txt
  • Manually edit the names file to use the expansions for gender and skin tone(s)
  • Edit build_map.php to load the new names list
  • Run build_map.php and check for missing names. Errors look like this: Found sequence not supported: 1f935-1f3fb-200d-2642-fe0f / E13.0 [1]
  • Run build_map.php to generate a new catalog
  • Update images for all images set (see READMEs in their sub-dirs)
  • Re-run build_map.php and then follow the rest of the build steps

Cutting a new release

  1. Land new commits onto master
  2. Verify that all sheets match as expected (build/preview_sheets.htm)
  3. Update CHANGES.md with version history
  4. Update package.json with new version number (now in only 1 place)
  5. Update README.md with the correct Unicode/Emoji version
  6. Update README.md and CHANGES.md with the correct source versions for all image sets
  7. Add a git tag
  8. Publish to npm: php npm_prep.php and php npm_publish.php
  9. Update downstream libraries

Setting up a fresh VM to process the images

Since it requires some time and a lot of CPU & memory, I usually spin up a temporary EC2 instance for image optimization. As of Ubuntu 22.04, you can install recent versions of all dependencies via apt:

sudo apt-get update
sudo apt-get install -y git php php-mbstring php-curl imagemagick parallel
sudo apt-get install -y pngquant zopfli

Don't forget to set up your git config before committing anything!

git config --global user.name "Cal Henderson"
git config --global user.email "cal@iamcal.com"