From d9d251ca5b512130cfb4cb9a3e03aa6748f67526 Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Fri, 6 Mar 2015 09:17:18 +0100 Subject: [PATCH] font: more generic rules to parse ttf files --- Makefile | 82 +++++++++++++++++------------------------------- tools/mkfontinfo | 12 ++++--- tools/mkttfinfo | 2 +- 3 files changed, 37 insertions(+), 59 deletions(-) diff --git a/Makefile b/Makefile index d062099..0780346 100644 --- 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: diff --git a/tools/mkfontinfo b/tools/mkfontinfo index 1019043..12c53a5 100755 --- a/tools/mkfontinfo +++ b/tools/mkfontinfo @@ -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;'; diff --git a/tools/mkttfinfo b/tools/mkttfinfo index c80f5fc..ad8530e 100755 --- a/tools/mkttfinfo +++ b/tools/mkttfinfo @@ -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"; -- 2.30.0