#!/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 = '%' . <>; $zerocount = 0; while(<>) { next if /\[0000\];/ && ($zerocount++); if(/Unicode:.*;.*;/) { $_ = dup($_); } else { $glyphcount++; } $output .= $_; } $header =~ s/(Length:\s+)\d+/$1$glyphcount/; print $header . $output;