our @demo;
+
+sub p_edgelist ($$$) {
+ my ($points,$vecs,$p) = @_;
+ my @vec;
+ foreach my $pt (@$p) {
+ $pt =~ s{\d{5}}{$&,};
+ $pt =~ s{\b\d}{$&.}g;
+ push @$points, "[$pt]";
+ push @vec, $#$points;
+ }
+ push @$vecs, \@vec;
+}
+
sub parsefont () {
my %cellmap;
for (;;) {
my $demo = '';
my $democols = 6;
foreach my $chr (sort keys %chrpolys) {
+ my $polys = $chrpolys{$chr};
my $mod = chrmodname $chr;
p "module $mod () {\n";
- foreach my $poly (@{ $chrpolys{$chr} }) {
- p " polygon([";
- my $delim = "";
- foreach my $pt (@{ $poly->{E} }) {
- p $delim;
- $pt =~ s{\d{5}}{$&,};
- $pt =~ s{\b\d}{$&.}g;
- p "[$pt]";
- $delim = ',';
- }
- p "]);\n";
+ foreach my $poly (@$polys) {
+ p " polygon(";
+ my (@points, @vecs);
+ p_edgelist(\@points, \@vecs, $poly->{E});
+ p "points=[".(join ",",@points)."],";
+ p "convexity=4);\n";
}
p "}\n";
$demo .= $chr;