From edd68ec2c70895bd3ee0dcbfb1810716ebef01f8 Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Mon, 2 Apr 2012 19:18:58 +0200 Subject: [PATCH] font: conversion rules for common ttf files --- .gitignore | 1 + font.plp | 6 ++--- tools/convert-allfonts | 51 ++++++++++++++++++++++++++++++++++++++++++ tools/convert-ttf.pl | 12 +++++++--- 4 files changed, 64 insertions(+), 6 deletions(-) create mode 100755 tools/convert-allfonts diff --git a/.gitignore b/.gitignore index 6bdaa8b..b09855f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /rfc1345.txt /digraphs.inc.pl +/ttfsupport/ diff --git a/font.plp b/font.plp index 95630b2..68f613f 100644 --- a/font.plp +++ b/font.plp @@ -26,9 +26,9 @@ use Shiar_Sheet::FormatChar; my $glyphs = Shiar_Sheet::FormatChar->new; my %oslist = ( - win95 => [qw/arial ariuni verdana times/], - mac10 => [qw//], - oss => ['dv ss', qw/droid c2k guf/], + win95 => [qw( arial ariuni verdana times )], + mac10 => [qw( )], + oss => [qw( dvsans droid c2k guf )], android => ['droid'], ); diff --git a/tools/convert-allfonts b/tools/convert-allfonts new file mode 100755 index 0000000..e7d1964 --- /dev/null +++ b/tools/convert-allfonts @@ -0,0 +1,51 @@ +#!/bin/sh + +cd $(dirname $0) + +CONVBIN=./convert-ttf.pl +OUTDIR=../ttfsupport +TTFDIR=~/.fonts + +# microsoft + +TTFDIR_MS=/usr/share/fonts/truetype/msttcorefonts +if [ -e $TTFDIR_MS ]; then +$CONVBIN $TTFDIR_MS/Verdana.ttf $OUTDIR/verdana.inc.pl +$CONVBIN $TTFDIR_MS/Times_New_Roman.ttf $OUTDIR/times.inc.pl +$CONVBIN $TTFDIR_MS/Arial.ttf $OUTDIR/arial.inc.pl +$CONVBIN $TTFDIR_MS/Courier_New.ttf $OUTDIR/courier.inc.pl +$CONVBIN $TTFDIR_MS/Comic_Sans_MS.ttf $OUTDIR/comic.inc.pl +$CONVBIN $TTFDIR_MS/Georgia.ttf $OUTDIR/georgia.inc.pl +fi + +# bitstream + +TTFDIR_DV=/usr/share/fonts/truetype/ttf-dejavu +if [ -e $TTFDIR_DV ]; then +$CONVBIN $TTFDIR_DV/DejaVuSans.ttf $OUTDIR/dvsans.inc.pl +$CONVBIN $TTFDIR_DV/DejaVuSerif.ttf $OUTDIR/dvserif.inc.pl +$CONVBIN $TTFDIR_DV/DejaVuSansMono.ttf $OUTDIR/dvmono.inc.pl +fi + +# google + +TTFDIR_GD=/usr/share/fonts/truetype/droid +if [ -e $TTFDIR_GD ]; then +$CONVBIN $TTFDIR_DV/DroidSans.ttf $OUTDIR/droidsans.inc.pl +$CONVBIN $TTFDIR_DV/DroidSerif.ttf $OUTDIR/droidserif.inc.pl +$CONVBIN $TTFDIR_DV/DroidSansMono.ttf $OUTDIR/droidmono.inc.pl +fi + +# other + +find $TTFDIR -iname code2000.ttf -exec \ + $CONVBIN "{}" $OUTDIR/c2k.inc.pl \; + +find $TTFDIR -iname arial\*uni\*.ttf -exec \ + $CONVBIN "{}" $OUTDIR/ariuni.inc.pl \; + +TTFDIR_GU=/usr/share/fonts/truetype/unifont/ +if [ -e $TTFDIR_GU ]; then +$CONVBIN $TTFDIR_GU/unifont.ttf $OUTDIR/unifont.inc.pl +fi + diff --git a/tools/convert-ttf.pl b/tools/convert-ttf.pl index 95b26a0..97a2026 100755 --- a/tools/convert-ttf.pl +++ b/tools/convert-ttf.pl @@ -19,10 +19,12 @@ my %FONTID = ( 'Times New Roman' => 'times', 'DejaVu Sans' => 'dv ss', 'DejaVu Serif' => 'dv serif', + 'DejaVu Sans Mono'=> 'dv mono', 'Code2000' => 'c2k', 'GNU Unifont' => 'guf', 'Droid Sans' => 'droid', 'Droid Serif' => 'droid serif', + 'Droid Sans Mono' => 'droid mono', ); { @@ -30,10 +32,14 @@ my %FONTID = ( or die "Cannot open truetype in $ttfuri: $!"; my $ttfname = ($ttfuri =~ m{([^/.]+) (?:[.]ttf)? \z}msx)[0]; + my $ttfmeta = $ttf->{name}->read; my %meta = ( - source => $ttfuri, - name => $ttf->{name}->read->find_name(4) || $ttfname, - version => $ttf->{head}->{fontRevision}, + source => $ttfuri =~ m{(^/usr/.+ | [^/]+) \z}msx, + name => $ttfmeta->find_name(4) || $ttfname, + revision => $ttf->{head}->{fontRevision}, + version => scalar $ttfmeta->find_name(5), + copyright=> scalar $ttfmeta->find_name(0), + license => $ttfmeta->find_name(14) || undef, date => (map { $_ && eval { require Time::Piece; -- 2.30.0