unicode: fix for non-digraph digraphs
[sheet.git] / unicode.plp
index e4e45dcfb2906b73f036c3ee06a8093a3fa84df5..bcfebd1adb3cac2d75aadbc12b9e4a93fae06229 100644 (file)
@@ -81,8 +81,7 @@ sub glyph_table {
                        next;
                }
 
                        next;
                }
 
-               my $code = join '', map { $di{ord $_} || '' } split //, $cell;
-               my $name = $diinfo->{$code}->[1];
+               my ($code, $name);
 
                # determine display class
                my @class;
 
                # determine display class
                my @class;
@@ -98,11 +97,18 @@ sub glyph_table {
                                push @class, 'di-rare'; # discouraged
                        }
 
                                push @class, 'di-rare'; # discouraged
                        }
 
-                       if ($code) {
+                       $code = join '', map { $di{ord $_} || '' } split //, $cell;
+                       $name = $diinfo->{$code}->[1];
+                       length $code == 2 or undef $code;
+
+                       if (defined $code) {
                                push @class, 'di-d'; # digraph
                                push @class, 'di-prop' # unofficial
                                        if $diinfo->{$code}->[2] =~ /\bXz\b/;
                        }
                                push @class, 'di-d'; # digraph
                                push @class, 'di-prop' # unofficial
                                        if $diinfo->{$code}->[2] =~ /\bXz\b/;
                        }
+                       elsif (defined $name) {
+                               push @class, 'X';
+                       }
 
                        if ($cell =~ /[ -~]/) {
                                push @class, 'di-a'; # ascii
 
                        if ($cell =~ /[ -~]/) {
                                push @class, 'di-a'; # ascii
@@ -118,7 +124,7 @@ sub glyph_table {
                        @class ? sprintf(' class="%s"', join ' ', @class) : '',
                        $colspan > 1 && qq{ colspan="$colspan"},
                        $cell eq '' ? ' ' : quote($cell),
                        @class ? sprintf(' class="%s"', join ' ', @class) : '',
                        $colspan > 1 && qq{ colspan="$colspan"},
                        $cell eq '' ? ' ' : quote($cell),
-                       $code ne '' ? sprintf(' <small class="digraph">%s</small>', quote($code))
+                       defined $code ? sprintf(' <small class="digraph">%s</small>', quote($code))
                                : length($cell) == 1 && $cell !~ /[a-z]/
                                        ? sprintf(' <small class="%s">%04X</small>', 'value', ord $cell)
                                        : '',
                                : length($cell) == 1 && $cell !~ /[a-z]/
                                        ? sprintf(' <small class="%s">%04X</small>', 'value', ord $cell)
                                        : '',