unicode: predetermine html entities in include
[sheet.git] / Shiar_Sheet / FormatChar.pm
index f22f42bebd517cc1ffbd5e43a0d86b6ccd7595ad..0e5967807d68b8a2ec520b7523ebca166e08b136 100644 (file)
@@ -29,7 +29,7 @@ sub glyph_html {
        my ($self, $char) = @_;
        my $codepoint = ord $char;
        my $info = $self->glyph_info($codepoint);
-       my ($class, $name, $mnem, $string) = @$info;
+       my ($class, $name, $mnem, $html, $string) = @$info;
 
        my $cell = EscapeHTML($string || $char);
        my $title = sprintf 'U+%04X%s', $codepoint, $name && " ($name)";
@@ -37,7 +37,7 @@ sub glyph_html {
        $cell = "<span>$cell</span>" if $class =~ /\bZs\b/;
        $cell = '&nbsp;' if $cell eq '';
 
-       return ($cell, EscapeHTML($title), "X $class", $mnem);
+       return ($cell, EscapeHTML($title), "X $class", $mnem, $html);
 }
 
 sub glyphs_html {
@@ -61,7 +61,7 @@ sub glyph_cell {
 
 sub cell {
        my ($self, $input, $html) = @_;
-       my (@class, $title, $cell, $mnem);
+       my (@class, $title, $cell, $mnem, $entity);
 
        if ($input eq '-') {
                $cell = '';
@@ -78,7 +78,7 @@ sub cell {
                }
 
                $input =~ s/^\\//;  # escaped char
-               ($cell, $title, my $class, $mnem) = $self->glyphs_html($input);
+               ($cell, $title, my $class, $mnem, $entity) = $self->glyphs_html($input);
 
                if ($self->{style} = 'di') {
                        if ($class =~ /\bu-di\b/) {
@@ -110,9 +110,8 @@ sub cell {
        if ($cell ne '') {
                for (@{ $self->{anno} }) {
                        if (/html$/) {
-                               require HTML::Entities;
-                               if (my $entity = $HTML::Entities::char2entity{$cell}) {
-                                       $entity = substr($entity, 1, -1) unless /^&/;
+                               if (defined $entity) {
+                                       $entity = "&$entity;" if /^&/;
                                        $anno = sprintf(' <small class="digraph">%s</small>', EscapeHTML($entity));
                                        last;
                                }