latin: order cmy colours by sound similarity
authorMischa POSLAWSKY <perl@shiar.org>
Sat, 15 Apr 2017 17:06:31 +0000 (19:06 +0200)
committerMischa POSLAWSKY <perl@shiar.org>
Thu, 25 May 2017 19:54:14 +0000 (21:54 +0200)
Instead of sorting by hue (like RGB) or mnemonic (like Chromacons)
invent a new encoding where letter differences (voice, place, etc)
match colour differences (hue, intensity).  Best effort as letters
do not fit 3 dimensions and sounds differ by language.

writing-latn.inc.pl

index 44fc0d6ce526810b3229cd1437277b7ff0453e45..02fdda7907e56e0f8d5c371927e8af2f70dff915 100644 (file)
@@ -28,6 +28,18 @@ my @hueorder = (
        1,10,9,12,3,4,0, 14,23,22,25,16,17,26, # dark, light hues
 );
 
+# Order to put similar sounds close to each other:
+#        ┌ R Y G C B M X
+#       ┌┼──────────────
+#       W│ o e y h s f -
+#        │muaixqgkdtbp l
+#       K│ w n j c z v r
+
+my @hueletters = ((26) x 27);
+@hueletters[map { ord($_) - ord('a') } qw(
+       u a i x q g k d t b p m l   w n j c z v r   o e y h s f
+)] = @hueorder;
+
 sub disptap {
        my $code = shift;
        my ($prefix, @dots) = $code =~ m/\A(-?)(\d)(\d)/ or return $code;
@@ -62,6 +74,7 @@ sub dispbar {
 
 sub disphues {
        my ($index, $hues, $opaque) = @_;
+       $index >= 0 or $index = 26;
        my @lum = ($index % 3, $index / 3 % 3, $index / 9);  # hue opacities (0..2)x3
        my @lumf = $opaque ? ('hsl(%s,100%%,50%%)', 'hsl(%s,100%%,25%%)') :
                ('hsl(%s,100%%,50%%)', 'hsla(%s,100%%,50%%,.5)');
@@ -520,7 +533,8 @@ cmymap => {
        ],
        list => [
                map { disphues($_, [180, 60, 300]) } # Cyan, Yellow, Magenta
-               @hueorder[13..18, 19, 0..11, 20..25, 12, 26],
+#              @hueorder[13..18, 19, 0..11, 20..25, 12, 26],
+               @hueletters
        ],
 },
 dni => {