trofftable.sh 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. #!/bin/sh
  2. #
  3. # Writes a PostScript program on standard output that builds a width
  4. # table or typesetter description file. The program uses PostScript's
  5. # print procedure, which means the table comes back on the printer's
  6. # serial port. Try hardcopy if you don't have access to the port.
  7. #
  8. POSTBIN=/usr/lbin/postscript
  9. POSTLIB=/usr/lib/postscript
  10. FONTDIR=/usr/lib/font
  11. PROLOGUE=$POSTLIB/trofftable.ps
  12. DPOSTPROLOGUE=$POSTLIB/dpost.ps
  13. COPYFILE=
  14. HOSTFONTDIR=
  15. DEVICE=
  16. LIBRARY=
  17. TEMPLATE=
  18. SLOWDOWN=25
  19. STARTCOMMENTS=256
  20. NONCONFORMING="%!PS"
  21. ENDPROLOG="%%EndProlog"
  22. BEGINSETUP="%%BeginSetup"
  23. ENDSETUP="%%EndSetup"
  24. TRAILER="%%Trailer"
  25. while [ -n "$1" ]; do
  26. case $1 in
  27. -C) shift; COPYFILE="$COPYFILE $1";;
  28. -C*) COPYFILE="$COPYFILE `echo $1 | sed s/-C//`";;
  29. -F) shift; FONTDIR=$1;;
  30. -F*) FONTDIR=`echo $1 | sed s/-F//`;;
  31. -H) shift; HOSTFONTDIR=$1;;
  32. -H*) HOSTFONTDIR=`echo $1 | sed s/-H//`;;
  33. -L) shift; PROLOGUE=$1;;
  34. -L*) PROLOGUE=`echo $1 | sed s/-L//`;;
  35. -S) shift; LIBRARY=$1;;
  36. -S*) LIBRARY=`echo $1 | sed s/-S//`;;
  37. -T) shift; DEVICE=$1;;
  38. -T*) DEVICE=`echo $1 | sed s/-T//`;;
  39. -c) shift; STARTCOMMENTS=$1;;
  40. -c*) STARTCOMMENTS=`echo $1 | sed s/-c//`;;
  41. -o) shift; OCTALESCAPES=$1;; # only for Latin1 tables
  42. -o*) OCTALESCAPES=`echo $1 | sed s/-o//`;;
  43. -s) shift; SLOWDOWN=$1;;
  44. -s*) SLOWDOWN=`echo $1 | sed s/-s//`;;
  45. -t) shift; TEMPLATE=$1;;
  46. -t*) TEMPLATE=`echo $1 | sed s/-t//`;;
  47. -*) echo "$0: illegal option $1" >&2; exit 1;;
  48. *) break;;
  49. esac
  50. shift
  51. done
  52. if [ ! "$DEVICE" -a ! "$LIBRARY" ]; then
  53. echo "$0: no device or shell library" >&2
  54. exit 1
  55. fi
  56. if [ $# -ne 1 -a $# -ne 2 ]; then
  57. echo "$0: bad argument count" >&2
  58. exit 1
  59. fi
  60. if [ -d "$HOSTFONTDIR" -a -f "$HOSTFONTDIR/$1" ]; then
  61. COPYFILE="$COPYFILE $HOSTFONTDIR/$1"
  62. fi
  63. #
  64. # Include the shell library and get the command used to build the table.
  65. # Make awk call a separate library function??
  66. #
  67. . ${LIBRARY:-${FONTDIR}/dev${DEVICE}/shell.lib}
  68. if [ $# -eq 1 ]
  69. then TEMPLATE=$1
  70. else TEMPLATE=${TEMPLATE:-R}
  71. fi
  72. CMD=`BuiltinTables | awk '$2 == template"" {
  73. if ( pname == "" )
  74. pname = $3
  75. printf "%s %s %s", $1, tname, pname
  76. exit 0
  77. }' template="$TEMPLATE" tname="$1" pname="$2"`
  78. if [ ! "$CMD" ]; then
  79. echo "$0: $TEMPLATE not found" >&2
  80. exit 1
  81. fi
  82. #
  83. # Build the PostScript font table program.
  84. #
  85. echo $NONCONFORMING
  86. cat $PROLOGUE
  87. echo "/DpostPrologue 100 dict dup begin"
  88. cat $DPOSTPROLOGUE
  89. echo "end def"
  90. echo $ENDPROLOG
  91. echo $BEGINSETUP
  92. cat ${COPYFILE:-/dev/null}
  93. echo "/slowdown $SLOWDOWN def"
  94. echo "/startcomments $STARTCOMMENTS def"
  95. echo $ENDSETUP
  96. $CMD
  97. echo $TRAILER