[ Index ] |
PHP Cross Reference of vtigercrm-6.1.0 |
[Summary view] [Print] [Text view]
1 #!/bin/sh 2 # 3 # Copyright (c) 1998-2000 4 # Sergey A. Babkin. All rights reserved. 5 # 6 # Redistribution and use in source and binary forms, with or without 7 # modification, are permitted provided that the following conditions 8 # are met: 9 # 1. Redistributions of source code must retain the above copyright 10 # notice, this list of conditions and the following disclaimer. 11 # 2. Redistributions in binary form must reproduce the above copyright 12 # notice, this list of conditions and the following disclaimer in the 13 # documentation and/or other materials provided with the distribution. 14 # 15 # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED 16 # WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF 17 # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 18 # 19 # Sergey A. Babkin ([email protected], [email protected]) 20 # 21 22 # Use : convert [cfgfile] 23 24 # Convert TTF fonts from source directory to Type1 fonts in the destination 25 # directory, converted to the specified encodings. Also generate the 26 # fonts.scale, fonts.dir and fonts.alias files in the destination directory. 27 28 # clean some variables so that they won't be inherited from environment 29 30 ENCDIR= 31 MAPDIR= 32 33 # path to the configuration file 34 35 if [ $# -eq 1 ] 36 then 37 CFGFILE=$1 38 else 39 CFGFILE=`pwd`/convert.cfg 40 fi 41 42 # these setting would be edited during installation 43 44 TTF2PT1_BINDIR= 45 TTF2PT1_LIBXDIR= 46 TTF2PT1_SHAREDIR= 47 48 [ -z "$TTF2PT1_BINDIR" ] && { 49 TTF2PT1_BINDIR=`pwd`/.. 50 } 51 [ -z "$TTF2PT1_LIBXDIR" ] && { 52 TTF2PT1_LIBXDIR=`pwd`/.. 53 } 54 [ -z "$TTF2PT1_SHAREDIR" ] && { 55 TTF2PT1_SHAREDIR=`pwd`/.. 56 } 57 58 # directory from where we are started 59 60 RUNDIR=`pwd` 61 62 # paths to various utilities 63 64 T1ASM=$TTF2PT1_LIBXDIR/t1asm 65 [ -f $T1ASM -a -x $T1ASM ] || { 66 # if it's not in libxdir, use whatever t1asm the system provides 67 T1ASM=t1asm 68 } 69 TTF2PT1=$TTF2PT1_BINDIR/ttf2pt1 70 TRANS=$TTF2PT1_SHAREDIR/scripts/trans 71 T1FDIR=$TTF2PT1_SHAREDIR/scripts/t1fdir 72 FORCEISO=$TTF2PT1_SHAREDIR/scripts/forceiso 73 X2GS=$TTF2PT1_SHAREDIR/scripts/x2gs 74 SUFFIX="pfa" 75 76 MYSELF=convert 77 78 # include the configuration 79 80 if [ -r $CFGFILE ] 81 then { 82 . $CFGFILE 83 } else { 84 echo " 85 Can't find the configuration file 86 $CFGFILE 87 Please look at the sample file convert.cfg.sample, 88 copy it to convert.cfg and modify for 89 you actual configuration." >&2 90 exit 1 91 } fi 92 93 # path to the directory with descriptions of encodings 94 [ -z "$ENCDIR" ] && { 95 ENCDIR=$TTF2PT1_SHAREDIR/encodings 96 } 97 98 # directory with the external Unicode maps 99 [ -z "$MAPDIR" ] && { 100 MAPDIR=$TTF2PT1_SHAREDIR/maps 101 } 102 103 LOG=$DSTDIR/convert.log 104 105 # configure the ttf2pt1 options from our options 106 107 # artefact of backwards-compatibility with .cfg 108 [ -z "$CORRECTWIDTH" -a YES != "$DONTCORRECTWIDTH" ] && { 109 TTF2PT1="$TTF2PT1 -OW" 110 } 111 [ YES = "$CORRECTWIDTH" ] && { 112 TTF2PT1="$TTF2PT1 -OW" 113 } 114 115 [ YES != "$HINTSUBST" ] && { 116 TTF2PT1="$TTF2PT1 -Ou" # meaning changed past 3.22 117 } 118 119 [ YES = "$ALLGLYPHS" -a YES = "$ENFORCEISO" ] && { 120 echo "$MYSELF: options ALLGLYPHS and ENFORCEISO are mutually exclusive" >&2 121 exit 1 122 } 123 124 [ YES = "$ALLGLYPHS" ] && { 125 TTF2PT1="$TTF2PT1 -a" 126 } 127 128 [ YES = "$GENUID" ] && { 129 TTF2PT1="$TTF2PT1 -uA" 130 } 131 132 [ YES != "$ENFORCEISO" ] && { 133 FORCEISO=cat 134 } 135 136 [ YES = "$CREATEPFB" ] && { 137 T1ASM="$T1ASM -b" 138 SUFFIX="pfb" 139 } 140 141 # parse the information about the source files 142 143 eval "`echo \"$SRCDIRS\" | awk ' 144 BEGIN { n=0; } 145 /^ *$/ { next; } 146 { 147 if(n>9) { 148 printf(\"echo \\\"Only 9 encodings are supported at once!\\\" >&2\n\"); 149 printf(\"exit 1\\n\"); 150 } else { 151 printf(\"SRCDIR%d=%s\n\",n,$1); 152 printf(\"SRCLANG%d=%s\n\",n,$2); 153 printf(\"SRCENC%d=%s\n\",n,$3); 154 printf(\"SRCMAP%d=%s\n\",n,$4); 155 n++; 156 } 157 }'`" 158 159 # check whether we have the directories 160 161 mkdir $DSTDIR 2>/dev/null >/dev/null 162 [ -d $DSTDIR -a -r $DSTDIR -a -w $DSTDIR -a -x $DSTDIR ] || { 163 echo "$MYSELF: can't access the directory $DSTDIR" >&2 164 exit 1 165 } 166 167 # go to our destination directory 168 169 cd $DSTDIR || { 170 echo "$MYSELF: can't chdir to $DSTDIR" >&2 171 exit 1 172 } 173 174 rm -f ./* 2>/dev/null 175 >$LOG 176 177 for dirno in 0 1 2 3 4 5 6 7 8 9 178 do { 179 180 SRCDIR=`eval "echo \\\$SRCDIR$dirno"` 181 SRCLANG=`eval "echo \\\$SRCLANG$dirno"` 182 SRCENC=`eval "echo \\\$SRCENC$dirno"` 183 SRCMAP=`eval "echo \\\$SRCMAP$dirno"` 184 DSTENC=`eval "echo \\\$DSTENC$SRCLANG"` 185 186 echo $SRCDIR 187 echo $SRCENC 188 189 [ -z "$SRCDIR" ] && break; 190 191 [ "`ls $SRCDIR/*.[tT][tT][fF] 2>/dev/null |wc -l`" -gt 0 ] || { 192 echo "$MYSELF: no TTF files in $SRCDIR" >&2 193 exit 1 194 } 195 196 # check whether we have the encoding tables 197 198 [ -n "$SRCENC" ] || { 199 echo "$MYSELF: you must specify some source encoding" >&2 200 exit 1 201 } 202 203 [ unknown = "$SRCLANG" -o -n "$DSTENC" ] || { 204 echo "$MYSELF: you must specify some destination encodings" >&2 205 exit 1 206 } 207 208 # handle aliases of the destination encodings 209 210 XDSTENC= 211 DSTALIAS= 212 213 [ -r $ENCDIR/$SRCLANG/encodings.alias ] && { 214 for i in $DSTENC 215 do { 216 TO=`awk '$1=="'$i'" { print $2; }' <$ENCDIR/$SRCLANG/encodings.alias` 217 if [ -n "$TO" ] 218 then { 219 [ -f $ENCDIR/$SRCLANG/$i.tbl -a -r $ENCDIR/$SRCLANG/$i.tbl ] && { 220 echo "WARNING: $SRCLANG encoding $i found as both table and alias" >&2 221 echo "WARNING: The alias takes precedence" >&2 222 } 223 DSTALIAS="$TO $i 224 $DSTALIAS" 225 XDSTENC="$TO 226 $XDSTENC" 227 } else { 228 XDSTENC="$i 229 $XDSTENC" 230 } fi 231 } done 232 DSTENC=`echo "$XDSTENC" | sort -u | tr ' 233 ' ' '` 234 } 235 236 [ unknown != "$SRCLANG" ] && { 237 for i in $SRCENC $DSTENC 238 do { 239 [ -f $ENCDIR/$SRCLANG/$i.tbl -a -r $ENCDIR/$SRCLANG/$i.tbl ] || { 240 echo "$MYSELF: can't read $ENCDIR/$SRCLANG/$i.tbl" >&2 241 exit 1 242 } 243 } done 244 } 245 246 # OK convert the files 247 248 for file in $SRCDIR/*.[tT][tT][fF] 249 do { 250 name=`echo $file | tr A-Z a-z` 251 name=`basename $name .ttf` 252 253 echo "Converting $name" 254 255 # generate the assembler code 256 257 echo "******* $name -> t1a ************" >>$LOG 258 259 if [ -n "$SRCMAP" ] 260 then { 261 $TTF2PT1 -L $MAPDIR/$SRCMAP $file ./$name.$SRCENC 2>>$LOG 262 } else { 263 $TTF2PT1 -l $SRCLANG $file ./$name.$SRCENC 2>>$LOG 264 } fi 265 266 [ -s ./$name.$SRCENC.t1a ] || { 267 echo "$MYSELF: can't generate Type1 assembler code for $name" >&2 268 continue; 269 } 270 271 [ -s ./$name.$SRCENC.afm ] || { 272 echo "$MYSELF: can't generate AFM metrics file for $name" >&2 273 continue; 274 } 275 276 mv ./$name.$SRCENC.afm ./$name.$SRCENC.xafm 277 278 psname=`$T1FDIR -g $FOUNDRY " " -f ./$name.$SRCENC.t1a \ 279 | awk '{print substr($1,2);}'` 280 281 # now for each destination encoding generate a .pfa/b file 282 # and record for fonts.scale 283 284 if [ unknown != "$SRCLANG" ] 285 then { 286 for enc in $DSTENC 287 do { 288 echo "******* $name -> $enc ************" >>$LOG 289 290 sed 's|^\/FontName.*$|/FontName /'$psname$enc' def|' <./$name.$SRCENC.t1a \ 291 | $TRANS $ENCDIR/$SRCLANG/$SRCENC.tbl $ENCDIR/$SRCLANG/$enc.tbl \ 292 | $FORCEISO | $T1ASM >./$name.$enc.$SUFFIX 293 [ -s ./$name.$enc.$SUFFIX ] || { 294 echo "$MYSELF: can't convert/assemble Type1 file for $name.$enc" >&2 295 continue; 296 } 297 298 sed 's|^FontName.*$|FontName '$psname$enc'|' <./$name.$SRCENC.xafm \ 299 | $TRANS $ENCDIR/$SRCLANG/$SRCENC.tbl $ENCDIR/$SRCLANG/$enc.tbl \ 300 | uniq | $FORCEISO >./$name.$enc.afm 301 [ -s ./$name.$enc.afm ] || { 302 echo "$MYSELF: can't convert AFM file for $name.$enc" >&2 303 } 304 305 aliases=`echo "$DSTALIAS" | grep "^$enc" | cut -d\ -f2` 306 echo "******* aliases: $aliases" >>$LOG 307 308 $T1FDIR -d fonts.ttf fonts.alias $FOUNDRY $enc $aliases -f ./$name.$enc.$SUFFIX 309 echo "/$psname$enc ($name.$enc.$SUFFIX) ;" >>Fontmap.ttf 310 } done 311 } else { 312 enc="$SRCENC" 313 echo "******* $name -> $enc ************" >>$LOG 314 315 sed 's|^\/FontName.*$|/FontName /'$psname$enc' def|' <./$name.$SRCENC.t1a \ 316 | $FORCEISO | $T1ASM >./$name.$enc.$SUFFIX 317 [ -s ./$name.$enc.$SUFFIX ] || { 318 echo "$MYSELF: can't convert/assemble Type1 file for $name.$enc" >&2 319 continue; 320 } 321 322 sed 's|^FontName.*$|FontName '$psname$enc'|' <./$name.$SRCENC.xafm \ 323 | uniq | $FORCEISO >./$name.$enc.afm 324 [ -s ./$name.$enc.afm ] || { 325 echo "$MYSELF: can't convert AFM file for $name.$enc" >&2 326 } 327 328 $T1FDIR -d fonts.ttf fonts.alias $FOUNDRY $enc -f ./$name.$enc.$SUFFIX 329 echo "/$psname$enc ($name.$enc.$SUFFIX) ;" >>Fontmap.ttf 330 } fi 331 332 [ YES = "$REMOVET1A" ] && { 333 rm -f ./$name.$SRCENC.t1a 334 rm -f ./$name.$SRCENC.xafm 335 } 336 337 } done 338 } done 339 340 wc -l <fonts.ttf >fonts.scale 341 cat fonts.ttf >>fonts.scale 342 mkfontdir 343 344 [ YES = "$GENUID" ] && { 345 echo "Checking for duplicate UniqueIDs..." 346 for id in `find . -name "*.$SUFFIX" -exec grep UniqueID {} \; \ 347 | cut -d" " -f2 | sort | uniq -d` 348 do { 349 echo "Warning: duplicate UniqueID $id in files:" | tee -a $LOG 350 find . -name "*.$SUFFIX" -exec grep -l "UniqueID $id " {} \; 2>&1 | tee -a $LOG 351 } done 352 } 353 354 [ -n "$GSDIR" ] || { 355 echo "$MYSELF: The Ghostscript base directory is not specified.\n" >&2 356 echo "$MYSELF: Installation of the Ghostscript fonts is deferred.\n" >&2 357 echo "$MYSELF: You can do it later by running x2gs\n" >&2 358 exit 0 359 } 360 361 echo "Installing the Ghostscript fonts" 362 cd $RUNDIR 363 $X2GS $CFGFILE || { 364 echo "$MYSELF: Installation of the Ghostscript fonts has failed.\n" >&2 365 echo "$MYSELF: You can correct the problem and run x2gs to repeat\n" >&2 366 exit 0 367 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:08:37 2014 | Cross-referenced by PHPXref 0.7.1 |