+use utf8;
+
+sub disptap {
+ map {
+ m/\A(-?)(\d)(\d)/;
+ $1 . '\\' # escape dot
+ . ('.̇' x ($2 < $3 ? $2 : $3)) # min($2,$3) without losing captures
+ . ('.' x ($3 - $2))
+ . (' ̇' x ($2 - $3))
+ } @_
+}
+
+my %C = qw(red #EC1C24 blue #3953A3 yellow #F9EC31 black #231F20);
+
+(
latn => [qw{ a b c d e f g h i j k l m n o p q r s t u v w x y z }],
latfsuet => [qw{ a b c d e f g h i j k l m n o p q r ſ s t u v w x y z }],
+asl => [
+ map { pack 'W*', map { hex "1D$_" } unpack '(A3)*', $_ } qw{
+ 8F7a9c 847a9c 86Da9c 801a9c 84Aa9c
+ 8CEa9c 8F0 815aa2 892a9c 892a9c9A2aac
+ 840a9c 8DCa9c 88Da9c
+ 819a9c 876a9c 840a9caA1 8F0a9caA1 81Aa9c
+ 903a9c 8FBa9c 815a9c 80Ea9c 887a9c
+ 806a9c 89Aa9c 800a9c945aaa
+}],
brai => [qw{ ⠁ ⠃ ⠉ ⠙ ⠑ ⠋ ⠛ ⠓ ⠊ ⠚ ⠅ ⠇ ⠍ ⠝ ⠕ ⠏ ⠟ ⠗ ⠎ ⠞ ⠥ ⠧ ⠺ ⠭ ⠽ ⠵ }],
-morse => [qw{ ‧‑ ‑‧‧‧ ‑‧‑‧ ‑‧‧ ‧ ‧‧‐‧ ‐‐‧ ‧‧‧‧ ‧‧ ‧‐‐‐ ‐‧‐ ‧‐‧‧ ‐‐
- ‐‧ ‐‐‐ ‧‐‐‧ ‐‐‧‐ ‧‐‧ ‧‧‧ ‐ ‧‧‐ ‧‧‧‐ ‧‐‐ ‐‧‧‐ ‐‧‐‐ ‐‐‧‧ }],
+morse => [map {tr/.-/‧‑/r} qw{
+ .- -... -.-. -.. . ..-. --. .... .. .--- -.- .-.. --
+ -. --- .--. --.- .-. ... - ..- ...- .-- -..- -.-- --..
+ }],
+tap => [disptap(qw{
+ 11 12 13 14 15 21 22 23 24 -24 25 31 32
+ 33 34 35 41 42 43 44 45 51 52 53 54 55
+ })],
+tap => [disptap(qw{
+ 11 12 13 14 21 22 23 24 31 -31 -13 32 33
+ 34 41 42 -13 43 44 15 51 52 53 -25 -31 54
+ })],
+ics => [
+ map { '<svg width="20" height="20" viewBox="0 0 30 30">'.$_.'</svg>' }
+ split /\n\n/, qq{
+ <path fill="$C{blue}" d="M0,0 h30 l-7.5,15 7.5,15 h-30 z"/>
+ <path fill="white" d="M0,0 h15 v30 h-15"/>
+
+ <path fill="$C{red}" d="M0,0 h30 l-7.5,15 7.5,15 h-30 z"/>
+
+ <path fill="$C{blue}" d="M0,0 h30v30 h-30z"/>
+ <path fill="white" d="M0,6 h30 v18 h-30" />
+ <path fill="$C{red}" d="M0,12 h30 v6 h-30" />
+
+ <path fill="$C{yellow}" d="M0,0 h30v30 h-30z"/>
+ <path fill="$C{blue}" d="M0,6 h30 v18 h-30"/>
+
+ <path fill="$C{red}" d="M0,0 h30v30 h-30z"/>
+ <path fill="$C{blue}" d="M0,0 h30 v15 h-30"/>
+
+ <path fill="white" d="M0,0 h30v30 h-30z"/>
+ <path fill="$C{red}" d="M15,0 l15,15 -15,15 -15,-15"/>
+
+ <path fill="$C{blue}" d="M0,0 h30v30 h-30z"/>
+ <path fill="$C{yellow}" d="M 0,0 h5 v30 h-5"/>
+ <path fill="$C{yellow}" d="M10,0 h5 v30 h-5"/>
+ <path fill="$C{yellow}" d="M20,0 h5 v30 h-5"/>
+
+ <path fill="$C{red}" d="M0,0 h30v30 h-30z"/>
+ <path fill="white" d="M0,0 h15 v30 h-15"/>
+
+ <path fill="$C{yellow}" d="M0,0 h30v30 h-30z"/>
+ <circle fill="black" r="7.5" cx="15" cy="15"/>
+
+ <path fill="$C{blue}" d="M0,0 h30v30 h-30z"/>
+ <path fill="white" d="M0,10 h30 v10 h-30"/>
+
+ <path fill="$C{blue}" d="M0,0 h30v30 h-30z"/>
+ <path fill="$C{yellow}" d="M0,0 h15 v30 h-15"/>
+
+ <path fill="$C{black}" d="M0,0 h30v30 h-30z"/>
+ <path fill="$C{yellow}" d="M0,0 h15 v15 h-15 M15,15 h15 v15 h-15"/>
+
+ <path fill="white" d="M0,0 h30v30 h-30z"/>
+ <path fill="$C{blue}" d="M4,0h22l-11,11 M4,30h22l-11,-11 M0,4v22l11,-11 M30,4v22l-11,-11"/>
+ <!--path fill="$C{blue}" d="M3,0h24l-12,12 M3,30h24l-12,-12 M0,3v24l12,-12 M30,3v24l-12,-12"/-->
+
+ <path fill="white" d="M0,0 h30v30 h-30z"/>
+ <path fill="$C{blue}" d="
+ M0,0 h7.5v7.5h-7.5 m0,7.5h7.5v7.5h-7.5
+ m7.5,-15 h7.5v7.5h-7.5 m0,7.5h7.5v7.5h-7.5
+ m7.5,-30 h7.5v7.5h-7.5 m0,7.5h7.5v7.5h-7.5
+ m7.5,-15 h7.5v7.5h-7.5 m0,7.5h7.5v7.5h-7.5
+ "/>
+
+ <path fill="$C{yellow}" d="M0,0 h30v30 h-30z"/>
+ <path fill="$C{red}" d="M0,0 h30 v30"/>
+
+ <path fill="$C{blue}" d="M0,0 h30v30 h-30z"/>
+ <path fill="white" d="M10,10 h10 v10 h-10"/>
+
+ <path fill="$C{yellow}" d="M0,0 h30v30 h-30z"/>
+
+ <path fill="$C{red}" d="M0,0 h30v30 h-30z"/>
+ <path fill="$C{yellow}" d="M12.5,0 v30 h5 v-30"/>
+ <path fill="$C{yellow}" d="M0,12.5 h30 v5 h-30"/>
+
+ <path fill="white" d="M0,0 h30v30 h-30z"/>
+ <path fill="$C{blue}" d="M10,10 h10 v10 h-10"/>
+
+ <path fill="white" d="M0,0 h30v30 h-30z"/>
+ <path fill="$C{red}" d="M0,0 h10 v30 h-10"/>
+ <path fill="$C{blue}" d="M20,0 h10 v30 h-10"/>
+
+ <path fill="white" d="M0,0 h30v30 h-30z"/>
+ <path fill="$C{red}" d="M0,0 h15 v15 h-15 M15,15 h15 v15 h-15"/>
+
+ <path fill="$C{red}" d="M0,0 h30v30 h-30z"/>
+ <path fill="white" d="M4,0h22l-11,11 M4,30h22l-11,-11 M0,4v22l11,-11 M30,4v22l-11,-11"/>
+
+ <path fill="$C{blue}" d="M0,0 h30v30 h-30z"/>
+ <path fill="white" d="M5,5 h20 v20 h-20"/>
+ <path fill="$C{red}" d="M10,10 h10 v10 h-10"/>
+
+ <path fill="white" d="M0,0 h30v30 h-30z"/>
+ <path fill="$C{blue}" d="M12.5,0 v30 h5 v-30"/>
+ <path fill="$C{blue}" d="M0,12.5 h30 v5 h-30"/>
+
+ <path fill="$C{red}" d="M0,0 h30v30 h-30z"/>
+ <path fill="$C{yellow}" d="M0,0h6l-6,6 M12,0h6l-18,18v-6 M24,0h6l-30,30v-6
+ M30,6v6l-18,18h-6 M30,18v6l-6,6h-6"/>
+
+ <path fill="$C{black}" d="M0,0 h30v30 h-30z"/>
+ <path fill="$C{blue}" d="M30,0 v31 l-15,-15"/>
+ <path fill="$C{yellow}" d="M0,0 h31 l-15,15"/>
+ <path fill="$C{red}" d="M0,30 h31 l-15,-15"/>
+ },
+],
+);