aboutsummaryrefslogtreecommitdiff
path: root/fonts/dupglyphs.pl
diff options
context:
space:
mode:
authorB. Watson <urchlay@slackware.uk>2024-07-25 16:48:42 -0400
committerB. Watson <urchlay@slackware.uk>2024-07-25 16:48:42 -0400
commit0c7ad993f7f8cffcc3972a6f8e5517fd841051b5 (patch)
tree077d2c932c8239d30c2a30bccf4f538ecde9d712 /fonts/dupglyphs.pl
parent5be52a355d63b93e1a9662ded6a1a5f682665699 (diff)
downloadbw-atari8-tools-0c7ad993f7f8cffcc3972a6f8e5517fd841051b5.tar.gz
fonts: much progress.
Diffstat (limited to 'fonts/dupglyphs.pl')
-rw-r--r--fonts/dupglyphs.pl41
1 files changed, 41 insertions, 0 deletions
diff --git a/fonts/dupglyphs.pl b/fonts/dupglyphs.pl
new file mode 100644
index 0000000..e2e8993
--- /dev/null
+++ b/fonts/dupglyphs.pl
@@ -0,0 +1,41 @@
+#!/usr/bin/perl -w
+
+# read a psftools .txt font, for any glyph that has multiple Unicode
+# codepoints, output that glyph multiple times (one per codepoint).
+# result is suitable for conversion to a BDF.
+
+$glyphcount = 0;
+
+sub dup {
+ my $orig = shift;
+ my $new;
+ my $ret;
+ my @cps = ($orig =~ /\[(\w+)\];/g);
+
+ for my $cp (@cps) {
+ warn ">> $cp <<\n";
+ $glyphcount++;
+ ($new = $orig) =~ s,(Unicode: ).*,$1\[$cp\];,;
+ $ret .= $new;
+ }
+ return $ret;
+}
+
+$/ = '%';
+
+<>;
+$header = '%' . <>;
+
+while(<>) {
+ next if /\[0000\];/;
+ if(/Unicode:.*;.*;/) {
+ $_ = dup($_);
+ } else {
+ $glyphcount++;
+ }
+ $output .= $_;
+}
+
+$header =~ s/(Length:\s+)\d+/$1$glyphcount/;
+
+print $header . $output;