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