diff --git a/KanjiVG.pm b/KanjiVG.pm
new file mode 100644
index 000000000..aca445529
--- /dev/null
+++ b/KanjiVG.pm
@@ -0,0 +1,53 @@
+package KanjiVG;
+use parent Exporter;
+our @EXPORT_OK = qw/handle_element/;
+use warnings;
+use strict;
+use Carp;
+
+my $dir = "$FindBin::Bin/kanjivg";
+
+sub find_element
+{
+ my ($element) = @_;
+ if (! defined $element) {
+ croak "No element";
+ }
+ my $string = qr/kanjivg:element="$element"/;
+ my @files = <$dir/*.svg>;
+ my @matches;
+ for my $file (@files) {
+ open my $in, "<:encoding(utf8)", $file
+ or die $!;
+ while (<$in>) {
+ if (/$string/) {
+ push @matches, $file;
+ # print "$file matches.\n";
+ }
+ }
+ close $in or die $!;
+ }
+ return @matches;
+}
+
+sub handle_element
+{
+ my ($element, $handle_start, $data) = @_;
+ my @matches = find_element ($element);
+ if (ref $data ne 'HASH') {
+ croak "Give me a hash ref";
+ }
+ my $parser = XML::Parser->new (
+ Handlers => {
+ Start => sub { &{$handle_start} ($element, $data, @_)},
+ },
+ );
+ for my $file (@matches) {
+# print "Parsing '$file'.\n";
+ $data->{file} = $file;
+ $parser->parsefile ($file);
+ }
+}
+
+
+1;
diff --git a/SVG/6726.svg b/SVG/6726.svg
index f50c3139e..8c8079944 100644
--- a/SVG/6726.svg
+++ b/SVG/6726.svg
@@ -46,6 +46,10 @@ See http://creativecommons.org/licenses/by-sa/3.0/ for more details. -->
17
+
+
+
+
@@ -59,9 +63,5 @@ See http://creativecommons.org/licenses/by-sa/3.0/ for more details. -->
-
-
-
-
diff --git a/find-ie.pl b/find-ie.pl
new file mode 100755
index 000000000..a47d8fbc2
--- /dev/null
+++ b/find-ie.pl
@@ -0,0 +1,75 @@
+#!/home/ben/software/install/bin/perl
+use warnings;
+use strict;
+use FindBin;
+use XML::Parser;
+use Image::SVG::Path 'extract_path_info';
+use utf8;
+use KanjiVG qw/handle_element/;
+binmode STDOUT, "utf8";
+my %data;
+my $element = '豕';
+
+my $start;
+my $count;
+
+handle_element ($element, \& handle_start, \%data);
+
+sub handle_ie
+{
+ my ($data, $count, $attr) = @_;
+ my $d = $attr->{d};
+ if ($count == 1 || $count == 2) {
+ my @values = extract_path_info ($d, {
+ no_shortcuts => 1,
+ absolute => 1,
+ });
+ my @start = @{$values[0]->{point}};
+ my @end = @{$values[-1]->{end}};
+ my $x_diff = $end[0] - $start[0];
+ my $y_diff = $end[1] - $start[1];
+ $data->{"line$count"} = [$x_diff, $y_diff];
+ my $f = $data->{file};
+ $f =~ s!.*/!!;
+ if ($count == 1 && ($x_diff < 10 || $y_diff > 0)) {
+# print "$f: $count: $x_diff $y_diff\n";
+ }
+ elsif ($count == 2) {
+ print "$f: $count: $x_diff $y_diff\n";
+ }
+ }
+ if ($count == 2) {
+# print $data->{line1}->[0]->[0];
+ }
+}
+
+sub handle_start
+{
+ my ($kanjivg_element, $data, $parser, $xml_element, %attr) = @_;
+ if ($xml_element eq 'g') {
+ my $kvg = $attr{'kanjivg:element'};
+ if ($kvg) {
+ if ($kvg eq $kanjivg_element) {
+ my $kp = $attr{"kanjivg:part"};
+ if (defined $kp) {
+# print "$kp\n";
+ if ($kp == 2) {
+ return;
+ }
+ }
+# print "Found '$kvg' in '$data->{file}'\n";
+ $start = 1;
+ $count = 0;
+ }
+ }
+ else {
+ $start = undef;
+ $count = 0;
+ }
+ }
+ elsif ($start && $xml_element eq 'path') {
+ $count++;
+ handle_ie ($data, $count, \%attr);
+ }
+}
+
diff --git a/find-radical.pl b/find-radical.pl
index 734208252..5294f2595 100755
--- a/find-radical.pl
+++ b/find-radical.pl
@@ -5,72 +5,26 @@ use FindBin;
use XML::Parser;
use Image::SVG::Path 'extract_path_info';
use utf8;
-my $string = qr/kanjivg:element="氵"/;
-my @files = <$FindBin::Bin/kanjivg/*.svg>;
-my @matches;
-for my $file (@files) {
- open my $in, "<:encoding(utf8)", $file
- or die $!;
- while (<$in>) {
- if (/$string/) {
- push @matches, $file;
-# print "$file matches.\n";
- }
- }
- close $in or die $!;
-}
-
-my $start;
-my $count;
-
-my %global;
-
-my $parser = XML::Parser->new (
- Handlers => {
- Start => \& handle_start
- },
-);
-
+use KanjiVG qw/find_element/;
binmode STDOUT, "utf8";
+my %data;
+my $element = '氵';
-for my $file (@matches) {
-# print "Parsing '$file'.\n";
- $global{file} = $file;
- $parser->parsefile ($file);
-}
sub handle_start
{
- my ($parser, $element, %attr) = @_;
- if ($element eq 'g') {
- my $kvg = $attr{'kanjivg:element'};
- if ($kvg) {
- if ($kvg eq '氵') {
- #print "Found '$kvg' in '$global{file}'\n";
- $start = 1;
- $count = 0;
- }
- }
- else {
- $start = undef;
- $count = 0;
- }
- }
- if ($start && $element eq 'path') {
- $count++;
- if ($count == 3) {
- my $d = $attr{d};
- my @values = extract_path_info ($d, {
- no_shortcuts => 1,
- absolute => 1,
- });
- my @start = @{$values[0]->{point}};
- my @end = @{$values[-1]->{end}};
- my $x_diff = $end[0] - $start[0];
- my $y_diff = $end[1] - $start[1];
- if ($x_diff < 0 || $y_diff > 0) {
- printf ("file $global{file}: %d %d\n", $x_diff, $y_diff);
- }
- }
+ my ($data, $count, $d) = @_;
+ if ($count == 3) {
+ my @values = extract_path_info ($d, {
+ no_shortcuts => 1,
+ absolute => 1,
+ });
+ my @start = @{$values[0]->{point}};
+ my @end = @{$values[-1]->{end}};
+ my $x_diff = $end[0] - $start[0];
+ my $y_diff = $end[1] - $start[1];
+# if ($x_diff < 0 || $y_diff > 0) {
+ printf ("file $global{file}: %d %d\n", $x_diff, $y_diff);
+# }
}
}
diff --git a/find-sanzui.pl b/find-sanzui.pl
new file mode 100755
index 000000000..c65484758
--- /dev/null
+++ b/find-sanzui.pl
@@ -0,0 +1,59 @@
+#!/home/ben/software/install/bin/perl
+use warnings;
+use strict;
+use FindBin;
+use XML::Parser;
+use Image::SVG::Path 'extract_path_info';
+use utf8;
+use KanjiVG qw/handle_element/;
+binmode STDOUT, "utf8";
+my %data;
+my $element = '氵';
+
+my $start;
+my $count;
+
+handle_element ($element, \& handle_start, \%data);
+
+sub handle_sanzui
+{
+ my ($data, $count, $attr) = @_;
+ if ($count == 3) {
+ my $d = $attr->{d};
+ my @values = extract_path_info ($d, {
+ no_shortcuts => 1,
+ absolute => 1,
+ });
+ my @start = @{$values[0]->{point}};
+ my @end = @{$values[-1]->{end}};
+ my $x_diff = $end[0] - $start[0];
+ my $y_diff = $end[1] - $start[1];
+# if ($x_diff < 0 || $y_diff > 0) {
+ printf ("file $data->{file}: %d %d\n", $x_diff, $y_diff);
+# }
+ }
+}
+
+sub handle_start
+{
+ my ($kanjivg_element, $data, $parser, $xml_element, %attr) = @_;
+ if ($xml_element eq 'g') {
+ my $kvg = $attr{'kanjivg:element'};
+ if ($kvg) {
+ if ($kvg eq $kanjivg_element) {
+# print "Found '$kvg' in '$data->{file}'\n";
+ $start = 1;
+ $count = 0;
+ }
+ }
+ else {
+ $start = undef;
+ $count = 0;
+ }
+ }
+ elsif ($start && $xml_element eq 'path') {
+ $count++;
+ handle_sanzui ($data, $count, \%attr);
+ }
+}
+