#! /bin/sh case "$1" in *.*) fullemojis="$1"; shift;; "") echo "Usage: `basename $0` .../full-emoji-list.html [emoji style]..." >&2 echo >&2 echo "This script extracts emojis graphics (.png format) from a downloaded copy of" >&2 echo " http://www.unicode.org/emoji/charts-11.0/full-emoji-list.html" >&2 echo "for the selected emoji style sets, or (if none selected) all of them:" >&2 echo " apple google twitter emojione facebook samsung windows" >&2 echo "and always extracts common emoji graphics." >&2 echo >&2 echo "Warning: with all styles selected, this may take a few hours on Cygwin." >&2 exit;; *) echo missing file name of full emoji list >&2; exit;; esac sel= while case "$1" in apple) sel="1$sel";; google) sel="2$sel";; twitter) sel="3$sel";; emojione) sel="4$sel";; facebook) sel="5$sel";; samsung) sel="6$sel";; windows) sel="7$sel";; "") false;; *) echo emoji set "$1" not known; exit;; esac do shift done sel=0${sel:-1234567} export sel echo "Warning: this may take a few hours on Cygwin" >&2 LC_ALL=C export LC_ALL total=`grep -e "name='\([^']*\)'.*U+" "$fullemojis" | wc -l` export total ( echo "Extracting $total emojis from $fullemojis" >&2 cat <<\/EOS n=0 name () { ename=$1 style=0 n=$(( $n + 1 )) p=$(( ${n}00 / $total )) echo "emoji $ename (${p}%)" >&2 } img0 () { echo " common 0/$ename.png" >&2 echo "$1" | base64 -d > 0/$ename.png } img () { style=$(( $style + 1 )) case $sel in *$style*) echo "$1" | base64 -d > $style/$ename.png;; esac } imgskip () { style=$(( $style + 1 )) case $sel in *$style*) echo " skip $style/$ename.png" >&2;; esac } /EOS mkdirlink () { case $sel in *$1*) mkdir -p $1 [ -e "$2" ] || ln -s "$1" "$2" ;; esac } mkdirlink 1 apple mkdirlink 2 google mkdirlink 3 twitter mkdirlink 4 emojione mkdirlink 5 facebook mkdirlink 6 samsung mkdirlink 7 windows mkdirlink 0 common cat "$fullemojis" | sed -e "s/^.*name='\([^']*\)'.*U+.*/name \1/" -e "t name" \ -e "s/.*—.*/imgskip/" -e t \ -e "s@^.*….*src='data:image/png;base64,\([^']*\)'.*@img0 \1@" -e t \ -e "s@^.*src='data:image/png;base64,\([^']*\)'.*@img \1@" -e t \ -e d \ -e ": name" \ -e "s,_,-,g" ) | sh