font: more generic rules to parse ttf files
authorMischa POSLAWSKY <perl@shiar.org>
Fri, 6 Mar 2015 08:17:18 +0000 (09:17 +0100)
committerMischa POSLAWSKY <perl@shiar.org>
Tue, 9 Jun 2015 03:43:43 +0000 (05:43 +0200)
Makefile
tools/mkfontinfo
tools/mkttfinfo

index d062099..0780346 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -34,65 +34,41 @@ digraphs.inc.pl: tools/mkdigraphlist data/digraphs-rfc.inc.pl data/digraphs-vim.
 unicode-char.inc.pl: tools/mkcharinfo data/digraphs-rfc.inc.pl data/digraphs-shiar.inc.pl unicode-age.inc.pl
        $< >$@
 
+ttfsupport/%.inc.pl: tools/mkttfinfo data/font/%.ttf
+       $< $(word 2,$^) $@ || true
+
+.SECONDARY:
+data/font/%.ttf:
+       find /usr/share/fonts/truetype/ ~/.fonts/ -iname "$(@F)" | head -1 | xargs -i ln -sf {} $@
+data/font/%.win95.ttf:
+       find /usr/share/fonts/truetype/msttcorefonts/ -iname "$(*F).ttf" | head -1 | xargs -i ln -sf {} $@
+data/font/dv%.ttf:
+       find /usr/share/fonts/truetype/dejavu/ -iname "DejaVu*$(*F).ttf" | head -1 | xargs -i ln -sf {} $@
+data/font/droid%.ttf:
+       find /usr/share/fonts/truetype/droid/ -iname "Droid*$(*F).ttf" | head -1 | xargs -i ln -sf {} $@
+data/font/droidserif.ttf:
+       ln -sf /usr/share/fonts/truetype/droid/DroidSerif-Regular.ttf $@
+data/font/roboto.ttf:
+       ln -sf /usr/share/fonts/truetype/roboto/Roboto-Regular.ttf $@
+data/font/noto%.ttf:
+       find /usr/share/fonts/truetype/noto/ -iname "Noto$(*F)-Regular.ttf" | head -1 | xargs -i ln -sf {} $@
+
 ttfsupport: tools/mkttfinfo
        mkdir -p $@
        $(MAKE) ttfsupport/all
        touch $@
 
-ttfsupport/all: ttfsupport/all-ms ttfsupport/all-apple ttfsupport/all-dejavu ttfsupport/all-google ttfsupport/unifont.inc.pl ttfsupport/c2k.inc.pl
-
-ttfsupport/all-ms: ttfsupport/verdana.inc.pl ttfsupport/timesnew.inc.pl ttfsupport/arial.inc.pl ttfsupport/couriernew.inc.pl ttfsupport/comic.inc.pl ttfsupport/georgia.inc.pl ttfsupport/arialuni.inc.pl
-ttfsupport/verdana.inc.pl: tools/mkttfinfo
-       $< Verdana.ttf $@
-ttfsupport/timesnew.inc.pl: tools/mkttfinfo
-       $< Times_New_Roman.ttf $@
-ttfsupport/arial.inc.pl: tools/mkttfinfo
-       $< Arial.ttf $@
-ttfsupport/couriernew.inc.pl: tools/mkttfinfo
-       $< Courier_New.ttf $@
-ttfsupport/comic.inc.pl: tools/mkttfinfo
-       $< Comic_Sans_MS.ttf $@
-ttfsupport/georgia.inc.pl: tools/mkttfinfo
-       $< Georgia.ttf $@
-ttfsupport/arialuni.inc.pl: tools/mkttfinfo
-       $< 'arial*uni*.ttf' $@
-
-ttfsupport/all-apple: ttfsupport/lucida.inc.pl ttfsupport/garamond.inc.pl
-ttfsupport/lucida.inc.pl: tools/mkttfinfo
-       $< Lucida\?Grande.ttf $@ || true
-ttfsupport/garamond.inc.pl: tools/mkttfinfo
-       $< AppleGaramond.ttf $@ || true
-ttfsupport/opensans.inc.pl: tools/mkttfinfo
-       $< opensans.ttf $@ || true
-
+ttfsupport/all: ttfsupport/all-win95 ttfsupport/all-dejavu ttfsupport/all-google ttfsupport/all-other
+ttfsupport/all-win95: ttfsupport/verdana.win95.inc.pl ttfsupport/times.win95.inc.pl ttfsupport/arial.win95.inc.pl ttfsupport/cour.win95.inc.pl ttfsupport/comic.win95.inc.pl ttfsupport/georgia.win95.inc.pl ttfsupport/arialuni.inc.pl
 ttfsupport/all-dejavu: ttfsupport/dvsans.inc.pl ttfsupport/dvserif.inc.pl ttfsupport/dvmono.inc.pl
-ttfsupport/dvsans.inc.pl: tools/mkttfinfo
-       $< DejaVuSans.ttf $@
-ttfsupport/dvserif.inc.pl: tools/mkttfinfo
-       $< DejaVuSerif.ttf $@
-ttfsupport/dvmono.inc.pl: tools/mkttfinfo
-       $< DejaVuSansMono.ttf $@
-
-ttfsupport/all-google: ttfsupport/droid.inc.pl ttfsupport/droidserif.inc.pl ttfsupport/droidmono.inc.pl ttfsupport/roboto.inc.pl ttfsupport/noto.inc.pl ttfsupport/notoserif.inc.pl
-ttfsupport/droid.inc.pl: tools/mkttfinfo
-       $< DroidSans.ttf $@
-ttfsupport/droidserif.inc.pl: tools/mkttfinfo
-       $< DroidSerif-Regular.ttf $@
-ttfsupport/droidmono.inc.pl: tools/mkttfinfo
-       $< DroidSansMono.ttf $@
-ttfsupport/roboto.inc.pl: tools/mkttfinfo
-       $< Roboto-Regular.ttf $@
-ttfsupport/noto.inc.pl: tools/mkttfinfo
-       $< NotoSans-Regular.ttf $@
-ttfsupport/notoserif.inc.pl: tools/mkttfinfo
-       $< NotoSerif-Regular.ttf $@
-
-ttfsupport/unifont.inc.pl: tools/mkttfinfo
-       $< unifont.ttf $@
-ttfsupport/c2k.inc.pl: tools/mkttfinfo
-       $< code2000.ttf $@
-
-unicode-cover.inc.pl: tools/mkfontinfo ttfsupport
+ttfsupport/all-google: ttfsupport/droidsans.inc.pl ttfsupport/droidserif.inc.pl ttfsupport/droidmono.inc.pl ttfsupport/roboto.inc.pl ttfsupport/notosans.inc.pl ttfsupport/notoserif.inc.pl
+ttfsupport/all-other: ttfsupport/unifont.inc.pl ttfsupport/code2000.inc.pl
+
+#ttfsupport/unifont.inc.pl: tools/mkttfinfo
+#      $< unifont.ttf $@
+#      $< --headless unifont_upper.ttf >>$@
+
+unicode-cover.inc.pl: tools/mkfontinfo ttfsupport $(patsubst data/font/%.ttf,ttfsupport/%.inc.pl,$(wildcard data/font/*.ttf))
        $< >$@
 
 data/countryInfo.txt:
index 1019043..12c53a5 100755 (executable)
@@ -109,16 +109,18 @@ for my $chars (values %{$_}) {
 $charlist{fonts} = \@fontlist;
 
 my %osfonts = (
-       win95   => [qw( arial arialuni lucidau verdana timesnew couriernew )],  # microsoft
-       mac10   => [qw( helvetica lucida times garamond palatino )],  # apple
-       android => [qw( roboto noto )],  # google
-       oss     => [qw( dvsans c2k unifont opensans )],
+       win95   => [qw( arial.win95 arialuni lucidau verdana.win95 times.win95 cour.win95 )],  # microsoft
+       win7    => [qw( arial.win7 verdana.win7 times.win7 cour.win7 )],
+       win8    => [qw( arial.win8 verdana.win8 times.win8 cour.win8 )],
+       mac10   => [qw( helvetica.mac10 lucida.mac10 times.mac10 garamond.mac10 palatino.mac10 lucida.mac10 )],  # apple
+       android => [qw( roboto notosans )],  # google
+       oss     => [qw( dvsans code2000 unifont opensans )],
 );
 my %fontnum = map { ($fontlist[$_]->{file} => $_) } 0 .. $#fontlist;
 while (my ($os, $fontids) = each %osfonts) {
        $charlist{os}->{$os} = [ map { $fontnum{$_} // () } @{$fontids} ];
 }
-$charlist{osdefault} = [qw( win95 mac10 oss android )];
+$charlist{osdefault} = [qw( win95 win8 mac10 oss android )];
 
 say "# automatically generated by $0";
 say 'use utf8;';
index c80f5fc..ad8530e 100755 (executable)
@@ -16,7 +16,7 @@ GetOptions(my %opt,
 my ($ttfuri, $outfile) = @ARGV;
 $ttfuri or die "usage error\n";
 
-my $fontinc = $ENV{FONTINC} // '~/.fonts,/usr/share/fonts/truetype/*';
+my $fontinc = $ENV{FONTINC} // 'data/font,~/.fonts,/usr/share/fonts/truetype/*';
 if (!-e $ttfuri) {
        my $found = (grep {-e} glob "{$fontinc}/$ttfuri")[0] or do {
                warn "font not found: $ttfuri\n";