[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/libraries/tcpdf/fonts/ttf2ufm/ttf2ufm-src/scripts/ -> convert (source)

   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  }


Generated: Fri Nov 28 20:08:37 2014 Cross-referenced by PHPXref 0.7.1