PHP Classes

File: application/libraries/dompdf/lib/ttf2ufm/src/scripts/convert

Recommend this page to a friend!
  Classes of harold rita   PHP Thesis Proposal Hub   application/libraries/dompdf/lib/ttf2ufm/src/scripts/convert   Download  
File: application/libraries/dompdf/lib/ttf2ufm/src/scripts/convert
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: PHP Thesis Proposal Hub
Store and publish research thesis documents
Author: By
Last change:
Date: 6 years ago
Size: 9,078 bytes
 

Contents

Class file image Download
#!/bin/sh # # Copyright (c) 1998-2000 # Sergey A. Babkin. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. # # Sergey A. Babkin (sab123@hotmail.com, babkin@bellatlantic.net) # # Use : convert [cfgfile] # Convert TTF fonts from source directory to Type1 fonts in the destination # directory, converted to the specified encodings. Also generate the # fonts.scale, fonts.dir and fonts.alias files in the destination directory. # clean some variables so that they won't be inherited from environment ENCDIR= MAPDIR= # path to the configuration file if [ $# -eq 1 ] then CFGFILE=$1 else CFGFILE=`pwd`/convert.cfg fi # these setting would be edited during installation TTF2PT1_BINDIR= TTF2PT1_LIBXDIR= TTF2PT1_SHAREDIR= [ -z "$TTF2PT1_BINDIR" ] && { TTF2PT1_BINDIR=`pwd`/.. } [ -z "$TTF2PT1_LIBXDIR" ] && { TTF2PT1_LIBXDIR=`pwd`/.. } [ -z "$TTF2PT1_SHAREDIR" ] && { TTF2PT1_SHAREDIR=`pwd`/.. } # directory from where we are started RUNDIR=`pwd` # paths to various utilities T1ASM=$TTF2PT1_LIBXDIR/t1asm [ -f $T1ASM -a -x $T1ASM ] || { # if it's not in libxdir, use whatever t1asm the system provides T1ASM=t1asm } TTF2PT1=$TTF2PT1_BINDIR/ttf2pt1 TRANS=$TTF2PT1_SHAREDIR/scripts/trans T1FDIR=$TTF2PT1_SHAREDIR/scripts/t1fdir FORCEISO=$TTF2PT1_SHAREDIR/scripts/forceiso X2GS=$TTF2PT1_SHAREDIR/scripts/x2gs SUFFIX="pfa" MYSELF=convert # include the configuration if [ -r $CFGFILE ] then { . $CFGFILE } else { echo " Can't find the configuration file $CFGFILE Please look at the sample file convert.cfg.sample, copy it to convert.cfg and modify for you actual configuration." >&2 exit 1 } fi # path to the directory with descriptions of encodings [ -z "$ENCDIR" ] && { ENCDIR=$TTF2PT1_SHAREDIR/encodings } # directory with the external Unicode maps [ -z "$MAPDIR" ] && { MAPDIR=$TTF2PT1_SHAREDIR/maps } LOG=$DSTDIR/convert.log # configure the ttf2pt1 options from our options # artefact of backwards-compatibility with .cfg [ -z "$CORRECTWIDTH" -a YES != "$DONTCORRECTWIDTH" ] && { TTF2PT1="$TTF2PT1 -OW" } [ YES = "$CORRECTWIDTH" ] && { TTF2PT1="$TTF2PT1 -OW" } [ YES != "$HINTSUBST" ] && { TTF2PT1="$TTF2PT1 -Ou" # meaning changed past 3.22 } [ YES = "$ALLGLYPHS" -a YES = "$ENFORCEISO" ] && { echo "$MYSELF: options ALLGLYPHS and ENFORCEISO are mutually exclusive" >&2 exit 1 } [ YES = "$ALLGLYPHS" ] && { TTF2PT1="$TTF2PT1 -a" } [ YES = "$GENUID" ] && { TTF2PT1="$TTF2PT1 -uA" } [ YES != "$ENFORCEISO" ] && { FORCEISO=cat } [ YES = "$CREATEPFB" ] && { T1ASM="$T1ASM -b" SUFFIX="pfb" } # parse the information about the source files eval "`echo \"$SRCDIRS\" | awk ' BEGIN { n=0; } /^ *$/ { next; } { if(n>9) { printf(\"echo \\\"Only 9 encodings are supported at once!\\\" >&2\n\"); printf(\"exit 1\\n\"); } else { printf(\"SRCDIR%d=%s\n\",n,$1); printf(\"SRCLANG%d=%s\n\",n,$2); printf(\"SRCENC%d=%s\n\",n,$3); printf(\"SRCMAP%d=%s\n\",n,$4); n++; } }'`" # check whether we have the directories mkdir $DSTDIR 2>/dev/null >/dev/null [ -d $DSTDIR -a -r $DSTDIR -a -w $DSTDIR -a -x $DSTDIR ] || { echo "$MYSELF: can't access the directory $DSTDIR" >&2 exit 1 } # go to our destination directory cd $DSTDIR || { echo "$MYSELF: can't chdir to $DSTDIR" >&2 exit 1 } rm -f ./* 2>/dev/null >$LOG for dirno in 0 1 2 3 4 5 6 7 8 9 do { SRCDIR=`eval "echo \\\$SRCDIR$dirno"` SRCLANG=`eval "echo \\\$SRCLANG$dirno"` SRCENC=`eval "echo \\\$SRCENC$dirno"` SRCMAP=`eval "echo \\\$SRCMAP$dirno"` DSTENC=`eval "echo \\\$DSTENC$SRCLANG"` echo $SRCDIR echo $SRCENC [ -z "$SRCDIR" ] && break; [ "`ls $SRCDIR/*.[tT][tT][fF] 2>/dev/null |wc -l`" -gt 0 ] || { echo "$MYSELF: no TTF files in $SRCDIR" >&2 exit 1 } # check whether we have the encoding tables [ -n "$SRCENC" ] || { echo "$MYSELF: you must specify some source encoding" >&2 exit 1 } [ unknown = "$SRCLANG" -o -n "$DSTENC" ] || { echo "$MYSELF: you must specify some destination encodings" >&2 exit 1 } # handle aliases of the destination encodings XDSTENC= DSTALIAS= [ -r $ENCDIR/$SRCLANG/encodings.alias ] && { for i in $DSTENC do { TO=`awk '$1=="'$i'" { print $2; }' <$ENCDIR/$SRCLANG/encodings.alias` if [ -n "$TO" ] then { [ -f $ENCDIR/$SRCLANG/$i.tbl -a -r $ENCDIR/$SRCLANG/$i.tbl ] && { echo "WARNING: $SRCLANG encoding $i found as both table and alias" >&2 echo "WARNING: The alias takes precedence" >&2 } DSTALIAS="$TO $i $DSTALIAS" XDSTENC="$TO $XDSTENC" } else { XDSTENC="$i $XDSTENC" } fi } done DSTENC=`echo "$XDSTENC" | sort -u | tr ' ' ' '` } [ unknown != "$SRCLANG" ] && { for i in $SRCENC $DSTENC do { [ -f $ENCDIR/$SRCLANG/$i.tbl -a -r $ENCDIR/$SRCLANG/$i.tbl ] || { echo "$MYSELF: can't read $ENCDIR/$SRCLANG/$i.tbl" >&2 exit 1 } } done } # OK convert the files for file in $SRCDIR/*.[tT][tT][fF] do { name=`echo $file | tr A-Z a-z` name=`basename $name .ttf` echo "Converting $name" # generate the assembler code echo "******* $name -> t1a ************" >>$LOG if [ -n "$SRCMAP" ] then { $TTF2PT1 -L $MAPDIR/$SRCMAP $file ./$name.$SRCENC 2>>$LOG } else { $TTF2PT1 -l $SRCLANG $file ./$name.$SRCENC 2>>$LOG } fi [ -s ./$name.$SRCENC.t1a ] || { echo "$MYSELF: can't generate Type1 assembler code for $name" >&2 continue; } [ -s ./$name.$SRCENC.afm ] || { echo "$MYSELF: can't generate AFM metrics file for $name" >&2 continue; } mv ./$name.$SRCENC.afm ./$name.$SRCENC.xafm psname=`$T1FDIR -g $FOUNDRY " " -f ./$name.$SRCENC.t1a \ | awk '{print substr($1,2);}'` # now for each destination encoding generate a .pfa/b file # and record for fonts.scale if [ unknown != "$SRCLANG" ] then { for enc in $DSTENC do { echo "******* $name -> $enc ************" >>$LOG sed 's|^\/FontName.*$|/FontName /'$psname$enc' def|' <./$name.$SRCENC.t1a \ | $TRANS $ENCDIR/$SRCLANG/$SRCENC.tbl $ENCDIR/$SRCLANG/$enc.tbl \ | $FORCEISO | $T1ASM >./$name.$enc.$SUFFIX [ -s ./$name.$enc.$SUFFIX ] || { echo "$MYSELF: can't convert/assemble Type1 file for $name.$enc" >&2 continue; } sed 's|^FontName.*$|FontName '$psname$enc'|' <./$name.$SRCENC.xafm \ | $TRANS $ENCDIR/$SRCLANG/$SRCENC.tbl $ENCDIR/$SRCLANG/$enc.tbl \ | uniq | $FORCEISO >./$name.$enc.afm [ -s ./$name.$enc.afm ] || { echo "$MYSELF: can't convert AFM file for $name.$enc" >&2 } aliases=`echo "$DSTALIAS" | grep "^$enc" | cut -d\ -f2` echo "******* aliases: $aliases" >>$LOG $T1FDIR -d fonts.ttf fonts.alias $FOUNDRY $enc $aliases -f ./$name.$enc.$SUFFIX echo "/$psname$enc ($name.$enc.$SUFFIX) ;" >>Fontmap.ttf } done } else { enc="$SRCENC" echo "******* $name -> $enc ************" >>$LOG sed 's|^\/FontName.*$|/FontName /'$psname$enc' def|' <./$name.$SRCENC.t1a \ | $FORCEISO | $T1ASM >./$name.$enc.$SUFFIX [ -s ./$name.$enc.$SUFFIX ] || { echo "$MYSELF: can't convert/assemble Type1 file for $name.$enc" >&2 continue; } sed 's|^FontName.*$|FontName '$psname$enc'|' <./$name.$SRCENC.xafm \ | uniq | $FORCEISO >./$name.$enc.afm [ -s ./$name.$enc.afm ] || { echo "$MYSELF: can't convert AFM file for $name.$enc" >&2 } $T1FDIR -d fonts.ttf fonts.alias $FOUNDRY $enc -f ./$name.$enc.$SUFFIX echo "/$psname$enc ($name.$enc.$SUFFIX) ;" >>Fontmap.ttf } fi [ YES = "$REMOVET1A" ] && { rm -f ./$name.$SRCENC.t1a rm -f ./$name.$SRCENC.xafm } } done } done wc -l <fonts.ttf >fonts.scale cat fonts.ttf >>fonts.scale mkfontdir [ YES = "$GENUID" ] && { echo "Checking for duplicate UniqueIDs..." for id in `find . -name "*.$SUFFIX" -exec grep UniqueID {} \; \ | cut -d" " -f2 | sort | uniq -d` do { echo "Warning: duplicate UniqueID $id in files:" | tee -a $LOG find . -name "*.$SUFFIX" -exec grep -l "UniqueID $id " {} \; 2>&1 | tee -a $LOG } done } [ -n "$GSDIR" ] || { echo "$MYSELF: The Ghostscript base directory is not specified.\n" >&2 echo "$MYSELF: Installation of the Ghostscript fonts is deferred.\n" >&2 echo "$MYSELF: You can do it later by running x2gs\n" >&2 exit 0 } echo "Installing the Ghostscript fonts" cd $RUNDIR $X2GS $CFGFILE || { echo "$MYSELF: Installation of the Ghostscript fonts has failed.\n" >&2 echo "$MYSELF: You can correct the problem and run x2gs to repeat\n" >&2 exit 0 }