my $class = (
!defined $v || $c eq $v ? 'no' # identical
: $v =~ /\A\p{Mn}+\z/ ? 'g9' # combining accent
- : NFKD($v) =~ /\Q$c/ ? 'g2' # decomposed equivalent
+ : 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