summaryrefslogtreecommitdiff
path: root/dviware/crudetype/version3/noscheme.add
blob: 6d9c98e30eac1d4859b4ad0339a404dc2becdefb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
% NOSCHEME.ADD
% 

@* Missing coding schemes.

This file goes with \.{Crudetype} version 2. It allows \.{Crudetype} to
handle \.{TFM} files with no coding schemes. It stinks -- but much less than
before. To use this, append it to CRUDETYPE.WEB.

The font files that come on tapes from Stanford contain a piece of data called
a `coding scheme'. Essentially, this tells you what letter to expect to find
in each cell of the font table, if you ignore topological differences of
slant, blackness etc. Each table in Appendix F of the \TeX book gives a
different scheme; and there are a few more schemes in fonts in common use.
Unfortunately, some font designers have been producing fonts with this
information lacking. It is not actually illegal to omit the coding scheme
because the specification for \.{TFM} files describes the coding scheme as
optional. But in my opinion this is a very bad and slovenly practice. If a
site cannot provide file space for every conceivable font, they will probably
want to save space by some form of font-substitution. The coding scheme is an
essential tool for trying to decide whether Font A is an acceptable substitute
for B.

You need one line for each type face you expect to use. The first argument is
the name of the font, usually with size digits omitted. A name with the size
digits present will take precedence, e.g.  {\tt CMR5} over {\tt CMR}. The
second argument is the number of the corresponding coding scheme. So this is
essentially just a list of all the font names I happen to have seen in one
particular distriibution. This code will of course fail if somebody starts
distributing font files of the same names with different schemes. To use this
file, it must be appended to the regular CRUDETYPE.WEB. My reasons for not 
incorporating this code in all versions are: 1: I believe that Stanford have 
now definitely decided to include coding schemes in all font tapes and 2: I
believe that using the scheme as recorded in the TFM file is much safer than 
relying on a conjectured map from font names to schemes which might change.
This map has changed in the past: for example all CMR fonts used to be scheme 3.

@<Define Lineprinter codes@>=
  be_string('CMTEX' ); set_scheme(1 ) ;
@#
  be_string('CMTT' ); set_scheme(2 ) ;
  be_string('CMSLTT' ); set_scheme(2 ) ;
  be_string('CMCSC' ); set_scheme(2 ) ;
  be_string('CMTCSC' ); set_scheme(2 ) ;
  be_string('CMITT' ); set_scheme(2 ) ;
@#
  be_string('CMB' ); set_scheme(3 ) ;
  be_string('CMBX' ); set_scheme(3 ) ;
  be_string('CMBXSL' ); set_scheme(3 ) ;
  be_string('CMBXTI' ); set_scheme(3 ) ;
  be_string('CMDUNH' ); set_scheme(3 ) ;
  be_string('CMFF' ); set_scheme(3 ) ;
  be_string('CMFI' ); set_scheme(3 ) ;
  be_string('CMFIB' ); set_scheme(3 ) ;
  be_string('CMINCH' ); set_scheme(3 ) ;
  be_string('CMR' ); set_scheme(3 ) ;
  be_string('CMSL' ); set_scheme(3 ) ;
  be_string('CMSS' ); set_scheme(3 ) ;
  be_string('CMSSBX' ); set_scheme(3 ) ;
  be_string('CMSSDC' ); set_scheme(3 ) ;
  be_string('CMSSI' ); set_scheme(3 ) ;
  be_string('CMSSQ' ); set_scheme(3 ) ;
  be_string('CMSSQI' ); set_scheme(3 ) ;
  be_string('CMTI' ); set_scheme(3 ) ;
  be_string('CMU' ); set_scheme(3 ) ;
  be_string('CMVTT' ); set_scheme(3 ) ;
@#
  be_string('CMCSC10' ); set_scheme(4 ) ; {dont ask me why, I didnt design the font}
  be_string('CMR5' ); set_scheme(4 ) ;
  be_string('CMR5' ); set_scheme(4 ) ;
@#
  be_string('LOGO' ); set_scheme(5 ) ;
  be_string('LOGOBF' ); set_scheme(5 ) ;
  be_string('LOGOSL' ); set_scheme(5 ) ;
@#
  be_string('CMMI' ); set_scheme(6 ) ;
  be_string('CMMIB' ); set_scheme(6 ) ;
@#
  be_string('CMBSY' ); set_scheme(7 ) ;
  be_string('CMSY' ); set_scheme(7 ) ;
@#
  be_string('CMEX' ); set_scheme(8 ) ;
@#
  be_string('LASY' ); set_scheme(9 ) ;
  be_string('LASYB' ); set_scheme(9 ) ;
@#
  be_string('CIRCLE' ); set_scheme(10) ;
  be_string('CIRCLEW' ); set_scheme(10) ;