use Text::Unidecode ();
use Shiar_Sheet::FormatChar;
-our $VERSION = '1.03';
+our $VERSION = '1.04';
our @EXPORT = qw( kbchars kbmodes );
my $uc = Shiar_Sheet::FormatChar->new;
our %unaccent = qw(
⍺ a ⍵ w ∊ E ⍷ E ⍴ r ⍳ i ⍸ i ○ O ⍥ O ⌿ / ⍟ (*) ⊕ (+)
- Ʊ U ǝ e Ǝ E ʌ v ɥ h ʘ O ɰ mw ɯ mw Ɯ MW ə @ae Ə @AE
+ Ʊ U ǝ e Ǝ E ʌ vA Ʌ VA ɥ h ʘ O ɰ mw ɯ mw Ɯ MW ə @ae Ə @AE
ɸ PF ʎ yl ɔ co Ɔ CO ɛ 3E ƣ q Ƣ Q ∀ A ∃ E ∪ u ∩ n ≠ !=
≈ =~ ∅ /0 ∘ o ⋅ . ∫ s ≝ =d ″ " ≤ < ≥ > √ rV ∛ 3V ∜ 4V
Α A Β B Γ G Δ D Ε E Ζ Z Η H Θ CQ Ι I Κ K Λ L Μ M
$info{key}{$lead.$k} = join "\n", $glyph, $title;
my $c = $k =~ s/\A[+^](?=.)//r; # trim modifier indicator
- my $class = 'g'.(
- !defined $v || $c eq $v ? 1 # identical
- : $v =~ /\A\p{Mn}+\z/ ? 9 # combining accent
- : NFKD($v) =~ /\Q$c/ ? 2 # decomposed equivalent
- : unidecode($v) =~ /\Q$c\E+/i ? 4 # transliterated
- : $v =~ /\A[\p{Sk}\p{Lm}]+\z/ ? 8 # modifier symbol
- : $v =~ /\A[\pM\pP]+\z/ ? 7 # mark
- : $v =~ /^\p{Latin}/ ? 5 # latin script
- : 6
+ my $class = (
+ !defined $v || $c eq $v ? 'no' # identical
+ : $v =~ /\A\p{Mn}+\z/ ? 'g9' # combining accent
+ : NFKD($v) =~ /\A\Q$c\E\p{Mn}*\z/ ? 'g2' # decomposed equivalent
+ : unidecode($v) =~ /\Q$c\E+/i ? 'g4' # transliterated
+ : $v =~ /\A[\p{Sk}\p{Lm}]+\z/ ? 'g8' # modifier symbol
+ : $v =~ /\A[\pM\pP]+\z/ ? 'g7' # mark
+ : $v =~ /^\p{Latin}/ ? 'g5' # latin script
+ : 'g6'
);
- $g{$class} = 1;
+ $g{$class} = 1 unless $class eq 'no';
$info{def}{$lead}{$k} //= $class;
}
}