xref: /plan9/sys/src/cmd/postscript/trofftable/trofftable.rc (revision 80ee5cbfe36716af62da8896207e9763b8e3d760)
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
8POSTLIB=/sys/lib/postscript/prologues
9FONTDIR=/sys/lib/troff/font
10
11PROLOGUE=$POSTLIB/trofftable.ps
12DPOSTPROLOGUE=$POSTLIB/dpost.ps
13
14COPYFILE=()
15HOSTFONTDIR=()
16DEVICE=()
17LIBRARY=()
18TEMPLATE=-R
19
20SLOWDOWN=25
21STARTCOMMENTS=256
22
23NONCONFORMING='%!PS'
24ENDPROLOG='%%EndProlog'
25BEGINSETUP='%%BeginSetup'
26ENDSETUP='%%EndSetup'
27TRAILER='%%Trailer'
28
29while (! ~ $#* 0 && ~ $1 -*) {
30	switch ($1) {
31	case -C;  shift; COPYFILE=$COPYFILE' '$1
32	case -C*; COPYFILE=$COPYFILE' '`{echo $1 | sed s/-C//}
33
34	case -F;  shift; FONTDIR=$1
35	case -F*; FONTDIR=`{echo $1 | sed s/-F//}
36
37	case -H;  shift; HOSTFONTDIR=$1
38	case -H*; HOSTFONTDIR=`{echo $1 | sed s/-H//}
39
40	case -L;  shift; PROLOGUE=$1
41	case -L*; PROLOGUE=`{echo $1 | sed s/-L//}
42
43	case -S;  shift; LIBRARY=$1
44	case -S*; LIBRARY=`{echo $1 | sed s/-S//}
45
46	case -T;  shift; DEVICE=$1
47	case -T*; DEVICE=`{echo $1 | sed s/-T//}
48
49	case -c;  shift; STARTCOMMENTS=$1
50	case -c*; STARTCOMMENTS=`{echo $1 | sed s/-c//}
51
52	case -o;  shift; OCTALESCAPES=$1		# only for Latin1 tables
53	case -o*; OCTALESCAPES=`{echo $1 | sed s/-o//}
54
55	case -s;  shift; SLOWDOWN=$1
56	case -s*; SLOWDOWN=`{echo $1 | sed s/-s//}
57
58	case -t;  shift; TEMPLATE=$1
59	case -t*; TEMPLATE=`{echo $1 | sed s/-t//}
60
61	case -*;  echo $0: illegal option $1 >[1=2]; exit 1
62	}
63	shift
64}
65
66if (! ~ $#DEVICE 0  && ! ~ $#LIBRARY 0) {
67    echo $0: no device or shell library >[1=2]
68    exit 1
69}
70
71if (! ~ $#* 1 2) {
72    echo $0: bad argument count >[1=2]
73    exit 1
74}
75
76if (test -d $HOSTFONTDIR -a -f $HOSTFONTDIR/$1) {
77    COPYFILE=$COPYFILE' '$HOSTFONTDIR/$1
78}
79
80#
81# Include the shell library and get the command used to build the table.
82# Make awk call a separate library function??
83#
84if (~ $#LIBRARY 0 || ~ $LIBRARY '') LIBRARY=$FONTDIR/dev$DEVICE/shell.lib
85
86. $LIBRARY
87
88if (~ $#* 1) TEMPLATE=$1
89
90CMD=`{BuiltinTables | awk '$2 == template"" {
91	if ( pname == "" )
92		pname = $3
93	printf "%s %s %s", $1, tname, pname
94	exit 0
95}' template=$TEMPLATE tname=$1 pname=$2}
96
97if (! $CMD) {
98    echo $0: $TEMPLATE not found >[1=2]
99    exit 1
100}
101
102#
103# Build the PostScript font table program.
104#
105
106echo $NONCONFORMING
107cat $PROLOGUE
108echo /DpostPrologue 100 dict dup begin
109cat $DPOSTPROLOGUE
110echo end def
111echo $ENDPROLOG
112
113echo $BEGINSETUP
114if (~ $COPYFILE '') COPYFILE=/dev/null
115cat $COPYFILE
116echo /slowdown $SLOWDOWN def
117echo /startcomments $STARTCOMMENTS def
118echo $ENDSETUP
119
120$CMD
121
122echo $TRAILER
123
124