- for my $a (@{$options{Contains}}) {
- push(@glyphs, decimalUnicode($a));
+ my %glyphs = (); # To ignore duplicates
+ for my $a1 (@{$options{Contains}}) {
+ for my $e (decimalUnicode($a1)) {
+ $glyphs{$e} = 1;
+ }
+ }
+ # create intervalls
+ my @glyphs = sort {$a <=> $b;} keys %glyphs;
+
+ # $options{Contains} no longer needed, so use it for unicode-point intervalls
+ $options{Contains} = [];
+ my ($first, $last) = (undef, undef);
+ for my $i (@glyphs) {
+ if (! defined($last)) {
+ $first = $i;
+ $last = $i;
+ next;
+ }
+ if ($i == $last+1) {
+ $last = $i;
+ next;
+ }
+ push(@{$options{Contains}}, [$first, $last]);
+ $first = $i;
+ $last = $i;
+ }
+ if (defined($last)) {
+ push(@{$options{Contains}}, [$first, $last]);