trofftable.rc 2.6 KB

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