1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-13 15:27:28 +00:00
PDP-10.its/doc/_info_/fed.order
Eric Swenson 38d430bb23 Added FED.
Resolves #289.
2016-12-19 12:09:34 +01:00

239 lines
10 KiB
Plaintext
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

CAVEAT: Several bugs in the description of KST format have been
fixed, by EBM, 11/10/79. I looked carefully at the source code
for FED and XGPSPL, and tested things out to verify the fixes,
but naturally cannot take complete responsibility since I did
not write the programs.
Massachusetts Institute of Technology
Artificial Intelligence Laboratory
WORKING PAPER #78 (revision 1)
8 October, 1975
FED, the Font "EDitor"
and
Font Formats
by
Joseph D. Cohen and J. Pitts Jarvis
Abstract
This memo describes FED, a program used for compiling and inspecting
fonts; AST font format, a text format which can be used to create and
edit fonts; and KST font format, the binary format used by SCRIMP, TJ6,
PUB, R, and SCRIBE.
Work reported herein was conducted at the Artificial Intelligence
Laboratory, a Massachusetts Institute of Technology research program
supported in part by the Advanced Research Projects Agency of the
Department of Defense and monitored by the Office of Naval Research under
Contact number N00014-70-A-0362-0005.
Working Papers are informal papers intended primarily for internal use.
FED and Font Formats________________2__Font Editor and Console Operation.
FED, the Font "EDitor"
FED is a program used for compiling and inspecting fonts. FED
understands the following font formats:
AST -- text format which can be used to create and edit fonts in
TECO;
KST -- MITAI and CMU compiled font format, used by programs like
SCRIMP, TJ6, and PUB;
CMU -- a newer compiled CMU format;
CU -- the newest compiled CMU format;
FNT -- SAIL compiled font format; and
XH -- Xerox PARC compiled font format.
FED reads all formats, but writes only AST and KST.
FED asks for an input file name. If the second name is AST, KST, FNT, or
XH, FED assumes the input file to be in the appropriate format. If the
second name is something else, FED asks what FORMAT the input file is in.
If the file name is blank, FED kills itself. FED reads the file and
types out various decimal data. A FIXED width font is one in which the
CHARACTER WIDTH of all defined characters is the same as the CHARACTER
WIDTH of a space. FED calls all other fonts VARIABLE width.
FED tries to display the font on the user's terminal, if it's a TV
display; or on the 340, if the user is near there, and the 340 and PDP6
are available. FED displays as though one XGP dot equals one display
dot, so the size and proportion of the font will be distorted. (200
horizontal XGP dots = 1 inch, 192 vertical dots = 1 inch. ~108
horizontal 340 dots = ~108 vertical 340 dots = 1 inch. ~58 horizontal TV
display dots = 1 inch. ~57 vertical TV display dots = 1 inch. A TV font
display will therefore be enlarged 4 diameters over the same font on the
XGP.)
FED then offers to write out the font. If you type N, FED restarts
itself; if you type Y, it asks for the output file name; and if
anything else is typed, it repeats its offer. If you write the file, FED
will offer to compact the raster. (This is a horizontal compaction
accomplished by eliminating leading and trailing blank columns.) If you
type Y, FED will compact the raster as much as possible, and tell you how
many words the compaction will save in the XGP's PDP11. When compacting,
FED will also let you know if there are any characters whose raster is
wider than the defined raster width. The input default system name is
FONTS, the output default system name is the job's SNAME. Input and
output default second file name is KST.
Please do not write new fonts onto the FONTS directory -- it is almost
full. Absolutely do not modify fonts on the FONTS directory. All
concerned programs are perfectly capable of reading fonts from your very
own directory. The reason for this injunction is that it has been
determined, after much experimentation, that the definition of
"improvement" is consistently a local variable. Please keep your
"improvements" to yourself.
A typical FED console session looks as follows: (User typein is
underlined, is a carriage return.)
:fed
FED 119
INPUT: jdc;ast >
FORMAT: kst
READING: DSK:JDC;AST 25
142 DUPLICATE CHARACTER
FILE: DSK:JDC;AST 25
KSTID: 0
CHARACTERS READ: 128
HEIGHT: 25
WIDTH: (VARIABLE)10
WRITE? (Y OR N)y
FILE: ast kst
FILE ALREADY EXISTS. CLOBBER? (Y OR N)y
WRITING: DSK:JDC;AST KST
COMPACT RASTER? (Y OR N)y
2032 (OCTAL) PDP11 WORDS SAVED
INPUT:
:KILL
AST Font Format
The AST font format is a text format which can be used to create and edit
fonts in TECO. An AST file has one page of font data, followed by one
page of character data for each defined character. All numbers except
CHARACTER CODE are decimal. It is the order of the numbers, rather than
the text identification after them, that FED looks at. The
identification is merely a convenience.
The file's first page is font data and looks like:
n KSTID dev:dir;file name
n HEIGHT
n BASE LINE
n COLUMN POSITION ADJUSTMENT
KSTID is a currently unimplemented feature. It is intended to be a
unique number for each font so that PDP11 will know which fonts
are loaded, and not do unnecessary reloads. KSTID is used by
CMU. (KSTID should be set to 0.) FED writes, on every page of
the output AST file, the file name of the source font file. On
input FED ignores the file name data in AST files.
HEIGHT is the height of all characters in XGP raster lines.
BASE LINE is the location of the character base line in XGP raster lines
from the top of all characters. (The base line is used by the
XGP underscore command. See Working Paper #72, XGP Font
Catalog.)
COLUMN POSITION ADJUSTMENT is an artifact. It is a number which is added
to the LEFT KERN of each character to get its total left kern.
To be SAIL compatible, COLUMN POSITION ADJUSTMENT should be 0,
and all kerning sould be included in individual character data.
The rest of the file is one page of character data for each defined
character. Each page looks like:
n CHARACTER CODE
n RASTER WIDTH
n CHARACTER WIDTH
n LEFT KERN
* *
* *
*
* *
* *
CHARACTER CODE is the octal ASCII code of the character.
RASTER WIDTH is the width of the raster in XGP dots. It is a good idea
to make the raster width as small as possible, in order to save
space in font files, and to allow the XGP PDP11 to store more
fonts. A leading blank column can be flushed if RASTER WIDTH and
LEFT KERN are decremented. Trailing blank columns can be flushed
by simply decrementing RASTER WIDTH. (The FED compact feature
does this automatically.)
CHARACTER WIDTH is the amount, in XGP dots, that printing this character
will advance the line postion. This number is completely
independent of RASTER WIDTH, and LEFT KERN. For example, if
CHARACTER WIDTH<RASTER WIDTH, characters will overlap. If
CHARACTER WIDTH>RASTER WIDTH, there will be extra blank columns
in the character. How many appear on each side is determined by
LEFT KERN.
LEFT KERN (plus COLUMN POSITION ADJUSTMENT, if any) is the amount to move
left from the logical left end of the character before printing
the raster. (Positive left kern means move left; negative, move
right.)
* is any printing character used to define the CHARACTER RASTER. Each
raster row is represented by a text line. If a space appears,
the bit is off in the raster, if a printing character appears,
the bit is on. Carriage return terminates the text row, and
implies blanks for the rest of the raster row. Formfeed
terminates the raster, and implies trailing blank raster lines.
The first row is the top row. Information wider than RASTER
WIDTH is ignored.
KST Font Format
KST is CMU's oldest and MITAI's only compiled binary font format.
SCRIMP, TJ6, PUB, and other programs all use KST files as their font
definitions. KST format is as follows:
Word 0/ KSTID
Word 1/ 9 bits COLUMN POSITION ADJUSTMENT, 9 bits BASE LINE,,HEIGHT
The remainder of the file has one block of data for each character. Each
block looks like:
USER ID ;not currently used but low order bit is on. This bit
can be used to find the beginning of a new block. The
last block is followed by two -1's.
LEFT KERN,,CHARACTER CODE
RASTER WIDTH,,CHARACTER WIDTH
CHARACTER MATRIX
The character matrix is stored four 8-bit bytes per word, so that ILDBs
with 8-bit byte size get successive bytes. The remaining four low order
bits are 0. The bits are reversed in each byte (because of the way the
XGP interface works) so that the high order (leftmost) bit of the
character is the low order bit of the byte. The matrix is stored row by
row; rows follow one another with no extra separating bytes. The last
word is filled out with 0 bytes, if necessary. Note that HEIGHT rows are
stored for each character, and (RASTER WIDTH + 7)/8 bytes are used for
each row.
Some old MIT KST files, and all CMU's KST files do not use the RASTER
WIDTH variable. (All characters have RASTER WIDTH=CHARACTER WIDTH.) The
third word of those files has 0 in the left half. Programs which
directly examine KST files for RASTER WIDTH should therefore, if RASTER
WIDTH=0, use CHARACTER WIDTH instead. (Note that this also means that
while MITAI can use CMU's KST files, CMU cannot use MITAI KST files.)
Since when RASTER WIDTH=0, MITAI programs substitute CHARACTER WIDTH, you
should not write a program which will set RASTER WIDTH to zero. When FED
finds a character with zero RASTER WIDTH, FED will write the character
with RASTER WIDTH=1. This does not waste any space in the XGP's PDP11,
since the PDP11 does a vertical compaction of rasters, eliminating top
and bottom blank lines.
Odds and End
The KST, FNT, XH, and FED internal formats are listed in the
extravagantly commented FED source file (stored on the SYSENG directory).
FED also has extensive comments on programming the PDP10 to PDP11
interface. FED was written by Pitts Jarvis, with additions by Joe Cohen.
Brian Harvey is responsible for SAIL font hackery, whose specifications
and fonts we copied.
Fonts are stored on the FONTS; directory, and are described in Working
Paper #72, XGP Font Catalog, by Tom Knight.
The source file for this memo is WP;FED 78Wn, where n is the revision
number.
THE END