mirror of
https://github.com/tmux/tmux.git
synced 2026-08-04 14:38:35 +00:00
52 lines
1.4 KiB
Bash
Executable File
52 lines
1.4 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# Generate the Unicode diacritic table used by Kitty image placeholders.
|
|
#
|
|
# Input must be UnicodeData.txt from Unicode 6.0.0:
|
|
# https://www.unicode.org/Public/6.0.0/ucd/UnicodeData.txt
|
|
# SHA-256: 90b45b777346bef027556f9c6cb3ea5d7d745bd60d6762855c08d8a22d34f771
|
|
#
|
|
# The selection follows the public Kitty graphics protocol: nonspacing marks
|
|
# with canonical combining class 230, NSM bidi class, no decomposition, minus
|
|
# characters which may be combined or normalized in ways unsuitable for a
|
|
# row or column index.
|
|
|
|
if [ "$#" -ne 1 ]; then
|
|
echo "usage: $0 UnicodeData.txt" >&2
|
|
exit 1
|
|
fi
|
|
|
|
awk -F ';' '
|
|
BEGIN {
|
|
omit["0300"] = omit["0301"] = omit["0302"] = 1
|
|
omit["0303"] = omit["0304"] = omit["0306"] = 1
|
|
omit["0307"] = omit["0308"] = omit["0309"] = 1
|
|
omit["030A"] = omit["030B"] = omit["030C"] = 1
|
|
omit["030F"] = omit["0311"] = omit["0313"] = 1
|
|
omit["0314"] = omit["0342"] = omit["0653"] = 1
|
|
omit["0654"] = 1
|
|
}
|
|
$3 == "Mn" && $4 == "230" && $5 == "NSM" && $6 == "" && !omit[$1] {
|
|
point[++count] = $1
|
|
}
|
|
END {
|
|
if (count != 297) {
|
|
printf "expected 297 diacritics, found %u\n", count > "/dev/stderr"
|
|
exit 1
|
|
}
|
|
print "static const uint32_t kitty_diacritics[] = {"
|
|
for (i = 1; i <= count; i++) {
|
|
if ((i - 1) % 8 == 0)
|
|
printf "\t"
|
|
printf "0x%s", point[i]
|
|
if (i != count)
|
|
printf ","
|
|
if (i == count || i % 8 == 0)
|
|
printf "\n"
|
|
else
|
|
printf " "
|
|
}
|
|
print "};"
|
|
}
|
|
' "$1"
|