Kind reminder of new package proposal:
Am 25.09.2025 um 22:21 schrieb Thomas Wolff via Cygwin-apps:
Hi, I'd like to contribute a package with emoji graphics from the
Google noto-emojis repository.
There was some trouble with the cygport as discussed in another thread
but not it appears to be working.
... and of course I meant "now (not not) it appears to be working"
Attached are the cygport file and two scripts used for the build
process, which are identical to the scripts in the mintty tools directory.
If this package is installed, this enables mintty 3.8.1 to display
graphic emojis implicitly without further configuration.
Thomas
NAME="emojis-noto"
SUMMARY="graphic emojis from Google Noto Emoji font, enables mintty emojis"
DESCRIPTION="Google Noto Emoji graphic images for shared installation."
LICENSE=Apache-2.0
#CATEGORY="Fonts"
CATEGORY="Shells"
#CATEGORY="Shells Graphics"
HOMEPAGE="https://github.com/googlefonts/noto-emoji"
VERSION=v2.051
RELEASE=1
ARCH=noarch
SRC_DIR="emojis-noto-$VERSION-$RELEASE.$ARCH"
# git "download" would also provide shallow clone but not sparse checkout,
# also it fails to finish, so use the git download in script getnoto below
#GIT_URI="https://github.com/googlefonts/noto-emoji.git"
#GIT_TAG=$VERSION
#inherit git
#SRC_URI+=" getnoto getflags"
# this fails:
#inherit git
#tools=https://raw.githubusercontent.com/mintty/mintty/refs/heads/master/tools
#SRC_URI="$tools/getnoto $tools/getflags"
# this includes the scripts in the source archive
CYGWIN_FILES="getnoto getflags"
BUILD_REQUIRES=""
REQUIRES=""
#git() {
# echo ------------ cygport calling git $*
# /bin/git "$@"
#}
src_compile() {
cd ${B}
# the getnoto script downloads the repository
# using shallow clone and sparse checkout
# to limit download and storage volume
../../getnoto --tag ${VERSION}
# getnoto also calls the script getflags to transform
# flags emojis filenames to a format searchable by
# Unicode codepoint sequences
}
src_install() {
cd ${B}
# this would copy all again, wasting time and space
#insinto /usr/share/emojis/common
#doins common/*.png
# so do it this way
mkdir -p $D/usr/share/emojis/common
ln common/*.png $D/usr/share/emojis/common/
#insinto /usr/share/emojis/noto
#doins noto/*.png
mkdir -p $D/usr/share/emojis/noto
ln noto/*.png $D/usr/share/emojis/noto/
}
#! /bin/sh
tag=
case "$1" in
--tag) tag="--branch $2";;
esac
#############################################################################
# download Noto font emojis
if [ -d noto-emojis ]
then if [ -d noto-emojis/.git ]
then (cd noto-emojis; git pull)
else echo WARNING: directory noto-emojis already exists but no git
config - Exit
exit 9
fi
else
notogit=https://github.com/googlefonts/noto-emoji
if git clone $tag --depth 1 -n --filter=blob:none $notogit noto-emojis
then true
else echo WARNING: given git tag $tag not found - Exit
exit 9
fi
(cd noto-emojis
git sparse-checkout set --no-cone png/128 third_party/region-flags/png
git checkout
)
fi
(mkdir -p noto; rm -f noto/*.png; ln noto-emojis/png/128/*.png noto/)
#############################################################################
# download Noto third-party flags emojis
# like getflags -n but use same repository
if [ -d noto-emoji-flags ]
then if [ -d noto-emoji-flags/.git ]
then (cd noto-emoji-flags; git pull)
else echo WARNING: directory noto-emoji-flags already exists but no
git config - Exit
exit 9
fi
else
ln -s noto-emojis noto-emoji-flags
fi
(cd noto-emoji-flags; rm -f *.png; ln third_party/region-flags/png/*.png ./)
#############################################################################
# download rename Noto third-party flags
`dirname $0`/getflags -e
#############################################################################
# end
#! /bin/dash
# this script is 20% faster with dash than with bash
#############################################################################
# download function
download_noto () {
# download noto third-party region flags
if [ -d noto-emoji-flags ]
then if [ -d noto-emoji-flags/.git ]
then (cd noto-emoji-flags; git pull)
else echo WARNING: directory noto-emoji-flags already exists but no
git config - Exit
exit 9
fi
else
notogit=https://github.com/googlefonts/noto-emoji
git clone --depth 1 -n --filter=blob:none $notogit noto-emoji-flags
(cd noto-emoji-flags
git sparse-checkout set --no-cone third_party/region-flags/png
git checkout
)
fi
(cd noto-emoji-flags; rm -f *.png; ln third_party/region-flags/png/*.png ./)
}
download_other () {
# download Puellanivis’ flag emojis
if [ -d puellanivis-flags ]
then if [ -d puellanivis-flags/.git ]
then (cd puellanivis-flags; git pull)
else echo WARNING: directory puellanivis-flags already exists but no
git config - Exit
exit 9
fi
else
puelgit=https://github.com/puellanivis/emoji.git
git clone --depth 1 $puelgit puellanivis-flags
fi
(cd puellanivis-flags; rm -f *.png; ln flags/*.png flags/*/*.png ./)
}
download () {
download_noto
# drop download of old Google region flags
#git clone --depth 1 https://github.com/google/region-flags.git
google-region-flags &&
#ln google-region-flags/png/*.png google-region-flags/
download_other
}
#############################################################################
# extract emoji files:
# pre-deploy them with proper filename, according to codepoint pattern
extract () {
mkdir -p common
for f in `ls *-flags/*.png`
do e=${f##*/}
e=${e%.png}
if [ -n "$BASH_VERSION" ]
then
e=${e//-}
e=${e//\'}
#else filter them out by missing case below
fi
case $e in
??) # 1F1E6 1F1E8 ; RGI_Emoji_Flag_Sequence
tagseq=false;;
*) # 1F3F4 E0067 E0062 E0065 E006E E0067 E007F;
RGI_Emoji_Tag_Sequence; flag: England
tagseq=true;;
esac
if $tagseq
then n=1f3f4
else n=
fi
# speed-up possible by using a common sed script...
for l in $( echo "$e" | tr 'A-Z' 'a-z' | sed -e 's,.,& ,g' )
do d=$( printf %d "'$l'" )
if $tagseq
then case "$l" in
[a-z]|[0-9])
d=$(( $d + 917504 ))
n=$n-$( printf %x $d )
;;
#[a-z]) d=$(( $d - 97 + 917601 )) # 'a'
-> U+E0061 ...
# n=$n-$( printf %x $d )
# ;;
#[0-9]) d=$(( $d - 48 + 917552 )) # '0'
-> U+E0030 ...
# n=$n-$( printf %x $d )
# ;;
esac
else d=$(( $d - 97 + 127462 )) # U+1F1E6
n=$n-$( printf %x $d )
fi
done
if $tagseq
then n=$n-e007f.png
else n=${n#-}.png
fi
echo "$f -> common/$n"
if [ -L "$f" ]
then # linking a symbolic link while renaming the target
# would yield a dangling link, so copy it
cp "$f" "common/$n"
else ln "$f" "common/$n"
fi
done
}
#############################################################################
# perform download and extraction/deployment
case "$1" in
""|-h|--help)
echo "Usage: `basename $0` [-d | -e | -de]" >&2
echo >&2
echo "This script retrieves flag emojis from various sources." >&2
echo >&2
echo "Options:" >&2
echo " -d Download flags emojis repositories" >&2
echo " -n Download only Noto flags" >&2
echo " -e Extract emoji files with proper filenames into common/"
>&2
echo " -de -d and -e" >&2
echo " -ne -n and -e" >&2
echo >&2
if [ `uname` = "Linux" ] && type wslpath 2> /dev/null 1>&2
then echo "Note: for direct deployment from WSL, first go into the
common config directory:" >&2
echo ' cd `wslpath "$APPDATA/mintty/emojis"` || cd `wslpath
"$APPDATA/wsltty/emojis"`' >&2
else echo "Note: for direct deployment, first go into subdirectory
'emojis' of one of the" >&2
echo "mintty config directories:" >&2
echo ' ~/.mintty' >&2
echo ' ~/.config/mintty' >&2
echo ' $APPDATA/mintty' >&2
echo ' /usr/share/mintty' >&2
fi
exit;;
-n|--download-noto)
download_noto
;;
-ne|--noto)
download_noto
extract
;;
-d|--download)
download
;;
-e|--extract)
extract
;;
-de|--all)
download
extract
;;
esac
#############################################################################
# end